-
Notifications
You must be signed in to change notification settings - Fork 3
[Model] MinimumIntersectionGraphBasis #837
Description
Motivation
INTERSECTION GRAPH BASIS (P70) from Garey & Johnson, A1.5 GT59. A classical NP-hard problem useful for reductions. The intersection number of a graph is a fundamental invariant in intersection graph theory, equivalent to the edge clique cover number. Applications include database keyword conflict resolution (Kou et al., 1978) and intersection graph recognition.
Associated rules:
- [Rule] COVERING BY CLIQUES to MinimumIntersectionGraphBasis #848: MinimumCoveringByCliques → MinimumIntersectionGraphBasis (equivalence via edge clique cover)
Definition
Name: MinimumIntersectionGraphBasis
Reference: Garey & Johnson, Computers and Intractability, A1.5 GT59
Mathematical definition:
INSTANCE: Graph G = (V,E).
OBJECTIVE: Find the minimum cardinality of a set S and an assignment of subsets S[v] ⊆ S for each v ∈ V such that {u,v} ∈ E if and only if S[u] ∩ S[v] ≠ ∅.
The objective value is Min(|S|), the minimum universe size for an intersection representation of G.
Variables
- Count: |V| * K_max (one binary variable per vertex-element pair, where K_max ≤ |E| is an upper bound on the universe size)
- Per-variable domain: {0, 1}
- Meaning: Variable (v, s) = 1 if element s ∈ S is included in the subset S[v] assigned to vertex v. The assignment is valid if: (1) for every edge {u,v} ∈ E, S[u] ∩ S[v] ≠ ∅; and (2) for every non-edge {u,v} ∉ E, S[u] ∩ S[v] = ∅. The objective minimizes |S|, the number of universe elements actually used.
Schema (data type)
Type name: MinimumIntersectionGraphBasis
Variants: (SimpleGraph, One) — unweighted, simple graph input
| Field | Type | Description |
|---|---|---|
graph |
SimpleGraph |
The input graph G = (V, E) |
Notes:
- This is an optimization problem:
Value = Min<usize>. - Key getter methods:
num_vertices()(= |V|),num_edges()(= |E|). - The intersection number equals the edge clique cover number.
Complexity
- Decision complexity: NP-hard (Kou, Stockmeyer, and Wong, 1978; Orlin, 1976). Transformation from COVERING BY CLIQUES. NP-hard even for planar graphs and graphs of maximum degree 6. Polynomial for maximum degree ≤ 5.
- Best known exact algorithm: FPT parameterized by solution size k with kernel of at most 2^k vertices, yielding 2^(2^O(k)) · n^O(1) time.
- Concrete complexity expression:
"num_edges^num_edges"(fordeclare_variants!; brute-force bound, since intersection number ≤ |E|) - References:
- L.T. Kou, L.J. Stockmeyer, C.K. Wong (1978). "Covering Edges by Cliques with Regard to Keyword Conflicts among in a File." Comm. ACM 21(2), pp. 135-139.
Extra Remark
Full book text:
INSTANCE: Graph G = (V,E), positive integer K ≤ |E|.
QUESTION: Is G the intersection graph for a family of sets whose union has cardinality K or less, i.e., is there a K-element set S and for each v ∈ V a subset S[v] ⊆ S such that {u,v} ∈ E if and only if S[u] and S[v] are not disjoint?
Reference: [Kou, Stockmeyer, and Wong, 1978]. Transformation from COVERING BY CLIQUES.
How to solve
- It can be solved by (existing) bruteforce. (Enumerate all possible subset assignments for increasing universe sizes; return the smallest universe that gives a valid intersection representation.)
- It can be solved by reducing to integer programming. (Binary variables x_{v,s} for each vertex-element pair; constraints ensuring edges intersect and non-edges don't; binary variables y_s indicating element usage; minimize Σ y_s. Companion rule issue to be filed separately.)
- Other: (TBD)
Example Instance
Input: Path graph P_4 on 4 vertices:
V = {0, 1, 2, 3}, E = {(0,1), (1,2), (2,3)}
Optimal intersection representation (|S| = 3):
Universe S = {a, b, c}:
- S[0] = {a}
- S[1] = {a, b}
- S[2] = {b, c}
- S[3] = {c}
Edge verification: S[0]∩S[1]={a}≠∅ ✓, S[1]∩S[2]={b}≠∅ ✓, S[2]∩S[3]={c}≠∅ ✓
Non-edge verification: S[0]∩S[2]=∅ ✓, S[0]∩S[3]=∅ ✓, S[1]∩S[3]=∅ ✓
Optimal value: Min(3) — the intersection number of P_4 equals its edge clique cover number (3 edges, each an edge-clique). No 2-element universe suffices because the 3 edges form 3 maximal cliques that pairwise share vertices.
Python validation script
# P4: 4 vertices, 3 edges
edges = [(0,1), (1,2), (2,3)]
non_edges = [(0,2), (0,3), (1,3)]
# Intersection representation with |S|=3
S = {0: {0}, 1: {0, 1}, 2: {1, 2}, 3: {2}} # using integers for universe
# Check edges intersect
for u, v in edges:
assert S[u] & S[v], f"Edge ({u},{v}) not covered"
# Check non-edges don't intersect
for u, v in non_edges:
assert not (S[u] & S[v]), f"Non-edge ({u},{v}) falsely intersects"
print("Intersection representation verified: Min(3)")Metadata
Metadata
Assignees
Labels
Type
Projects
Status