64 lines
2.0 KiB
Python
64 lines
2.0 KiB
Python
|
# -*- coding: utf-8 -*-
|
|||
|
r"""
|
|||
|
Independent Set
|
|||
|
|
|||
|
Independent set or stable set is a set of vertices in a graph, no two of
|
|||
|
which are adjacent. That is, it is a set I of vertices such that for every
|
|||
|
two vertices in I, there is no edge connecting the two. Equivalently, each
|
|||
|
edge in the graph has at most one endpoint in I. The size of an independent
|
|||
|
set is the number of vertices it contains.
|
|||
|
|
|||
|
A maximum independent set is a largest independent set for a given graph G
|
|||
|
and its size is denoted $\alpha(G)$. The problem of finding such a set is called
|
|||
|
the maximum independent set problem and is an NP-hard optimization problem.
|
|||
|
As such, it is unlikely that there exists an efficient algorithm for finding
|
|||
|
a maximum independent set of a graph.
|
|||
|
|
|||
|
`Wikipedia: Independent set <https://en.wikipedia.org/wiki/Independent_set_(graph_theory)>`_
|
|||
|
|
|||
|
Independent set algorithm is based on the following paper:
|
|||
|
|
|||
|
$O(|V|/(log|V|)^2)$ apx of maximum clique/independent set.
|
|||
|
|
|||
|
Boppana, R., & Halldórsson, M. M. (1992).
|
|||
|
Approximating maximum independent sets by excluding subgraphs.
|
|||
|
BIT Numerical Mathematics, 32(2), 180–196. Springer.
|
|||
|
doi:10.1007/BF01994876
|
|||
|
|
|||
|
"""
|
|||
|
# Copyright (C) 2011-2012 by
|
|||
|
# Nicholas Mancuso <nick.mancuso@gmail.com>
|
|||
|
# All rights reserved.
|
|||
|
# BSD license.
|
|||
|
from networkx.algorithms.approximation import clique_removal
|
|||
|
__all__ = ["maximum_independent_set"]
|
|||
|
__author__ = """Nicholas Mancuso (nick.mancuso@gmail.com)"""
|
|||
|
|
|||
|
|
|||
|
def maximum_independent_set(G):
|
|||
|
"""Returns an approximate maximum independent set.
|
|||
|
|
|||
|
Parameters
|
|||
|
----------
|
|||
|
G : NetworkX graph
|
|||
|
Undirected graph
|
|||
|
|
|||
|
Returns
|
|||
|
-------
|
|||
|
iset : Set
|
|||
|
The apx-maximum independent set
|
|||
|
|
|||
|
Notes
|
|||
|
-----
|
|||
|
Finds the $O(|V|/(log|V|)^2)$ apx of independent set in the worst case.
|
|||
|
|
|||
|
|
|||
|
References
|
|||
|
----------
|
|||
|
.. [1] Boppana, R., & Halldórsson, M. M. (1992).
|
|||
|
Approximating maximum independent sets by excluding subgraphs.
|
|||
|
BIT Numerical Mathematics, 32(2), 180–196. Springer.
|
|||
|
"""
|
|||
|
iset, _ = clique_removal(G)
|
|||
|
return iset
|