|
317 | 317 | "PreemptiveScheduling": [Preemptive Scheduling], |
318 | 318 | "PrimeAttributeName": [Prime Attribute Name], |
319 | 319 | "QuadraticAssignment": [Quadratic Assignment], |
320 | | - "QuadraticProgramming": [Quadratic Programming], |
321 | 320 | "EquilibriumPoint": [Equilibrium Point], |
322 | 321 | "QuadraticCongruences": [Quadratic Congruences], |
323 | 322 | "QuadraticDiophantineEquations": [Quadratic Diophantine Equations], |
@@ -5221,34 +5220,6 @@ In all graph problems below, $G = (V, E)$ denotes an undirected graph with $|V| |
5221 | 5220 | ] |
5222 | 5221 | } |
5223 | 5222 |
|
5224 | | -#{ |
5225 | | - let x = load-model-example("QuadraticProgramming") |
5226 | | - let m = x.instance.num_vars |
5227 | | - let K = x.instance.bound |
5228 | | - let c = x.instance.quad_coeffs |
5229 | | - let d = x.instance.lin_coeffs |
5230 | | - let sol = (config: x.optimal_config, metric: x.optimal_value) |
5231 | | - let fstar = metric-value(sol.metric) |
5232 | | - let ystar = sol.config.map(ci => ci - K) |
5233 | | - let ystar-disp = ystar.map(v => str(v)).join(", ") |
5234 | | - [ |
5235 | | - #problem-def("QuadraticProgramming")[ |
5236 | | - Given a positive integer $m$, a positive integer bound $K >= 1$, a finite set $X$ of pairs $(bold(x), b)$ where $bold(x) in ZZ^m$ and $b in RR$, and two $m$-tuples $bold(c), bold(d) in RR^m$, find $bold(y) in {-K, -K+1, dots, K}^m$ that minimises |
5237 | | - $ sum_(i=1)^m (c_i y_i^2 + d_i y_i) quad "subject to" quad bold(x) dot bold(y) <= b "for every" (bold(x), b) in X. $ |
5238 | | - ][ |
5239 | | - Bounded Integer Quadratic Programming is the discrete restriction of Garey & Johnson's QUADRATIC PROGRAMMING (MP2) @garey1979 in which each component of the decision vector is forced to lie in the finite integer box ${-K, dots, K}$. The fully continuous (rational) case is also NP-complete: it was open in @garey1979 and resolved by Vavasis @vavasis1990, who proved that QP belongs to NP. NP-hardness of the bounded integer variant follows from Sahni's @sahni1974 PARTITION $arrow$ QP reduction, whose constructed instance has its optimum on ${0,1}^m subset.eq {-K, dots, K}^m$ for every $K >= 1$. Bounded Integer QP strictly generalises QUBO (the case $K = 1$ collapses to QUBO with linear side constraints after the affine substitution $z_i = (y_i + 1)/2$), so it inherits a brute-force bound of $O^*((2K+1)^m)$#footnote[No algorithm improving on enumeration over the discrete box ${-K, dots, K}^m$ is known for general non-convex bounded integer QP.]. |
5240 | | - |
5241 | | - *Example.* Consider the PARTITION instance $bold(a) = (1, 1, 2)$ with total sum $4$ and target $S/2 = 2$. Sahni's encoding sets $bold(c) = (#c.map(v => str(int(v))).join(", "))$, $bold(d) = (#d.map(v => str(int(v))).join(", "))$, and adds five linear constraints to restrict each $y_i$ to ${0, 1}$ and to force $bold(a) dot bold(y) = 2$: |
5242 | | - $ y_1, y_2, y_3 >= 0, quad y_1 + y_2 + 2 y_3 <= 2, quad y_1 + y_2 + 2 y_3 >= 2. $ |
5243 | | - Over the $#(calc.pow(2 * K + 1, m))$ configurations in ${-1, 0, 1}^3$ exactly two are feasible: $bold(y) = (1, 1, 0)$ with objective $0$ and $bold(y) = (0, 0, 1)$ with objective $1$. The optimum is $bold(y)^* = (#ystar-disp)$ with $sum_i (c_i y_i^2 + d_i y_i) = #fstar$, recovering the PARTITION witness ${a_1, a_2}$. |
5244 | | - |
5245 | | - #pred-commands( |
5246 | | - "pred solve quadratic-programming.json --solver brute-force", |
5247 | | - ) |
5248 | | - ] |
5249 | | - ] |
5250 | | -} |
5251 | | - |
5252 | 5223 | #{ |
5253 | 5224 | let x = load-model-example("AlgebraicEquationsOverGF2") |
5254 | 5225 | let n = x.instance.num_variables |
|
0 commit comments