In a branch & bound algorithm a given subproblem, which cannot be
bounded, has to be divided into at least two new restricted subproblems.
We do this restriction by determining if two vertices v, w
V
stay in the same partition or are separated into different partitions.
We call these two possibilities ``join'' or ``split''.
A join is performed by creating a new graph from the original graph:
the two vertices v, w
V, which have to stay in the same partition,
are joined into one vertex
with
g(
) = g(v) + g(w).
The new edge weights are generated accordingly:
u
V
{v, w} : f ({u,
}) = f ({u, v}) + f ({u, w}).
It is obvious that this new graph has the same CutSize as the
original graph with the restriction that v and w have
to be in the same partition.
A split of two vertices v, w
V is performed by removing the
commodity with source v and destination w from the general
computation of the CutFlow. Instead, this particular flow can
be counted into the CutFlow completely. Let
S
V×V
be the set of pairs of vertices which are split. Then we get the following
formula for the CutFlow of the MVarMC instance:
| CutFlow | s(v, w) . g(w) + s(v, w) . g(v) |
||
+ s(v, w) . g(w) - |
A crucial point for a good branch & bound algorithm is the branching strategy: In our application this means the decision, which pair of vertices should be used for the join and split in a given situation. We have tried two different strategies. Firstly, we have used the two vertices that are adjacent to that edge, which corresponds to the constraint of the linear program with the maximal dual value. This idea follows the principle that the constraints with maximal dual value are the ones which restrict the solution mostly. Especially by joining this two vertices, the specific edge disappears from the graph and the bound can increase.
The other strategy follows a simple upper bound for the CutFlow of the 1-1-MC instance. We select these two vertices for the branching which increase the simple upper bound mostly.
.
Following the subproblems in the search tree, there are some situations
where pairs of vertices can be forced to be split or joined. Firstly,
if
v
V : g(v) = M this vertex v can be split
from all other vertices, since a vertex with weight M corresponds
to a partition with maximal size. Secondly, if
v, w
V,{v, w}
S : N + g(v) - g(w) -
g(u) < N - (p - 1)M
then we can join the vertices v and w, since otherwise
vertex v has no possibility to become part of a correct partition.
Thirdly, looking at the graph
GS : = (V, S): if this graph has
two clique subgraphs with p vertices which match in exactly
p - 1 vertices, then the two remaining vertices can be joined.
The last possibility for forcing a join bases on a given solution
of a Multicommodity Flow instance:
> L.
As there are a lot of good heuristics for the Graph Partitioning problem, it is easy to get a good feasible solution at the beginning of the branch & bound procedure. We use the Party library [15] for this purpose. As in most cases the solution from the heuristic is optimal, we do not matter about any best first search but use simple depth first search. The PCx code is used for the solution of the linear programs. We have adapted the code such that the interior point method stops if the primary solution is good enough to bound the actual subproblem or if the dual solution shows that we cannot bound the actual subproblem.
In Table 2 a comparison of our branch & bound algorithm
with the results from Karisch et al. [10], for our
knowledge the best actual code, are presented. The results in [10]
are performed on a HP 9000/735 system. The ``#B'' column gives
the number of search nodes in the branch&bound tree, the time is
given in hh:mm:ss. The missing values for some graphs of the 1-1-MC
and VarMC instances result from runs we have stoped after a time overflow.
For the problems with the DeBruijn graphs we have utilized two specific
properties: Firstly, every bisection of the DeBruijn graph has an
even CutSize; Karisch has used this for the DB7, also. Secondly, symmetrical
parts of the search tree, which result from four automorphisms of
the DeBruijn graph, are cut of; this decreases the search tree of
the DB8 by a factor of about two. Finally, we want to remark that
our approach has solved the bisection problem of the DeBruijn graph
with dimension 8 for the first time at all.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||