def init_graph_mfriend(k): jfile = mfriend(k) vertices = [Vertex(j.name) for j in jfile] edges = [] for j in jfile: for u in vertices: if j.name == u.name: for f in j.friend_list: for v in vertices: if v.name == f: uv = Edge((u, v), directed=False) edges.append(uv) for e in edges: if (uv.source.name, uv.target.name) == ( e.source.name, e.target.name) or ( uv.target.name, uv.source.name) == (e.source.name, e.target.name): pass graph = Graph() init_graph(graph, vertices, edges) return graph
def add_edge(vertices, canvas, graph): """ Adds connection between vertices after dragging by left button on mouse Creates Edge object, saves it to Graph and draws it Returns (ID of new edge, new Edge object) Parameters: vertices - tuple of Vertex class instances to be connected canvas - tkinter.Canvas object graph - instance of Graph class """ vertex1, vertex2 = vertices if vertex1 is not None and vertex2 is not None: edge = Edge((vertex1, vertex2), graph=graph) graph = graph + edge graph.set_focus(edge) index = draw_edge(canvas, edge) return index, edge else: return None
def init_graph_toy_clique_problem(): name = 'abcdef' vertices = [Vertex(n) for n in name] e1 = Edge((vertices[0], vertices[1]), directed=False) e2 = Edge((vertices[1], vertices[2]), directed=False) e3 = Edge((vertices[2], vertices[3]), directed=False) e4 = Edge((vertices[3], vertices[0]), directed=False) e5 = Edge((vertices[0], vertices[4]), directed=False) e6 = Edge((vertices[4], vertices[5]), directed=False) e7 = Edge((vertices[5], vertices[0]), directed=False) graph = Graph() edges = [e1, e2, e3, e4, e5, e6, e7] init_graph(graph, vertices, edges) return graph
def init_graph_johnson(): w = Vertex('w') x = Vertex('x') y = Vertex('y') z = Vertex('z') e1 = Edge((w, z), weight=2) e2 = Edge((z, x), weight=-7) e3 = Edge((x, w), weight=6) e4 = Edge((x, y), weight=3) e5 = Edge((y, z), weight=5) e6 = Edge((z, y), weight=-3) e7 = Edge((y, w), weight=4) graph = Graph() vertices = [w, x, y, z] edges = [e1, e2, e3, e4, e5, e6, e7] init_graph(graph, vertices, edges) return graph
def setUp(self): self.node1 = Node('node_one') self.node2 = Node('node_two') self.edge = Edge(self.node1, self.node2)
"""Exercise 2: Get all unique nodes using a Graph class (2 way Digraph Class) The below code is set to test our understanding of what is a unique node, knowing that the Graph class sets to Edge classes in a two way fashion (bi-directional). Run the following code by running the file with `python exercise_2_graphs.py` """ from graph_class import Node, Graph, Edge nodes = [] nodes.append(Node("ABC")) # nodes[0] nodes.append(Node("ACB")) # nodes[1] nodes.append(Node("BAC")) # nodes[2] nodes.append(Node("BCA")) # nodes[3] nodes.append(Node("CAB")) # nodes[4] nodes.append(Node("CBA")) # nodes[5] g = Graph() for n in nodes: g.addNode(n) g.addEdge(Edge(g.getNode('ABC'), g.getNode('ACB'))) g.addEdge(Edge(g.getNode('ABC'), g.getNode('BAC'))) g.addEdge(Edge(g.getNode('ACB'), g.getNode('CAB'))) g.addEdge(Edge(g.getNode('BAC'), g.getNode('BCA'))) g.addEdge(Edge(g.getNode('BCA'), g.getNode('CBA'))) g.addEdge(Edge(g.getNode('CAB'), g.getNode('CBA'))) if __name__ == "__main__": print(g)