As search spaces become larger and as problems scale up, an efficient way to speed up the search is to use a more accurate
heuristic function. A better heuristic function might be obtained by the following general idea. Many problems can be divided
into a set of subproblems and subgoals that should be achieved. Interactions and conflicts between unsolved subgoals of the
problem might provide useful knowledge which could be used to construct an informed heuristic function. In this paper we demonstrate
this idea on the graph partitioning problem (GPP). We first show how to format GPP as a search problem and then introduce
a sequence of admissible heuristic functions estimating the size of the optimal partition by looking into different interactions
between vertices of the graph. We then optimally solve GPP with these heuristics. Experimental results show that our advanced
heuristics achieve a speedup of up to a number of orders of magnitude. Finally, we experimentally compare our approach to
other states of the art graph partitioning optimal solvers on a number of classes of graphs. The results obtained show that
our algorithm outperforms them in many cases.