-
Notifications
You must be signed in to change notification settings - Fork 3
[Model] QuadraticDiophantineEquations #543
Description
Motivation
QUADRATIC DIOPHANTINE EQUATIONS (P227) from Garey & Johnson, A7 AN8. An NP-complete number-theoretic problem: given positive integers a, b, c, determine whether there exist positive integers x and y such that ax^2 + by = c. This result by Manders and Adleman (1978) is a landmark in computational complexity, showing that even simple Diophantine equations with just two unknowns and degree two are NP-complete. This contrasts with the polynomial-time solvability of purely linear Diophantine equations (sum of a_ix_i = c) and pure power equations (ax^k = c). The general Diophantine problem (arbitrary polynomial, arbitrary many variables) is undecidable (Matiyasevich's theorem, extending MRDP), but restricting to a single nonlinear variable keeps the problem in NP.
Associated reduction rules:
- As source: [Rule] QUADRATIC DIOPHANTINE EQUATIONS to SIMULTANEOUS DIVISIBILITY OF LINEAR POLYNOMIALS #555 (QUADRATIC DIOPHANTINE EQUATIONS -> SIMULTANEOUS DIVISIBILITY OF LINEAR POLYNOMIALS)
- As target: [Rule] 3SAT to QUADRATIC DIOPHANTINE EQUATIONS #560 (3SAT -> QUADRATIC DIOPHANTINE EQUATIONS)
Definition
Name: QuadraticDiophantineEquations
Reference: Garey & Johnson, Computers and Intractability, A7 AN8
Mathematical definition:
INSTANCE: Positive integers a, b, and c.
QUESTION: Are there positive integers x and y such that ax^2 + by = c?
Variables
- Count: 1 (the quadratic unknown x; the linear unknown y is determined by x)
- Per-variable domain:
- x: {1, 2, ..., floor(sqrt(c/a))} -- since ax^2 <= c, x is bounded by sqrt(c/a)
- Meaning: x is the variable appearing quadratically in the equation. Given x, the linear variable y = (c - ax^2) / b is uniquely determined; a configuration is feasible iff (c - ax^2) > 0 and (c - a*x^2) mod b == 0 (yielding a positive integer y).
dims()implementation:vec![floor(sqrt(c / a)) as usize]-- config[i]maps to x = i + 1 (1-indexed). The brute-force solver enumerates only x; y is derived, not searched.
Schema (data type)
Type name: QuadraticDiophantineEquations
Variants: none (operates on three positive integers)
| Field | Type | Description |
|---|---|---|
a |
u64 |
Coefficient of x^2 |
b |
u64 |
Coefficient of y |
c |
u64 |
Right-hand side constant |
Size fields (getters): a, b, c -- the three coefficients are the natural size parameters. Reduction overhead expressions reference these directly (e.g., rule #560 derives bit_length_b = O(n log n) from the product of n primes encoded in b).
Complexity
- Best known exact algorithm: For each candidate x in {1, ..., floor(sqrt(c/a))}, check if (c - ax^2) is positive and divisible by b, yielding y = (c - ax^2)/b. This runs in O(sqrt(c/a) * polylog(c)) time, which is pseudo-polynomial. The problem is NP-complete because c (and hence sqrt(c/a)) can be exponential in the input bit-length. Purely linear Diophantine equations are solvable in polynomial time using the extended Euclidean algorithm. The NP-hardness comes from the interaction of the quadratic term with the linear term and the positivity constraints. [Manders and Adleman, JCSS 16:168-184, 1978.]
- Complexity string:
"sqrt(c)"
Extra Remark
Full book text:
INSTANCE: Positive integers a, b, and c.
QUESTION: Are there positive integers x and y such that ax^2 + by = c?
Reference: [Manders and Adleman, 1978]. Transformation from 3SAT.
Comment: Diophantine equations of the forms ax^k = c and Sigma_{i=1}^{k} a_i*x_i = c are solvable in polynomial time for arbitrary values of k. The general Diophantine problem, "Given a polynomial with integer coefficients in k variables, does it have an integer solution?" is undecidable, even for k = 13 [Matijasevic and Robinson, 1975]. However, the given problem can be generalized considerably (to simultaneous equations in many variables) while remaining in NP, so long as only one variable enters into the equations in a non-linear way (see [Gurari and Ibarra, 1978]).
How to solve
- It can be solved by (existing) bruteforce. (Enumerate x from 1 to floor(sqrt(c/a)); for each x, check if (c - ax^2) > 0 and (c - ax^2) mod b == 0, yielding y = (c - a*x^2)/b.)
- It can be solved by reducing to integer programming. (ILP with integer variables x, y >= 1 and equality constraint ax^2 + by = c; however, the quadratic term makes this a mixed-integer quadratic program.)
- Other: The problem can be reduced to Quadratic Congruences (P220) by observing that ax^2 + by = c iff ax^2 ≡ c (mod b) with x bounded by sqrt(c/a).
Example Instance
Input:
a = 3, b = 5, c = 53
Question: Are there positive integers x, y with 3x^2 + 5y = 53?
Solution search:
- dims() = [floor(sqrt(53/3))] = [4], so x ranges from 1 to 4 (config indices 0..3).
- x = 1 (config [0]): 3*1 + 5y = 53 => 5y = 50 => y = 10. YES! (x=1, y=10)
- x = 2 (config [1]): 3*4 + 5y = 53 => 5y = 41 => y = 8.2. Not integer.
- x = 3 (config [2]): 3*9 + 5y = 53 => 5y = 26 => y = 5.2. Not integer.
- x = 4 (config [3]): 3*16 + 5y = 53 => 5y = 5 => y = 1. YES! (x=4, y=1)
Answer: YES. Two solutions: (x=1, y=10) and (x=4, y=1).
Verification of (x=4, y=1): 3*(4^2) + 5*1 = 48 + 5 = 53 = c.
Negative example:
a = 3, b = 5, c = 10
- dims() = [floor(sqrt(10/3))] = [1], so x = 1 only.
- x = 1: 3 + 5y = 10 => 5y = 7 => y = 1.4. Not integer.
- No solution exists. Answer: NO.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status