回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>对于深度优先搜索,我有一个Python实现,如下所示:</p>
<pre class="lang-py prettyprint-override"><code>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'])
}
</code></pre>
<p>但是当我运行<code>print(dfs(my_graph, "crocodiles", "bees"))</code>时,有时我得到<code>[‘crocodiles’, ‘piranhas’, ‘lava’, ‘sharks’, ‘lasers’, ‘bees’]</code>,有时我得到<code>[‘crocodiles’, ‘lasers’, ‘sharks’, ‘lava’, ‘piranhas’, ‘bees’]</code>,有时我得到:<code>[‘crocodiles’, ‘piranhas’, ‘lava’, ‘sharks’, ‘bees’]</code>。为什么同一输入的输出不同?这个实现是否正确?你知道吗</p>