-
Notifications
You must be signed in to change notification settings - Fork 4
Description
name: Rule
about: Propose a new reduction rule
title: "[Rule] KClique to BalancedCompleteBipartiteSubgraph"
labels: rule
assignees: ''
canonical_source_name: 'KClique'
canonical_target_name: 'BalancedCompleteBipartiteSubgraph'
source_in_codebase: false
target_in_codebase: true
Source: KClique (satisfaction: does G have a clique of size k?)
Target: BALANCED COMPLETE BIPARTITE SUBGRAPH
Motivation: Establishes NP-completeness of BALANCED COMPLETE BIPARTITE SUBGRAPH via polynomial-time reduction from CLIQUE. This is the classical reduction attributed to Garey and Johnson (unpublished, cited in Computers and Intractability [GT24]) and later published in Johnson's NP-completeness column (1987). The problem has applications in data mining, bioinformatics (protein interaction networks), and VLSI design.
Reference: Johnson, D.S. (1987). "The NP-completeness column: an ongoing guide." Journal of Algorithms 8(3):438–448. Originally referenced as [Garey and Johnson, ----] in Computers and Intractability, A1.2 GT24.
GJ Source Entry
[GT24] BALANCED COMPLETE BIPARTITE SUBGRAPH
INSTANCE: Bipartite graph G = (V,E), positive integer K <= |V|.
QUESTION: Are there two disjoint subsets V_1, V_2 <= V such that |V_1| = |V_2| = K and such that u in V_1, v in V_2 implies that {u,v} in E?Reference: [Garey and Johnson, ----]. Transformation from CLIQUE.
Comment: The related problem in which the requirement "|V_1| = |V_2| = K" is replaced by "|V_1|+|V_2| = K" is solvable in polynomial time for bipartite graphs (because of the connection between matchings and independent sets in such graphs, e.g., see [Harary, 1969]), but is NP-complete for general graphs [Yannakakis, 1978b].
Reduction Algorithm
Given a KClique instance (G = (V, E), k) where G is a general graph with n = |V| vertices and m = |E| edges, construct a BalancedCompleteBipartiteSubgraph instance (H = (A ∪ B, F), K') as follows:
-
Pad the vertex set. Let C(k) = k(k−1)/2 (the number of edges in a k-clique). To guarantee the construction is valid, add C(k) isolated vertices to V. Set n' = n + C(k). Isolated vertices do not change the clique number.
-
Part A (left partition). A = V' = {v₀, v₁, …, v_{n'−1}}, the padded vertex set. |A| = n'.
-
Part B (right partition). B consists of two types of elements:
- Edge elements: one element eⱼ for each edge eⱼ = {u, w} ∈ E. There are m such elements.
- Padding elements: W = {w₀, w₁, …, w_{|W|−1}} where |W| = n − k. (Note: n' − k − C(k) = n + C(k) − k − C(k) = n − k ≥ 0 since k ≤ n.)
- |B| = m + n − k.
-
Bipartite edges (non-incidence + full padding). For each v ∈ A and b ∈ B:
- If b = eⱼ = {u, w} is an edge element: add edge {v, eⱼ} to F if and only if v ∉ {u, w} (v is not an endpoint of eⱼ).
- If b = wᵢ is a padding element: always add edge {v, wᵢ} to F.
-
Balanced biclique parameter. Set K' = n' − k = n + C(k) − k.
-
Solution extraction. Given a satisfying BCBS assignment selecting left vertices A' ⊆ A and right elements B' ⊆ B with |A'| = |B'| = K', the k-clique in G is S = {v ∈ V : v ∉ A'} — the original vertices not selected on the left side. The extracted source configuration is: source_config[v] = 1 − target_config[v] for v ∈ {0, …, n−1}.
Correctness proof sketch:
-
(Forward) If S ⊆ V is a k-clique, let A' = V' \ S (the n' − k vertices not in S) and B' = E(S) ∪ W, where E(S) = {eⱼ ∈ E : both endpoints in S}. Since S is a k-clique, |E(S)| = C(k) and |B'| = C(k) + (n − k) = n' − k = K'. For any v ∈ A' and eⱼ ∈ E(S): both endpoints of eⱼ are in S, and v ∉ S, so v is not an endpoint of eⱼ — the edge exists. For any v ∈ A' and wᵢ ∈ W: the edge always exists. So (A', B') is a balanced K'-biclique.
-
(Backward) If (A', B') is a balanced K'-biclique in H, let S = {v ∈ V : v ∉ A'} with |S| = k. Consider any edge eⱼ = {u, w} ∈ E with at least one endpoint in A' (say u ∈ A'). Then u is an endpoint of eⱼ, so {u, eⱼ} ∉ F, meaning eⱼ ∉ B'. Therefore B' ∩ E ⊆ E(S) (only edges with both endpoints in S can be in B'). Since |B'| = K' = n' − k and B' ⊆ E(S) ∪ W with |W| = n − k, we need |E(S)| ≥ K' − |W| = (n' − k) − (n − k) = C(k). But |E(S)| ≤ C(k) (at most C(k,2) edges among k vertices), so |E(S)| = C(k), which means every pair in S is connected — S is a k-clique.
Size Overhead
Symbols:
- n =
num_verticesof source G - m =
num_edgesof source G - k =
k(clique size parameter of source KClique)
| Target metric (code name) | Formula (using source getters) |
|---|---|
left_size |
num_vertices + k * (k - 1) / 2 |
right_size |
num_edges + num_vertices - k |
k |
num_vertices + k * (k - 1) / 2 - k |
Derivation:
- left_size = n' = n + C(k,2) = n + k(k−1)/2. One vertex per original vertex plus C(k,2) isolated padding vertices.
- right_size = m + |W| = m + (n − k). One element per original edge plus n − k padding elements.
- Target biclique parameter K' = n' − k = n + k(k−1)/2 − k.
Validation Method
- Closed-loop test: Construct a KClique instance, reduce to BalancedCompleteBipartiteSubgraph, solve the target with BruteForce (
find_satisfying), extract the clique via solution extraction (invert left-side selection), verify it is a valid k-clique in the original graph. - Forward test: Construct a graph with a known k-clique, verify the bipartite graph contains a balanced K'-biclique.
- Backward test (negative): Construct a graph with no k-clique (e.g., K_{3,3} bipartite graph with k = 3), verify the bipartite graph has no balanced K'-biclique.
- Size verification: Check left_size = n + C(k,2), right_size = m + n − k, target k = n + C(k,2) − k.
Example
Source instance (KClique):
Graph G with 4 vertices {0, 1, 2, 3} and 4 edges:
- Edges: {0,1}, {0,2}, {1,2}, {2,3}
- k = 3
- The unique 3-clique is {0, 1, 2}. No other 3-clique exists ({0,1,3}: no edge {1,3}; {0,2,3}: no edge {0,3}; {1,2,3}: no edge {1,3}).
Construction:
- n = 4, m = 4, k = 3, C(3,2) = 3.
- Pad with 3 isolated vertices: V' = {0, 1, 2, 3, 4, 5, 6}, n' = 7.
- Part A: {0, 1, 2, 3, 4, 5, 6} (7 vertices).
- Part B: {e₀={0,1}, e₁={0,2}, e₂={1,2}, e₃={2,3}, w₀} (4 edges + 1 padding = 5 elements).
- |W| = n − k = 4 − 3 = 1. K' = n' − k = 7 − 3 = 4.
Bipartite edges (non-incidence for edge elements, always for padding):
| Vertex v | Connected B-elements (v not endpoint of eⱼ, or padding) |
|---|---|
| 0 | e₂={1,2}, e₃={2,3}, w₀ |
| 1 | e₁={0,2}, e₃={2,3}, w₀ |
| 2 | e₀={0,1}, w₀ |
| 3 | e₀={0,1}, e₁={0,2}, e₂={1,2}, w₀ |
| 4 (pad) | e₀, e₁, e₂, e₃, w₀ (all) |
| 5 (pad) | e₀, e₁, e₂, e₃, w₀ (all) |
| 6 (pad) | e₀, e₁, e₂, e₃, w₀ (all) |
Total bipartite edges: 3 + 3 + 2 + 4 + 5 + 5 + 5 = 27.
Constructed target instance:
BalancedCompleteBipartiteSubgraph with left_size = 7, right_size = 5, k = 4, and the 27 bipartite edges listed above.
Solution mapping:
- Balanced 4-biclique: A' = {3, 4, 5, 6}, B' = {e₀, e₁, e₂, w₀}.
- Verify completeness (all 16 cross-edges):
- v=3: e₀ ✓ (3 ∉ {0,1}), e₁ ✓ (3 ∉ {0,2}), e₂ ✓ (3 ∉ {1,2}), w₀ ✓ (padding)
- v=4: e₀ ✓, e₁ ✓, e₂ ✓, w₀ ✓ (isolated, not endpoint of anything)
- v=5: e₀ ✓, e₁ ✓, e₂ ✓, w₀ ✓
- v=6: e₀ ✓, e₁ ✓, e₂ ✓, w₀ ✓
- Extracted clique: S = V \ A' ∩ {0,1,2,3} = {0, 1, 2}.
- Check in G: {0,1} ✓, {0,2} ✓, {1,2} ✓. Valid 3-clique. ✓
| Target metric | Value | Formula check |
|---|---|---|
left_size |
7 | 4 + 3·2/2 = 7 ✓ |
right_size |
5 | 4 + 4 − 3 = 5 ✓ |
k |
4 | 4 + 3 − 3 = 4 ✓ |
References
- Johnson (1987): D.S. Johnson, "The NP-completeness column: an ongoing guide," Journal of Algorithms 8(3):438–448, 1987. Published proof of the CLIQUE → BALANCED COMPLETE BIPARTITE SUBGRAPH reduction originally referenced as [Garey and Johnson, ----] in Computers and Intractability.
- Garey & Johnson (1979): M.R. Garey and D.S. Johnson, Computers and Intractability: A Guide to the Theory of NP-Completeness, W.H. Freeman, 1979. Problem [GT24], p. 196.
- [Harary, 1969]: F. Harary, Graph Theory, Addison-Wesley, 1969.
- [Yannakakis, 1978b]: M. Yannakakis, "Node- and edge-deletion NP-complete problems," in Proc. 10th Ann. ACM Symp. on Theory of Computing, pp. 253–264, 1978.
Note on related but distinct problems: Peeters (2003) proves NP-completeness of the maximum edge biclique problem (maximize |A|·|B|) using a modification of this reduction. That is a different problem from the balanced biclique problem (|A| = |B| = K) addressed here.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status