-
Notifications
You must be signed in to change notification settings - Fork 3
[Model] MinimumGeometricConnectedDominatingSet #856
Description
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:
- [Rule] PLANAR 3SAT to MinimumGeometricConnectedDominatingSet #377: Planar3Satisfiability → MinimumGeometricConnectedDominatingSet (NP-completeness proof)
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"(fordeclare_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)")
breakMetadata
Metadata
Assignees
Labels
Type
Projects
Status