def manipulation(self, g): vd1 = g.add_vertex() vd2 = g.add_vertex() vd3 = g.add_vertex() vd4 = g.add_vertex() g.add_edge(vertex1=vd1, vertex2=vd2) g.add_edge(vertex1=vd1, vertex2=vd3) g.add_edge(vertex1=vd2, vertex2=vd4) visitor = bfs.distance_recording_visitor(start_vertex=vd1) bfs.breadth_first_search(graph=g, vertex=vd1, visitor=visitor) self.assertEqual(visitor.distance_for, { vd1: 0, vd2: 1, vd3: 1, vd4: 2 }) visitor2 = bfs.distance_recording_visitor(start_vertex=vd2) bfs.breadth_first_search(graph=g, vertex=vd2, visitor=visitor2) self.assertEqual(visitor2.distance_for, { vd1: 1, vd2: 0, vd3: 2, vd4: 1 })
def manipulation(self, g): vd1 = g.add_vertex() vd2 = g.add_vertex() vd3 = g.add_vertex() vd4 = g.add_vertex() g.add_edge( vertex1 = vd1, vertex2 = vd2 ) g.add_edge( vertex1 = vd1, vertex2 = vd3 ) g.add_edge( vertex1 = vd2, vertex2 = vd4 ) visitor = bfs.distance_recording_visitor( start_vertex = vd1 ) bfs.breadth_first_search( graph = g, vertex = vd1, visitor = visitor ) self.assertEqual( visitor.distance_for, { vd1: 0, vd2: 1, vd3: 1, vd4: 2 } ) visitor2 = bfs.distance_recording_visitor( start_vertex = vd2 ) bfs.breadth_first_search( graph = g, vertex = vd2, visitor = visitor2 ) self.assertEqual( visitor2.distance_for, { vd1: 1, vd2: 0, vd3: 2, vd4: 1 } )
def distances_from(self, atom): if atom not in self.descriptor_for: raise ValueError, "Unknown atom: %s" % atom from graph import breadth_first_search as bfs vertex = self.descriptor_for[atom] visitor = bfs.distance_recording_visitor(start_vertex=vertex) bfs.breadth_first_search( graph=self.graph, vertex=vertex, visitor=visitor, ) atom_for = self.atom_for return dict((atom_for[v], visitor.distance_for.get(v, None)) for v in self.descriptors)
def distances_from(self, atom): if atom not in self.descriptor_for: raise ValueError, "Unknown atom: %s" % atom from graph import breadth_first_search as bfs vertex = self.descriptor_for[ atom ] visitor = bfs.distance_recording_visitor( start_vertex = vertex ) bfs.breadth_first_search( graph = self.graph, vertex = vertex, visitor = visitor, ) atom_for = self.atom_for return dict( ( atom_for[ v ], visitor.distance_for.get( v, None ) ) for v in self.descriptors )