18.04.2013 Views

The.Algorithm.Design.Manual.Springer-Verlag.1998

The.Algorithm.Design.Manual.Springer-Verlag.1998

The.Algorithm.Design.Manual.Springer-Verlag.1998

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Graph Partition<br />

roughly equal-sized pieces. Unfortunately, this problem is NP-complete. Fortunately, heuristics<br />

discussed below work well in practice.<br />

Certain special graphs always have small separators, which partition the vertices into balanced<br />

pieces. For any tree, there always exists a single vertex whose deletion partitions the tree so that<br />

no component contains more than n/2 of the original n vertices. <strong>The</strong>se components need not<br />

always be connected. For example, consider the separating vertex of a star-shaped tree. However,<br />

the separating vertex can be found in linear time using depth first-search. Similarly, every planar<br />

graph has a set of vertices whose deletion leaves no component with more than 2n/3<br />

vertices. Such separators provide a particularly useful way to decompose planar graphs.<br />

Figure: <strong>The</strong> maximum cut of a graph<br />

● Maximum cut - Given an electronic circuit specified by a graph, the maximum cut defines the<br />

largest amount of data communication that can simultaneously take place in the circuit. <strong>The</strong><br />

highest-speed communications channel should thus span the vertex partition defined by the<br />

maximum edge cut. Finding the maximum cut in a graph is NP-complete, despite the existence of<br />

algorithms for min-cut. However, heuristics similar to those of graph partitioning can work well.<br />

<strong>The</strong> basic approach to dealing with graph partitioning or max-cut problems is to construct an initial<br />

partition of the vertices (either randomly or according to some problem-specific strategy) and then sweep<br />

through the vertices, deciding whether the size of the cut would increase or decrease if we moved this<br />

vertex over to the other side. <strong>The</strong> decision to move v can be made in time proportional to its degree by<br />

simply counting whether more of v's neighbors are on the same team as v or not. Of course, the desirable<br />

side for v will change if many of its neighbors jump, so multiple passes are likely to be needed before the<br />

process converges on a local optimum. Even such a local optimum can be arbitrarily far away from the<br />

global max-cut.<br />

<strong>The</strong>re are many variations of this basic procedure, by changing the order we test the vertices in or<br />

moving clusters of vertices simultaneously. Using some form of randomization, particularly simulated<br />

file:///E|/BOOK/BOOK4/NODE177.HTM (2 of 3) [19/1/2003 1:31:24]

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!