This work builds upon A 2-Approximation Algorithm for Dominating Sets.
A dominating set in a graph $G = (V, E)$ is a subset $D \subseteq V$ such that every vertex not in $D$ is adjacent to at least one vertex in $D$. The minimum dominating set (MDS) is the smallest possible dominating set in terms of the number of vertices.
Graph Representation:
Dominating Set:
Minimum Dominating Set:
Greedy Algorithm:
Integer Linear Programming (ILP):
Heuristics and Metaheuristics:
The minimum dominating set problem is a fundamental issue in graph theory with wide-ranging applications. While it is computationally challenging, various algorithms and heuristics provide practical solutions for different scenarios. Ongoing research continues to improve the efficiency and applicability of these methods.
find_dominating_set
Algorithm and Runtime
Analysis
The find_dominating_set
algorithm computes a 2-approximation
for the minimum dominating set in a general undirected graph. It
transforms the input graph into a chordal structure and leverages the
approximate_dominating_set_chordal
algorithm, which is proven
to provide a 2-approximation for chordal graphs. This approach ensures
applicability to any graph while maintaining the approximation guarantee.
approximate_dominating_set_chordal
(Inner Algorithm)find_dominating_set
(Outer Algorithm)approximate_dominating_set_chordal
to the
chordal graph.
approximate_dominating_set_chordal
find_dominating_set
This $O(n^3)$ runtime reflects the current dense clique construction; optimizing the chordal transformation could potentially lower it to $O(n^2)$ or $O(nm)$.
Input: A Boolean Adjacency Matrix $M$.
Answer: Find a Minimum Dominating Set.
c1 | c2 | c3 | c4 | c5 | |
---|---|---|---|---|---|
r1 | 0 | 0 | 1 | 0 | 1 |
r2 | 0 | 0 | 0 | 1 | 0 |
r3 | 1 | 0 | 0 | 0 | 1 |
r4 | 0 | 1 | 0 | 0 | 0 |
r5 | 1 | 0 | 1 | 0 | 0 |
The input for undirected graph is typically provided in DIMACS format. In this way, the previous adjacency matrix is represented in a text file using the following string representation:
p edge 5 4
e 1 3
e 1 5
e 2 4
e 3 5
This represents a 5x5 matrix in DIMACS format such that each edge $(v,w)$ appears exactly once in the input file and is not repeated as $(w,v)$. In this format, every edge appears in the form of
e W V
where the fields W and V specify the endpoints of the edge while the
lower-case character e
signifies that this is an edge
descriptor line.
Example Solution:
Dominating Set Found 1, 2
: Nodes 1
and
2
constitute an optimal solution.
pip install capablanca
Clone the repository:
git clone https://github.com/frankvegadelgado/capablanca.git
cd capablanca
Run the script:
approx -i ./benchmarks/testMatrix1
utilizing the approx
command provided by Capablanca's
Library to execute the Boolean adjacency matrix
capablanca\benchmarks\testMatrix1
. The file
testMatrix1
represents the example described herein. We
also support .xz
, .lzma
, .bz2
,
and .bzip2
compressed text files.
Example Output:
testMatrix1: Dominating Set Found 1, 2
This indicates nodes 1, 2
form a Dominating Set.
Use the -c
flag to count the nodes in the Dominating Set:
approx -i ./benchmarks/testMatrix2 -c
Output:
testMatrix2: Dominating Set Size 2
Display help and options:
approx -h
Output:
usage: approx [-h] -i INPUTFILE [-a] [-b] [-c] [-v] [-l] [--version]
Find a 2-Approximate Dominating Set for undirected graph encoded in DIMACS format.
options:
-h, --help show this help message and exit
-i INPUTFILE, --inputFile INPUTFILE
input file path
-a, --approximation enable comparison with a polynomial-time approximation approach within a logarithmic factor
-b, --bruteForce enable comparison with the exponential-time brute-force approach
-c, --count calculate the size of the Dominating Set
-v, --verbose anable verbose output
-l, --log enable file logging
--version show program's version number and exit
Batch execution allows you to solve multiple graphs within a directory consecutively.
To view available command-line options for the
batch_approx
command, use the following in your terminal or
command prompt:
batch_approx -h
This will display the following help information:
usage: batch_approx [-h] -i INPUTDIRECTORY [-a] [-b] [-c] [-v] [-l] [--version]
Find a 2-Approximate Dominating Set for all undirected graphs encoded in DIMACS format and stored in a directory.
options:
-h, --help show this help message and exit
-i INPUTDIRECTORY, --inputDirectory INPUTDIRECTORY
Input directory path
-a, --approximation enable comparison with a polynomial-time approximation approach within a logarithmic factor
-b, --bruteForce enable comparison with the exponential-time brute-force approach
-c, --count calculate the size of the Dominating Set
-v, --verbose anable verbose output
-l, --log enable file logging
--version show program's version number and exit
A command-line utility named test_approx
is provided for
evaluating the Algorithm using randomly generated, large sparse matrices.
It supports the following options:
usage: test_approx [-h] -d DIMENSION [-n NUM_TESTS] [-s SPARSITY] [-a] [-b] [-c] [-w] [-v] [-l] [--version]
The Capablanca Testing Application using randomly generated, large sparse matrices.
options:
-h, --help show this help message and exit
-d DIMENSION, --dimension DIMENSION
an integer specifying the dimensions of the square matrices
-n NUM_TESTS, --num_tests NUM_TESTS
an integer specifying the number of tests to run
-s SPARSITY, --sparsity SPARSITY
sparsity of the matrices (0.0 for dense, close to 1.0 for very sparse)
-a, --approximation enable comparison with a polynomial-time approximation approach within a logarithmic factor
-b, --bruteForce enable comparison with the exponential-time brute-force approach
-c, --count calculate the size of the Dominating Set
-w, --write write the generated random matrix to a file in the current directory
-v, --verbose anable verbose output
-l, --log enable file logging
--version show program's version number and exit
+ We present a polynomial-time algorithm achieving a 2-approximation ratio for MDS, providing strong evidence that P = NP by efficiently solving a computationally hard problem with near-optimal solutions.