Skip to content

Commit 13ffca2

Browse files
committed
fix: CLI support, paper entry, and QA for MinimumMultiwayCut (#184)
- Add `pred create MinimumMultiwayCut` with --terminals, --edge-weights, --graph - Add problem-def entry in Typst paper with example figure - Improve `pred solve` error: suggest --solver brute-force when no ILP path - Remove spurious MMC alias (not a well-known abbreviation) - Regenerate reduction graph and schema exports - Delete implementation plan
1 parent dec8b12 commit 13ffca2

7 files changed

Lines changed: 104 additions & 615 deletions

File tree

docs/paper/reductions.typ

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
"BicliqueCover": [Biclique Cover],
5252
"BinPacking": [Bin Packing],
5353
"ClosestVectorProblem": [Closest Vector Problem],
54+
"MinimumMultiwayCut": [Minimum Multiway Cut],
5455
)
5556

5657
// 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
455456
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.],
456457
) <fig:k4-tsp>
457458
]
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+
]
458493
#problem-def("MaximumClique")[
459494
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)$.
460495
][

docs/paper/references.bib

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,3 +366,23 @@ @article{alber2004
366366
doi = {10.1016/j.jalgor.2003.10.001}
367367
}
368368

369+
@article{dahlhaus1994,
370+
author = {Elias Dahlhaus and David S. Johnson and Christos H. Papadimitriou and Paul D. Seymour and Mihalis Yannakakis},
371+
title = {The Complexity of Multiterminal Cuts},
372+
journal = {SIAM Journal on Computing},
373+
volume = {23},
374+
number = {4},
375+
pages = {864--894},
376+
year = {1994},
377+
doi = {10.1137/S0097539292225297}
378+
}
379+
380+
@inproceedings{cao2013,
381+
author = {Yixin Cao and Jianer Chen and Jianxin Wang},
382+
title = {An Improved Fixed-Parameter Algorithm for the Minimum Weight Multiway Cut Problem},
383+
booktitle = {Fundamentals of Computation Theory (FCT 2013)},
384+
pages = {96--107},
385+
year = {2013},
386+
doi = {10.1007/978-3-642-40164-0_11}
387+
}
388+

0 commit comments

Comments
 (0)