Skip to content

[Model] MinimumGeometricConnectedDominatingSet #856

@isPANN

Description

@isPANN

Motivation

GEOMETRIC CONNECTED DOMINATING SET (P124) from Garey & Johnson, A2 ND48. Find the minimum connected dominating set in a set of points under a distance threshold. NP-complete via reduction from PLANAR 3SAT (Lichtenstein, 1982). Applications in wireless ad-hoc network backbone construction.

Associated rules:

Definition

Name: MinimumGeometricConnectedDominatingSet

Reference: Garey & Johnson, Computers and Intractability, A2 ND48

Mathematical definition:

INSTANCE: Set P ⊆ Z×Z of points in the plane, positive integer B.
OBJECTIVE: Find the minimum-size subset P' ⊆ P such that all points in P − P' are within Euclidean distance B of some point in P', and the graph G = (P', E) with edges between points within distance B is connected.

Variables

  • Count: |P| (one binary variable per point)
  • Per-variable domain: {0, 1}
  • Meaning: Whether each point is selected into the dominating subset P'. A valid solution requires domination (every non-member has a neighbor in P') and connectivity (the subgraph on P' is connected). The objective minimizes |P'|.

Schema (data type)

Type name: MinimumGeometricConnectedDominatingSet
Variants: none

Field Type Description
points Vec<(f64, f64)> Set of points P in the plane
radius f64 Distance threshold B

Notes:

  • This is an optimization problem: Value = Min<usize>.
  • Key getter methods: num_points() (= |P|), radius().
  • Equivalent to Minimum Connected Dominating Set on the unit disk graph (UDG) induced by the point set.

Complexity

  • Decision complexity: NP-complete (Lichtenstein, 1982; transformation from PLANAR 3SAT). NP-complete under L_1 and L_∞ metrics as well.
  • Best known exact algorithm: O*(1.9407^n) via Measure and Conquer for connected dominating set (Fomin, Grandoni, Kratsch, 2006).
  • Concrete complexity expression: "2^num_points" (for declare_variants!)
  • Approximation: PTAS on unit disk graphs. Constant-factor approximation for weighted version (Ambühl et al., 2006).
  • References:
    • D. Lichtenstein (1982). "Planar Formulae and Their Uses." SIAM J. Comput. 11(2), pp. 329-343.
    • F.V. Fomin, F. Grandoni, D. Kratsch (2006). "Solving Connected Dominating Set Faster than 2^n." FSTTCS 2006, LNCS 4337, pp. 152-163.

Extra Remark

Full book text:

INSTANCE: Set P ⊆ Z×Z of points in the plane, positive integers B and K.
QUESTION: Is there a subset P' ⊆ P with |P'| ≤ K such that all points in P − P' are within Euclidean distance B of some point in P', and such that the graph G = (P',E), with an edge between two points in P' if and only if they are within distance B of each other, is connected?
Reference: [Lichtenstein, 1977]. Transformation from PLANAR 3SAT.
Comment: Remains NP-complete if the Euclidean metric is replaced by the L_1 rectilinear metric or the L_∞ metric [Garey and Johnson, ——].

How to solve

  • It can be solved by (existing) bruteforce. (Enumerate all 2^|P| subsets; check domination and connectivity; return smallest.)
  • It can be solved by reducing to integer programming. (Binary variable per point; domination and flow-based connectivity constraints; minimize Σ x_i. Companion rule issue to be filed separately.)
  • Other: Branch-and-bound with Measure and Conquer.

Example Instance

Input:
P = {(0,0), (3,0), (6,0), (9,0), (0,3), (3,3), (6,3), (9,3)} (8 points), B = 3.5

The induced graph is a ladder: horizontal edges between consecutive points in each row (dist=3.0 ≤ 3.5), plus vertical edges between corresponding points in the two rows (dist=3.0 ≤ 3.5). No diagonal edges (dist = √18 ≈ 4.24 > 3.5).

Optimal CDS (size 4): P' = {(0,0), (3,0), (6,0), (9,0)} (entire bottom row)

  • Connectivity: (0,0)-(3,0)-(6,0)-(9,0) forms a path ✓
  • Domination: (0,3) is within dist 3.0 of (0,0) ✓, (3,3) within 3.0 of (3,0) ✓, (6,3) within 3.0 of (6,0) ✓, (9,3) within 3.0 of (9,0) ✓

Optimal value: Min(4) — 7 valid CDS of size 4 exist. No size-3 CDS exists (verified exhaustively: any 3-point subset either fails connectivity or leaves some point undominated).

Python validation script
import math
from itertools import combinations

points = [(0,0),(3,0),(6,0),(9,0),(0,3),(3,3),(6,3),(9,3)]
B = 3.5

def dist(p1, p2):
    return math.sqrt((p1[0]-p2[0])**2 + (p1[1]-p2[1])**2)

n = len(points)
adj = [[dist(points[i],points[j]) <= B and i != j for j in range(n)] for i in range(n)]

def is_cds(subset):
    s = set(subset)
    # Domination
    for i in range(n):
        if i not in s and not any(adj[i][j] for j in s):
            return False
    # Connectivity
    visited = {subset[0]}
    q = [subset[0]]
    while q:
        node = q.pop(0)
        for nb in s:
            if nb not in visited and adj[node][nb]:
                visited.add(nb); q.append(nb)
    return visited == s

for k in range(1, n+1):
    found = [c for c in combinations(range(n), k) if is_cds(list(c))]
    if found:
        assert k == 4
        print(f"Min CDS: {k} ({len(found)} solutions)")
        break

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