示例#1
0
def shortest_path(source, target):
    solution = []

    # Initialize frontier to just the starting position
    start = Node(parent=None, star_id=source, movie_id=None)
    queue = Queue()
    queue.add(start)

    # Initialize an empty explored set
    explored = set()

    while True:
        node = queue.remove()

        if node.star_id == target:
            while node.parent is not None and node.movie_id is not None:
                solution.append([node.movie_id, node.star_id])
                node = node.parent
            solution.reverse()
            return solution

        explored.add(node.movie_id)
        for actor in neighbors_for_person(node.star_id):
            if (actor[0] not in explored):
                child = Node(star_id=actor[1], movie_id=actor[0], parent=node)
                queue.add(child)