An Approximate Solution to the Minimum Dominating Set Problem: The Furones Algorithm
Frank Vega
Information Physics Institute, 840 W 67th St, Hialeah, FL 33012, USA
vega.frank@gmail.com
Abstract
The Minimum Dominating Set problem is NP-hard and admits no polynomial-time approximation unless . This paper describes Furones version 0.2.9. The implementation transforms each connected component into a validated degree-four auxiliary graph, solves the LP relaxation of MDS on that auxiliary graph, uses the LP values only as tie-breakers in the standard greedy set-cover algorithm, projects the auxiliary solution back to the original component, also tests the complement, validates domination, and prunes redundant vertices. The unconditional approximation statement supported by this implementation is an greedy set-cover guarantee for MDS on the auxiliary graph; since the auxiliary graph has , this gives on the auxiliary instance. Transferring this guarantee into a constant-factor approximation for MDS on the original graph still requires an auxiliary-to-original optimum comparison. If such a universal constant transfer theorem were proved, then Furones would break the logarithmic approximation barrier for MDS and would imply . At present this remains a conditional implication rather than an unconditional proof of . The new adversarial MILP experiment reports twelve verified DIMACS runs, with exact ratios between and against SciPy MILP optima.
Introduction
The Minimum Dominating Set (MDS) problem asks for a smallest set such that every vertex of an undirected graph either belongs to or has a neighbour in . We write for the optimum size.
Dominating Set is hard to approximate: the set-cover reduction gives an approximation, and Feige's threshold for set cover, together with the dominating-set inapproximability of Raz and Safra, implies that a polynomial-time constant-factor approximation for general MDS would force . Consequently, any claimed constant approximation ratio for MDS must identify the precise theorem that transfers the constant bound to the original input graph.
The Furones v0.2.9 implementation has three main components.
- It removes self-loops and selects isolated vertices.
- For each remaining connected component , it builds a degree-four auxiliary graph .
- It solves the MDS LP relaxation on , runs greedy set cover with LP tie-breaking, projects the auxiliary solution back to , also considers the complement of the projected set, validates domination on , and greedily prunes redundant vertices.
Let be the dominating set computed on the auxiliary graph . Since MDS is exactly set cover over closed neighbourhoods, and each closed neighbourhood in has size at most , the greedy set-cover analysis gives:
This is an unconditional guarantee for the auxiliary graph. The remaining issue is the relation between the auxiliary optimum and the original optimum , together with the projection/complement validation step. A universal constant transfer theorem would turn the auxiliary guarantee into a polynomial-time constant approximation for MDS on arbitrary graphs. By the logarithmic inapproximability barrier, such a theorem would imply .
The main contributions are:
- A code-faithful description of the Furones v0.2.9 degree-four auxiliary reduction and LP-backed greedy MDS routine.
- An unconditional correctness statement for returned outputs: whenever component validation succeeds, the algorithm returns a dominating set, and pruning preserves domination.
- An unconditional approximation guarantee for MDS on the degree-four auxiliary graph.
- A precise conditional implication: if the auxiliary-to-original transfer is universally bounded by a constant, then Furones is a polynomial-time constant approximation for general MDS and therefore implies .
- An updated adversarial experiment using
experiments/run_adversarial_milp.py, comparing Furones v0.2.9 against exact SciPy MILP optima on twelve DIMACS instances.
Research Data
The algorithm is implemented in the Python package Furones, freely available on PyPI. The current version is v0.2.9, hosted at https://github.com/frankvegadelgado/furones, with reproducible capsule at https://pypi.org/project/furones/. It is released under the MIT License, uses git for versioning, requires Python
3.12 with NetworkX
3.4.2, NumPy
2.2.1, and SciPy
1.15.0. Main entry points are asia, batch_asia, test_asia; core routine furones.algorithm.find_dominating_set.
Description of the Algorithm
The public routine find_dominating_set computes an approximate minimum dominating set of an undirected graph. It returns a verified dominating set and raises RuntimeError if the auxiliary projection stage cannot validate a component candidate. It rejects non-graph inputs, removes self-loops, handles isolated vertices, solves each remaining connected component separately via _find_component_solution, and prunes redundant vertices from the union of the component solutions.
FindDominatingSet in Furones v0.2.9:
Require: Undirected NetworkX graph
Ensure: A dominating set
, or a runtime error if candidate validation fails
- If
is not an undirected NetworkX graph, raise
ValueError. - If , return .
- Remove self-loops from a working copy of .
- (isolated vertices); remove from the working graph.
- For each connected component
of the working graph:
- sorted by increasing cardinality
- For : if dominates , set and continue to the next component.
- Raise
RuntimeErrorif no validated component candidate is found.
- .
- Return .
The Degree-Four Gadget
The subroutine _degree_four_auxiliary_graph builds and validates the sequential degree-four auxiliary graph. For a connected component
, it replaces each original vertex
with a cyclic sequence of auxiliary vertices
. Each auxiliary vertex is attached to one current neighbour of
, and consecutive neighbours are linked through the sequence. The implementation then validates that the maximum degree of the auxiliary graph is at most four and raises RuntimeError with message "Degree-four reduction failed: max degree is {max_degree}, expected <= 4." if this invariant fails.
Local Furones degree-four gadget for a vertex with four current neighbours. The original vertex is removed and replaced by auxiliary vertices ; each auxiliary vertex connects to one current neighbour and to the previous current neighbour, with the last edge closing the cycle.
DegreeFourAuxiliary :
Require: Connected component
Ensure: Auxiliary graph
with maximum degree at most
- .
- For each
:
- current neighbours of in ; remove from .
- Set and .
- For with neighbour : add auxiliary vertex and edge ; if set , else add edge ; set .
- If , add edge .
- If
, raise
RuntimeError. - Return .
LP-Backed Greedy MDS
This module targets MDS directly and does not impose independence. The input graphs produced by the Furones auxiliary reduction are expected to have maximum degree at most 4, so every closed neighbourhood has size at most 5. The greedy set-cover algorithm therefore has the standard approximation bound on those bounded-degree instances; for this is .
The auxiliary solver first solves the LP relaxation of unweighted MDS (MDS-LP):
If the LP solve fails, the implementation falls back to
for all
, which is always feasible; this fallback is used only for priority tie-breaking and diagnostics. The fractional values are then used only as a tie-breaker in the greedy set-cover routine greedy_mds_from_lp_priority: while some vertex remains uncovered, the routine chooses a vertex whose closed neighbourhood covers the largest number of uncovered vertices, breaking ties by larger LP value, degree, and a stable representation of the vertex. After the greedy pass, the auxiliary solution is pruned by prune_redundant_vertices, which deletes any selected vertex whose removal preserves domination.
Correctness of Returned Solutions
A selected vertex
is removable by prune_redundant_vertices_dominating when another selected vertex dominates
, and every neighbour of
remains dominated after
is deleted.
Theorem 1 (Feasibility). Whenever FindDominatingSet returns, its output is a dominating set of the input graph.
Proof. Isolated vertices are placed in , so they dominate themselves. For every non-isolated connected component , the algorithm considers the projected auxiliary solution and its complement . It adds a candidate only after directly verifying that the candidate dominates . If neither candidate dominates , the implementation raises an error rather than returning an invalid set. A vertex is removed by pruning only if has another neighbour in the current set and every neighbour of either belongs to or has at least two neighbours in ; each such pruning step preserves domination. Therefore the final returned set dominates .
Approximation Ratio and the Logarithmic Barrier
Let denote the th harmonic number.
Theorem 2 (Auxiliary degree-four MDS guarantee). Let be an auxiliary graph produced by DegreeFourAuxiliary, and let be the dominating set returned by MdsLPGreedy on . Then:
Proof. MDS is the set-cover instance whose universe is and whose sets are the closed neighbourhoods . Greedy set cover returns a cover within a factor of optimum, where is the maximum set size. Here . The construction validates , so and the final bound is . The LP values are used only for tie-breaking and do not weaken the greedy set-cover guarantee.
The projection step creates . Since projection can identify several auxiliary vertices with the same original vertex, . To obtain a constant approximation for original MDS, one needs a transfer statement relating the auxiliary optimum to the original optimum.
Assumption (Auxiliary MDS/MDS transfer). There is a universal constant such that, for every connected component processed by Furones v0.2.9, the corresponding auxiliary graph and validation step satisfy:
where is the validated component solution returned after projection/complement selection.
Proposition (Conditional ratio). Under the auxiliary MDS/MDS transfer assumption, Furones is an -approximation for Minimum Dominating Set.
Proof. Summing over connected components gives . Since Minimum Dominating Set is additive over connected components, . Pruning can only decrease . Hence .
Theorem 3 (Conditional implication for vs ). If Furones v0.2.9 satisfies a universal constant approximation ratio for MDS, then .
Proof. For any fixed constant , a polynomial-time -approximation for MDS beats on all sufficiently large inputs. This contradicts the Feige/Raz–Safra logarithmic inapproximability threshold for dominating set unless . Therefore a proven universal constant approximation ratio for Furones would imply .
Theorem 3 is conditional. The present implementation proves the auxiliary MDS guarantee and validates returned dominating sets, but it does not by itself prove the auxiliary-to-original transfer needed for an unconditional theorem.
Runtime Analysis
Theorem 4 (Runtime). Let and , and let and be the total numbers of vertices and edges in the auxiliary instances. The implemented runtime is polynomial and is bounded by:
where is the time used by SciPy's LP solver and on the auxiliary graphs.
Proof sketch. Self-loop removal, isolate detection, connected-component traversal, and auxiliary construction are linear in the input and auxiliary sizes. The current Python greedy routine scans all auxiliary vertices at each selection step and computes uncovered closed-neighbourhood intersections, giving the displayed
bound. The LP relaxation is delegated to SciPy's linprog with HiGHS, called with method="highs" and options={"presolve": True}. The final pruning step calls domination checks after candidate deletions. No exponential subroutine is used by the approximation path.
Experiments
Adversarial MILP Setup
The repository contains an adversarial DIMACS suite under experiments/. The runner is experiments/run_adversarial_milp.py. It compares the core Furones routine against an exact binary MILP formulation of MDS using SciPy. Each MILP variable
records whether
is selected, and each domination constraint enforces:
Both solutions are checked with networkx.dominating.is_dominating_set. The command used was:
python -B experiments\run_adversarial_milp.py
Results
| Instance | Ratio | (ms) | (ms) | |||||
|---|---|---|---|---|---|---|---|---|
adv_clique_k8 |
8 | 28 | 7 | 1 | 1 | 1.000 | 15.639 | 15.084 |
adv_complete_bipartite_k4_4 |
8 | 16 | 4 | 4 | 2 | 2.000 | 12.031 | 22.177 |
adv_crown_5 |
10 | 20 | 4 | 2 | 2 | 1.000 | 10.909 | 20.829 |
adv_cycle_c12 |
12 | 12 | 2 | 4 | 4 | 1.000 | 8.169 | 26.572 |
adv_double_star_4_4 |
10 | 9 | 5 | 2 | 2 | 1.000 | 6.340 | 2.619 |
adv_grid_3x4 |
12 | 17 | 4 | 4 | 4 | 1.000 | 9.565 | 23.117 |
adv_ladder_2x5 |
10 | 13 | 3 | 4 | 3 | 1.333 | 9.055 | 21.615 |
adv_lollipop_k5_p5 |
10 | 15 | 5 | 3 | 3 | 1.000 | 7.167 | 37.298 |
adv_path_p12 |
12 | 11 | 2 | 4 | 4 | 1.000 | 6.254 | 24.738 |
adv_projection_fallback_6 |
5 | 6 | 3 | 2 | 2 | 1.000 | 5.673 | 27.490 |
adv_ratio2_trap_7 |
7 | 11 | 5 | 2 | 2 | 1.000 | 5.373 | 1.935 |
adv_star_k1_11 |
12 | 11 | 11 | 1 | 1 | 1.000 | 6.223 | 2.124 |
is the set returned by Furones, is the exact optimum from SciPy MILP, is Furones time in milliseconds, and is MILP time in milliseconds.
All twelve returned sets passed domination validation. Ten instances were solved optimally by Furones. The two non-optimal cases have ratios and . Summary values: worst exact ratio , mean ratio , median ratio , total Furones time ms, total exact MILP time ms. The observed worst case is below on this suite, but that remains an empirical statement about these original inputs; the proved bound applies to the auxiliary graph.
Conclusion
Furones v0.2.9 now implements a degree-four auxiliary reduction followed by LP-backed greedy MDS and validated projection/complement selection. The auxiliary approximation theorem is the standard greedy set-cover bound , which becomes on the validated degree-four auxiliary graphs.
The remaining theoretical issue is the transfer from auxiliary MDS to original MDS through projection and complement validation. A universal constant transfer would make Furones a polynomial-time constant approximation for MDS and would therefore imply by the logarithmic inapproximability barrier. The present paper records that implication explicitly while avoiding an unconditional claim not yet proved by the code or by the current analysis. Future work should focus on proving or refuting the required auxiliary-to-original transfer inequality and on expanding the adversarial MILP suite beyond the twelve current DIMACS instances.

Top comments (0)