示例#1
0
    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()
示例#2
0
    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()