|
51 | 51 | "BicliqueCover": [Biclique Cover], |
52 | 52 | "BinPacking": [Bin Packing], |
53 | 53 | "ClosestVectorProblem": [Closest Vector Problem], |
| 54 | + "MinimumMultiwayCut": [Minimum Multiway Cut], |
54 | 55 | ) |
55 | 56 |
|
56 | 57 | // Definition label: "def:<ProblemName>" — each definition block must have a matching label |
@@ -455,6 +456,40 @@ One of the most intensely studied NP-hard problems, with applications in logisti |
455 | 456 | caption: [Complete graph $K_4$ with weighted edges. The optimal tour $v_0 -> v_1 -> v_2 -> v_3 -> v_0$ (blue edges) has cost 6.], |
456 | 457 | ) <fig:k4-tsp> |
457 | 458 | ] |
| 459 | +#problem-def("MinimumMultiwayCut")[ |
| 460 | + Given an undirected graph $G=(V,E)$ with edge weights $w: E -> RR_(>0)$ and a set of $k$ terminal vertices $T = {t_1, ..., t_k} subset.eq V$, find a minimum-weight set of edges $C subset.eq E$ such that no two terminals remain in the same connected component of $G' = (V, E backslash C)$. |
| 461 | +][ |
| 462 | +The Minimum Multiway Cut problem generalizes the classical minimum $s$-$t$ cut: for $k=2$ it reduces to max-flow and is solvable in polynomial time, but for $k >= 3$ on general graphs it becomes NP-hard @dahlhaus1994. The problem arises in VLSI design, image segmentation, and network design. A $(2 - 2 slash k)$-approximation is achievable in polynomial time by taking the union of the $k - 1$ cheapest isolating cuts @dahlhaus1994. The best known exact algorithm runs in $O^*(1.84^k)$ time (suppressing polynomial factors) via submodular functions on isolating cuts @cao2013. |
| 463 | + |
| 464 | +*Example.* Consider a graph with $n = 5$ vertices $V = {0, 1, 2, 3, 4}$, terminals $T = {0, 2, 4}$, and 6 edges with weights: $w(0,1) = 2$, $w(1,2) = 3$, $w(2,3) = 1$, $w(3,4) = 2$, $w(0,4) = 4$, $w(1,3) = 5$. The optimal multiway cut removes edges ${(0,1), (3,4), (0,4)}$ with total weight $2 + 2 + 4 = 8$, yielding connected components ${0}$, ${1, 2, 3}$, ${4}$ — each terminal in a distinct component. |
| 465 | + |
| 466 | +#figure({ |
| 467 | + let verts = ((0, 0.8), (1.2, 1.5), (2.4, 0.8), (1.8, -0.2), (0.6, -0.2)) |
| 468 | + let edges = ((0,1),(1,2),(2,3),(3,4),(0,4),(1,3)) |
| 469 | + let weights = ("2", "3", "1", "2", "4", "5") |
| 470 | + let cut-edges = (0, 3, 4) // indices of cut edges |
| 471 | + let terminals = (0, 2, 4) |
| 472 | + canvas(length: 1cm, { |
| 473 | + for (idx, (u, v)) in edges.enumerate() { |
| 474 | + let is-cut = cut-edges.any(c => c == idx) |
| 475 | + g-edge(verts.at(u), verts.at(v), |
| 476 | + stroke: if is-cut { (paint: red, thickness: 2pt, dash: "dashed") } else { 1pt + luma(120) }) |
| 477 | + let mx = (verts.at(u).at(0) + verts.at(v).at(0)) / 2 |
| 478 | + let my = (verts.at(u).at(1) + verts.at(v).at(1)) / 2 |
| 479 | + let dy = if idx == 5 { 0.15 } else { 0 } |
| 480 | + draw.content((mx, my + dy), text(7pt, fill: luma(80))[#weights.at(idx)]) |
| 481 | + } |
| 482 | + for (k, pos) in verts.enumerate() { |
| 483 | + let is-terminal = terminals.any(t => t == k) |
| 484 | + g-node(pos, name: "v" + str(k), |
| 485 | + fill: if is-terminal { graph-colors.at(0) } else { luma(180) }, |
| 486 | + label: text(fill: white)[$#k$]) |
| 487 | + } |
| 488 | + }) |
| 489 | +}, |
| 490 | +caption: [Minimum Multiway Cut with terminals ${0, 2, 4}$ (blue). Dashed red edges form the optimal cut (weight 8).], |
| 491 | +) <fig:multiway-cut> |
| 492 | +] |
458 | 493 | #problem-def("MaximumClique")[ |
459 | 494 | Given $G = (V, E)$, find $K subset.eq V$ maximizing $|K|$ such that all pairs in $K$ are adjacent: $forall u, v in K: (u, v) in E$. Equivalent to MIS on the complement graph $overline(G)$. |
460 | 495 | ][ |
|
0 commit comments