Skip to content

[Rule] KClique to BalancedCompleteBipartiteSubgraph #231

@isPANN

Description

@isPANN

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:

  1. 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.

  2. Part A (left partition). A = V' = {v₀, v₁, …, v_{n'−1}}, the padded vertex set. |A| = n'.

  3. 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.
  4. 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.
  5. Balanced biclique parameter. Set K' = n' − k = n + C(k) − k.

  6. 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_vertices of source G
  • m = num_edges of 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

No one assigned

    Labels

    GoodAn issue passed all checks.ruleA new reduction rule to be added.

    Type

    No type

    Projects

    Status

    OnHold

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions