You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Add plan for #119: [Rule] GraphPartitioning to QUBO
* test: add failing GraphPartitioning to QUBO coverage
* feat: add GraphPartitioning to QUBO reduction
* docs: add GraphPartitioning to QUBO paper entry
* chore: finalize GraphPartitioning to QUBO pipeline work
* Add GraphPartitioning->QUBO to dominated-rules allow-list
After merging main (which added GraphPartitioning->MaxCut), the
indirect path GraphPartitioning->MaxCut->SpinGlass->QUBO dominates
the direct GraphPartitioning->QUBO reduction.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/paper/reductions.typ
+42Lines changed: 42 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -4737,6 +4737,48 @@ where $P$ is a penalty weight large enough that any constraint violation costs m
4737
4737
_Solution extraction._ For each vertex $u$, find terminal position $t$ with $x_(u,t) = 1$. For each edge $(u,v)$, output 1 (cut) if $u$ and $v$ are in different components, 0 otherwise.
*Step 1 -- Binary partition variables.* Introduce one binary variable per vertex: $x_i = 0$ means vertex $i$ is in the left block, $x_i = 1$ means it is in the right block. For the canonical instance, this gives $n = #gp_qubo_n$ QUBO variables:
4754
+
$ x_0, x_1, x_2, x_3, x_4, x_5 $
4755
+
4756
+
*Step 2 -- Choose the balance penalty.* The source graph has $m = #gp_qubo_m$ edges, so the construction uses $P = m + 1 = #gp_qubo_penalty$. Any imbalance contributes at least $P$, which is already larger than the maximum possible cut size of any balanced partition.
4757
+
4758
+
*Step 3 -- Fill the QUBO matrix.* The diagonal entries are $Q_(i i) = deg(i) + P(1 - n)$, which evaluates here to $(#gp_qubo_diag.map(str).join(", "))$. For every pair $i < j$, start from $Q_(i j) = 2P = #(2*gp_qubo_penalty)$, then subtract $2$ when $(i,j)$ is an edge. Hence edge coefficients become $18$ while non-edge coefficients stay $20$; the exported upper-triangular matrix matches the issue example exactly.\
4759
+
4760
+
*Step 4 -- Verify a solution.* The exported witness is $bold(x) = (#gp_qubo_sol.target_config.map(str).join(", "))$, which is also the source partition encoding. The cut edges are #gp_qubo_cut_edges.map(e=>"("+str(e.at(0)) +","+str(e.at(1)) +")").join(", "), so the cut size is $#gp_qubo_cut_size$ and the balance penalty vanishes because exactly #(gp_qubo_n/2) vertices are assigned to the right block #sym.checkmark.
4761
+
],
4762
+
)[
4763
+
Graph Partitioning (minimum bisection) asks for a balanced bipartition minimizing the number of crossing edges. Lucas's Ising formulation @lucas2014 translates directly to a QUBO by combining a cut-counting quadratic objective with a quadratic equality penalty enforcing $sum_i x_i = n / 2$. The reduction uses one binary variable per source vertex, so the QUBO has exactly $n$ variables.
4764
+
][
4765
+
_Construction._ Given an undirected graph $G = (V, E)$ with even $n = |V|$ and $m = |E|$, introduce binary variables $x_i in {0,1}$ for each vertex $i in V$. Interpret $x_i = 0$ as $i in A$ and $x_i = 1$ as $i in B$. The cut objective is:
because the term equals $1$ exactly when edge $(u,v)$ crosses the partition. To enforce balance, add:
4768
+
$ H_"bal" = P (sum_i x_i - n/2)^2 $
4769
+
with penalty $P = m + 1$. The QUBO objective is $H = H_"cut" + H_"bal"$.
4770
+
4771
+
Expanding $H_"bal"$ with $x_i^2 = x_i$ gives:
4772
+
$ H_"bal" = P (1 - n) sum_i x_i + 2 P sum_(i < j) x_i x_j + P n^2 / 4 $
4773
+
so the upper-triangular QUBO coefficients are:
4774
+
$ Q_(i i) = deg(i) + P (1 - n) $
4775
+
and for $i < j$, $Q_(i j) = 2 P$ for every pair, then subtract $2$ whenever $(i,j) in E$. Equivalently, edge pairs have coefficient $2P - 2$ and non-edge pairs have coefficient $2P$. The additive constant $P n^2 / 4$ does not affect the minimizer.
4776
+
4777
+
_Correctness._ ($arrow.r.double$) If $bold(x)$ encodes a balanced partition, then $sum_i x_i = n/2$ and $H_"bal" = 0$, so the QUBO objective equals the cut size exactly. ($arrow.l.double$) If $bold(x)$ is imbalanced, then $|sum_i x_i - n/2| >= 1$, hence $H_"bal" >= P = m + 1$. Every balanced partition has cut size at most $m$, so any imbalanced assignment has objective strictly larger than at least one balanced assignment. Therefore every QUBO minimizer is balanced, and among balanced assignments minimizing $H$ is identical to minimizing the cut size.
4778
+
4779
+
_Solution extraction._ Return the QUBO bit-vector directly: the same binary assignment already records the source partition.
0 commit comments