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)
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)
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())
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())
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())
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)
#!/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
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()