Skip to content

[Model] PartitionIntoTriangles #232

@isPANN

Description

@isPANN

name: Problem
about: Propose a new problem type
title: "[Model] PartitionIntoTriangles"
labels: model
assignees: ''

Motivation

PARTITION INTO TRIANGLES (P22) from Garey & Johnson, A1.1 GT11. A classical NP-complete problem central to proving hardness of graph partitioning and covering problems. Each part of the partition must form a complete triangle (K3), making this strictly harder than PARTITION INTO PATHS OF LENGTH 2 (which only requires 2 of 3 edges).

Associated reduction rules:

  • As target: R19 (EXACT COVER BY 3-SETS -> PARTITION INTO TRIANGLES) via Garey and Johnson, 1979 (Theorem 3.7; transformation from 3DM)

Definition

Name: PartitionIntoTriangles
Canonical name: PARTITION INTO TRIANGLES
Reference: Garey & Johnson, Computers and Intractability, A1.1 GT11

Mathematical definition:

INSTANCE: Graph G = (V,E), with |V| = 3q for some integer q.
QUESTION: Can the vertices of G be partitioned into q disjoint sets V_1, V_2, . . . , V_q, each containing exactly 3 vertices, such that for each V_i = {u_i, v_i, w_i}, 1 <= i <= q, all three of the edges {u_i,v_i}, {u_i,w_i}, and {v_i,w_i} belong to E?

Variables

  • Count: n = |V| variables (one per vertex), encoding the triangle group assignment
  • Per-variable domain: {0, 1, ..., q-1} where q = n/3 = |V|/3, indicating which triangle the vertex belongs to
  • Meaning: Variable i = j means vertex i is in triangle group V_j. A valid assignment places exactly 3 vertices per group, and the 3 vertices must form a triangle (all 3 edges present in E).

Schema (data type)

Type name: PartitionIntoTriangles
Variants: graph topology (graph type parameter G)

Field Type Description
graph SimpleGraph The undirected graph G = (V, E) with

Notes:

  • This is a satisfaction (decision) problem: Metric = bool, implementing SatisfactionProblem.
  • No weight type is needed (purely structural question).
  • The constraint |V| divisible by 3 is a precondition on the input.

Complexity

  • Best known exact algorithm:
    • General graphs: O(2^n * poly(n)) via inclusion-exclusion / subset DP.
    • Bounded degree 4: O(1.0222^n) time, linear space (van Rooij, van Kooten Niekerk, Bodlaender, 2013).
    • Bounded degree 3: polynomial time (linear-time algorithm exists).
  • declare_variants! complexity string: "2^num_vertices" (general brute-force bound)
  • NP-completeness: NP-complete (Garey and Johnson, 1979; transformation from 3-Dimensional Matching, Theorem 3.7). Remains NP-complete on graphs of maximum degree 4.
  • ETH lower bound: No subexponential-time algorithm on degree-4 graphs unless the Exponential-Time Hypothesis fails.
  • References:
    • M. R. Garey and D. S. Johnson (1979). Computers and Intractability: A Guide to the Theory of NP-Completeness. W.H. Freeman. GT11, Theorem 3.7.
    • J. M. M. van Rooij, M. van Kooten Niekerk, H. L. Bodlaender (2013). "Partition Into Triangles on Bounded Degree Graphs." Theory of Computing Systems 52(4), pp. 687–718.

Extra Remark

Full book text:

INSTANCE: Graph G = (V,E), with |V| = 3q for some integer q.
QUESTION: Can the vertices of G be partitioned into q disjoint sets V_1, V_2, . . . , V_q, each containing exactly 3 vertices, such that for each V_i = {u_i, v_i, w_i}, 1 <= i <= q, all three of the edges {u_i,v_i}, {u_i,w_i}, and {v_i,w_i} belong to E?
Reference: [Schaefer, 1974]. Transformation from 3DM (see Chapter 3).
Comment: See next problem for a generalization.

How to solve

  • It can be solved by (existing) bruteforce — enumerate all partitions of V into triples and check the triangle condition.
  • It can be solved by reducing to integer programming — binary variables x_{v,t} for vertex v in triangle t, constraints enforcing exactly 3 vertices per triangle and all 3 edges present.
  • Other: Subset DP in O(3^n * poly(n)); for degree-4 graphs, O(1.0222^n) exact algorithm.

Example Instance

Instance 1 (YES — triangle partition exists):
Graph G with 9 vertices {0, 1, 2, 3, 4, 5, 6, 7, 8} and 12 edges:

  • Edges: {0,1}, {0,2}, {1,2}, {3,4}, {3,5}, {4,5}, {6,7}, {6,8}, {7,8}, {0,3}, {2,6}, {4,7}
  • q = 3, so we need 3 triangles covering all vertices
  • Partition: V_1 = {0, 1, 2}, V_2 = {3, 4, 5}, V_3 = {6, 7, 8}
    • V_1: {0,1}, {0,2}, {1,2} all present -- triangle
    • V_2: {3,4}, {3,5}, {4,5} all present -- triangle
    • V_3: {6,7}, {6,8}, {7,8} all present -- triangle
  • Answer: YES

Instance 2 (NO — no triangle partition exists):
Graph G with 6 vertices {0, 1, 2, 3, 4, 5} and 6 edges:

  • Edges: {0,1}, {0,2}, {1,2}, {2,3}, {3,4}, {4,5}
  • q = 2, so we need 2 triangles covering all 6 vertices
  • Triangles present: only {0,1,2}
  • Remaining vertices {3,4,5}: edges {2,3}, {3,4}, {4,5} are present but {3,5} is missing, so {3,4,5} is not a triangle
  • No valid triangle partition exists
  • Answer: NO

Metadata

Metadata

Assignees

No one assigned

    Labels

    GoodAn issue passed all checks.modelA model problem to be implemented.

    Type

    No type

    Projects

    Status

    Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions