Example #1
0
 def test_wheel(self):
     G = self.graph_factory.make_wheel(n=self.N, directed=False)
     self.assertFalse(G.is_directed())
     self.assertEqual(G.v(), self.N)
     self.assertEqual(G.e(), 2 * self.N - 2)
     self.assertTrue(is_wheel(G))
     self.assertRaises(ValueError, self.graph_factory.make_wheel, 1)
     self.assertRaises(ValueError, self.graph_factory.make_wheel, 2)
     self.assertRaises(ValueError, self.graph_factory.make_wheel, 3)
Example #2
0
 def test_wheel_true(self):
     v = 10
     G = Graph(v, False)
     for node in range(v):
         G.add_node(node)
     hub = 0
     for node in range(1, v):
         G.add_edge(Edge(hub, node))
         G.add_edge(Edge(node, node+1 if node < v-1 else 1))
     self.assertTrue(is_wheel(G))
     algorithm = WheelGraph(G)
     algorithm.run()
     self.assertEqual(algorithm.hub, hub)
 def test_wheel(self):
     G = self.graph_factory.make_wheel(n=self.N, directed=False)
     self.assertFalse(G.is_directed())
     self.assertEqual(G.v(), self.N)
     self.assertEqual(G.e(), 2 * self.N - 2)
     self.assertTrue(is_wheel(G))
     faces = list(G.iterfaces())
     self.assertEqual(G.f(), self.N)
     self.assertEqual(len(faces), self.N)
     #print "faces", faces
     self.assertRaises(ValueError, self.graph_factory.make_wheel, 1)
     self.assertRaises(ValueError, self.graph_factory.make_wheel, 2)
     self.assertRaises(ValueError, self.graph_factory.make_wheel, 3)
 def test_wheel(self):
     G = self.graph_factory.make_wheel(n=self.N)
     self.assertFalse(G.is_directed())
     self.assertEqual(G.v(), self.N)
     self.assertEqual(G.e(), 2 * self.N - 2)
     self.assertTrue(is_wheel(G))
     faces = list(G.iterfaces())
     self.assertEqual(G.f(), self.N)
     self.assertEqual(len(faces), self.N)
     #print "faces", faces
     self.assertRaises(ValueError, self.graph_factory.make_wheel, 1)
     self.assertRaises(ValueError, self.graph_factory.make_wheel, 2)
     self.assertRaises(ValueError, self.graph_factory.make_wheel, 3)
Example #5
0
 def test_wheel_false2(self):
     # 1---2   missing Edge(0, 3) or Edge(1, 3)
     # |\ /|
     # | 0 |
     # |/  |
     # 4---3
     v = 5
     G = Graph(v, False)
     for node in range(v):
         G.add_node(node)
     edges = [
         Edge(0, 1), Edge(0, 2), Edge(0, 4), 
         Edge(1, 2), Edge(2, 3), Edge(3, 4), Edge(1, 4)]
     for edge in edges:
         G.add_edge(edge)
     G.add_edge(Edge(2, 4))   # bad edge
     self.assertFalse(is_wheel(G))
     self.assertRaises(ValueError, lambda: WheelGraph(G).run())
Example #6
0
 def test_wheel_false(self):
     # 0---+   +---5   windmill graph
     # |\   \ /   /|   https://en.wikipedia.org/wiki/Windmill_graph
     # | 1---3---4 |
     # |/   / \   \|
     # 2---+   +---6
     v = 7
     G = Graph(v, False)
     for node in range(v):
         G.add_node(node)
     edges = [
         Edge(0, 1), Edge(1, 2), Edge(0, 2), Edge(4, 5), 
         Edge(5, 6), Edge(4, 6), Edge(0, 3), Edge(1, 3), 
         Edge(2, 3), Edge(3, 5), Edge(3, 4), Edge(3, 6)]
     for edge in edges:
         G.add_edge(edge)
     self.assertFalse(is_wheel(G))
     self.assertRaises(ValueError, lambda: WheelGraph(G).run())
Example #7
0
 def test_is_wheel(self):
     G = self.graph_factory.make_complete(n=3, directed=False)
     self.assertFalse(is_wheel(G))
     self.assertRaises(ValueError, lambda: WheelGraph(G).run())
Example #8
0
 def test_k4(self):    # complete graph K4 = W4
     G = self.graph_factory.make_complete(n=4, directed=False)
     self.assertTrue(is_wheel(G))
     algorithm = WheelGraph(G)
     algorithm.run()
     self.assertEqual(algorithm.hub, 0)
Example #9
0
#!/usr/bin/python

from graphtheory.structures.edges import Edge
from graphtheory.structures.graphs import Graph
from graphtheory.structures.factory import GraphFactory
from graphtheory.planarity.halin import HalinGraph
from graphtheory.planarity.wheels import is_wheel

V = 10
graph_factory = GraphFactory(Graph)
#G = graph_factory.make_prism(size=3)   # V=2*size=6
#G = graph_factory.make_complete(n=4)   # V=4
#G = graph_factory.make_wheel(n=V)   # V > 3
G = graph_factory.make_necklace(n=V)   # V even
G.show()

print ( "Recognition ..." )
print ( "is_wheel {}".format( is_wheel(G) ))
algorithm = HalinGraph(G)
algorithm.run()
print ( "outer {}".format( algorithm.outer ))
outer = algorithm.outer
#assert outer == set(range(1,V))   # wheel
assert outer == set(range(0,V,2)) | set([V-1])   # necklace

# EOF
Example #10
0
from graphtheory.planarity.halinnodecolor import HalinNodeColoring
from graphtheory.planarity.halintools import make_halin
from graphtheory.planarity.halintools import make_halin_cubic
from graphtheory.planarity.wheels import is_wheel

graph_factory = GraphFactory(Graph)
#G = graph_factory.make_prism(size=3)   # V=2*size=6
#G = graph_factory.make_complete(n=4)   # V=4
#G = graph_factory.make_wheel(n=5)   # V > 3
G = graph_factory.make_necklace(n=6)  # V even
#G = make_halin(n=7)    # V > 3
#G = make_halin_cubic(n=8)   # V even
G.show()

print("Recognition ...")
print("is_wheel {}".format(is_wheel(G)))
algorithm = HalinGraph(G)
algorithm.run()
print("outer {}".format(algorithm.outer))
outer = algorithm.outer

print("Vertex coloring ...")
algorithm = HalinNodeColoring(G, outer)
algorithm.run()
print("parent {}".format(algorithm.parent))
assert len(algorithm.parent) == G.v()
print("color {}".format(algorithm.color))
all_colors = set(algorithm.color[node] for node in G.iternodes())
print("len(all_colors) {}".format(len(all_colors)))
assert len(algorithm.color) == G.v()