1

因此,对于深度优先搜索,我在 Python 中有一个实现,如下所示:

def dfs(graph, current_vertex, target_value, visited=None):
  if visited is None:
    visited = []

  visited.append(current_vertex)

  if current_vertex == target_value:
    return visited


  for neighbor in graph[current_vertex]:
    if neighbor not in visited:
      path = dfs(graph, neighbor, target_value, visited)

      if path:
        return path


my_graph = {
    'lava': set(['sharks', 'piranhas']),
    'sharks': set(['lava', 'bees', 'lasers']),
    'piranhas': set(['lava', 'crocodiles']),
    'bees': set(['sharks']),
    'lasers': set(['sharks', 'crocodiles']),
    'crocodiles': set(['piranhas', 'lasers'])
  }

但是当我跑步时print(dfs(my_graph, "crocodiles", "bees")),有时我得到[‘crocodiles’, ‘piranhas’, ‘lava’, ‘sharks’, ‘lasers’, ‘bees’],有时我得到,有时[‘crocodiles’, ‘lasers’, ‘sharks’, ‘lava’, ‘piranhas’, ‘bees’]我得到:[‘crocodiles’, ‘piranhas’, ‘lava’, ‘sharks’, ‘bees’]。为什么同一个输入输出不同?这个实现是否正确?

4

2 回答 2

1
于 2019-03-28T03:02:02.803 回答
0

因为在 Python 中,集合没有特定的顺序。您可能想要使用列表而不是集合。

于 2019-03-28T02:39:35.463 回答