-
Notifications
You must be signed in to change notification settings - Fork 3
[Model] EquilibriumPoint #549
Description
Motivation
EQUILIBRIUM POINT (P234) from Garey & Johnson, A7 AN15. Given a set of variables with finite range sets and a collection of product polynomials (one per variable), determine whether there exists an assignment where each variable simultaneously maximizes its own polynomial — a discrete Nash equilibrium. NP-complete by reduction from 3SAT (Sahni, 1974). Remains NP-complete even when all range sets are binary ({0, 1}). Connects computational complexity to game theory and nonlinear programming.
Associated reduction rules:
- R178: 3SAT → EquilibriumPoint (this model is the target)
Definition
Name: EquilibriumPoint
Reference: Garey & Johnson, Computers and Intractability, A7 AN15
Mathematical definition:
INSTANCE: Set X = {x₁, x₂, …, xₙ} of variables, collection {Fᵢ : 1 ≤ i ≤ n} of product polynomials over X and the integers, and a finite range set Mᵢ ⊆ Z for each variable xᵢ.
A product polynomial is a polynomial expressible as a product of factors, each of which is a polynomial in the variables x₁, …, xₙ with integer coefficients. For example, F = x₁ · (1 − x₂) · (x₃ + 2) is a product of three factors.
QUESTION: Does there exist an assignment (y₁, y₂, …, yₙ) with yᵢ ∈ Mᵢ such that for all 1 ≤ i ≤ n and all y ∈ Mᵢ:
Fᵢ(y₁, …, yᵢ₋₁, yᵢ, yᵢ₊₁, …, yₙ) ≥ Fᵢ(y₁, …, yᵢ₋₁, y, yᵢ₊₁, …, yₙ)?
In game-theoretic terms: each Fᵢ is player i's payoff function, and the assignment is a pure-strategy Nash equilibrium if no player can unilaterally improve their payoff.
This is a satisfaction (feasibility) problem: Value = Or.
Variables
- Count: n (one variable per player)
- Per-variable domain: |Mᵢ| (size of the range set for player i)
- Meaning: yᵢ is the strategy chosen by player i from Mᵢ. The evaluate function checks whether every player's choice is a best response (no unilateral improvement possible).
dims() returns [|M₁|, |M₂|, …, |Mₙ|].
Schema (data type)
Type name: EquilibriumPoint
Variants: none
| Field | Type | Description | Getter |
|---|---|---|---|
polynomials |
Vec<Vec<Vec<i64>>> |
Product polynomials: polynomials[i] is a list of factors for Fᵢ. Each factor is a vector of coefficients [a₀, a₁, …, aₙ] representing a₀ + a₁x₁ + … + aₙxₙ. Fᵢ is the product of all its factors. |
num_players() → self.polynomials.len() |
range_sets |
Vec<Vec<i64>> |
Finite range set Mᵢ ⊆ Z for each variable xᵢ |
Problem type: Satisfaction (feasibility)
Value type: Or
Product polynomial representation: Each Fᵢ is stored as a list of linear factors. Factor [a₀, a₁, …, aₙ] represents the polynomial a₀ + a₁·x₁ + … + aₙ·xₙ. The value of Fᵢ at an assignment is the product of all its factors evaluated at that assignment.
Example: F = x₁ · (1 − x₃) is stored as [[0, 1, 0, 0], [1, 0, 0, -1]].
Complexity
- Decision complexity: NP-complete (Sahni, 1974; transformation from 3SAT). Remains NP-complete even for binary range sets Mᵢ = {0, 1}.
- Best known exact algorithm: Brute-force enumeration of all Π|Mᵢ| assignments, checking the equilibrium condition for each. Time O(Π|Mᵢ| · n · max|Mᵢ|).
- Complexity string for
declare_variants!:"2^num_players"(worst case with binary range sets) - Related results: Computing Nash equilibria in continuous games is PPAD-complete (Daskalakis, Goldberg, Papadimitriou, 2009). The discrete version with finite range sets is in NP.
- References:
- [Sahni, 1974] S. Sahni, "Computationally related problems", SIAM J. Computing 3(4), pp. 262-279, 1974.
Extra Remark
Full book text:
INSTANCE: Set x = {x_1, x_2, . . . , x_n} of variables, collection {F_i: 1 ≤ i ≤ n} of product polynomials over X and the integers, and a finite "range-set" M_i ⊆ Z for 1 ≤ i ≤ n.
QUESTION: Does there exist a sequence y_1, y_2, . . . , y_n of integers, with y_i ∈ M_i, such that for 1 ≤ i ≤ n and all y ∈ M_i,
F_i(y_1, y_2, . . . , y_{i-1}, y_i, y_{i+1}, . . . , y_n) ≥ F_i(y_1, y_2, . . . , y_{i-1}, y, y_{i+1}, . . . , y_n)?
Reference: [Sahni, 1974]. Transformation from 3SAT.
Comment: Remains NP-complete even if M_i = {0,1} for 1 ≤ i ≤ n.
How to solve
- It can be solved by (existing) bruteforce. Enumerate all Π|Mᵢ| assignments; for each, check whether every player's choice is a best response by comparing against all alternatives in Mᵢ.
- It can be solved by reducing to integer programming. (Product polynomials yield nonlinear constraints; not directly expressible as ILP.)
- Other: For binary range sets, reduce to SAT by encoding equilibrium conditions as Boolean constraints.
Example Instance
Input:
n = 3 players, Mᵢ = {0, 1} for all i (binary range sets, 2³ = 8 configurations).
Product polynomials (in factor form):
- F₁ = x₁ · x₂ · x₃ — factors:
[[0,1,0,0], [0,0,1,0], [0,0,0,1]] - F₂ = (1 − x₁) · x₂ — factors:
[[1,-1,0,0], [0,0,1,0]] - F₃ = x₁ · (1 − x₃) — factors:
[[0,1,0,0], [1,0,0,-1]]
Analysis of all 8 assignments:
| (x₁,x₂,x₃) | F₁ | F₂ | F₃ | P1 BR? | P2 BR? | P3 BR? | Equilibrium? |
|---|---|---|---|---|---|---|---|
| (0, 0, 0) | 0 | 0 | 0 | ✓ | ✗ | ✓ | No |
| (0, 0, 1) | 0 | 0 | 0 | ✓ | ✗ | ✓ | No |
| (0, 1, 0) | 0 | 1 | 0 | ✓ | ✓ | ✓ | Yes ✓ |
| (0, 1, 1) | 0 | 1 | 0 | ✗ | ✓ | ✓ | No |
| (1, 0, 0) | 0 | 0 | 1 | ✓ | ✓ | ✓ | Yes ✓ |
| (1, 0, 1) | 0 | 0 | 0 | ✓ | ✓ | ✗ | No |
| (1, 1, 0) | 0 | 0 | 1 | ✓ | ✓ | ✓ | Yes ✓ |
| (1, 1, 1) | 1 | 0 | 0 | ✓ | ✓ | ✗ | No |
Best-response analysis for (0, 1, 0):
- Player 1: F₁(0,1,0) = 0, F₁(1,1,0) = 0. Tie (0 ≥ 0). ✓
- Player 2: F₂(0,1,0) = 1, F₂(0,0,0) = 0. Best response (1 ≥ 0). ✓
- Player 3: F₃(0,1,0) = 0, F₃(0,1,1) = 0. Tie (0 ≥ 0). ✓
Answer: Or(true). Three equilibria exist: (0,1,0), (1,0,0), (1,1,0). Five non-equilibria provide negative coverage for round-trip testing.
Expected outcome: Or(true)
Reduction Rule Crossref
- R178: Satisfiability (3SAT) → EquilibriumPoint
Metadata
Metadata
Assignees
Labels
Type
Projects
Status