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)