def bfs(self, starting_vertex, destination_vertex): """ Return a list containing the shortest path from starting_vertex to destination_vertex in breath-first order. """ print("# BFS") q = Queue() self.visited = {1} q.enqueue([starting_vertex]) while len(q) != 0: path = q.dequeue() if path[-1] == destination_vertex: return path to_visit: set = self.get_neighbors(path[-1]) new_q = [path + [n] for n in to_visit] q.multi_enqueue(new_q) self.visited = self.visited.union(to_visit) self.visited = set() print()
def bft(self, starting_vertex): """ Print each vertex in breadth-first order beginning from starting_vertex. """ q = Queue() self.visited = {starting_vertex} q.enqueue(starting_vertex) while len(q) != 0: node = q.dequeue() print(node) to_visit: set = self.get_neighbors(node) q.multi_enqueue(to_visit) self.visited = self.visited.union(to_visit) self.visited = set() print()