Example #1
0
 def __init__(self, graph):
     """The algorithm initialization."""
     if graph.is_directed():
         raise ValueError("the graph is directed")
     self.graph = graph
     self.hamiltonian_cycle = list()
     self._uf = UnionFind()
     self._pq = PriorityQueue()
Example #2
0
 def __init__(self, graph):
     """The algorithm initialization."""
     if graph.is_directed():
         raise ValueError("the graph is directed")
     self.graph = graph
     self.hamiltonian_cycle = self.graph.__class__(self.graph.v())
     for node in self.graph.iternodes():
         self.hamiltonian_cycle.add_node(node)
     self._uf = UnionFind()
     self._pq = PriorityQueue()
Example #3
0
 def __init__(self, graph):
     """The algorithm initialization.
     
     Parameters
     ----------
     graph : undirected weighted graph or multigraph
     """
     if graph.is_directed():
         raise ValueError("the graph is directed")
     self.graph = graph
     self.mst = self.graph.__class__(self.graph.v())
     for node in self.graph.iternodes():  # isolated nodes are possible
         self.mst.add_node(node)
     self._uf = UnionFind()
Example #4
0
 def test_unionfind(self):
     algorithm = UnionFind()
     for node in range(10):
         algorithm.create(node)
     pairs = [(0, 1), (2, 3), (4, 5), (6, 7), (8, 9), (3, 1)]
     for a, b in pairs:
         algorithm.union(a, b)
     self.assertTrue(algorithm.find(1) == algorithm.find(2))
     self.assertTrue(algorithm.find(7) != algorithm.find(9))
     pairs = [(7, 5), (3, 7), (8, 7)]
     for a, b in pairs:
         algorithm.union(a, b)
     self.assertTrue(algorithm.find(0) == algorithm.find(6))
     self.assertTrue(algorithm.find(1) == algorithm.find(9))