【发布时间】:2019-01-07 12:01:58
【问题描述】:
我在这里尝试分享我的深度优先搜索 (DFS) 实现。我正在尝试了解它如何在无向图中遍历,这意味着并非所有节点都组成一个图,而是两个不同的图。我一直在寻找只有一张图的 DFS 的小基础知识。我在中遇到了一个问题“如果有多个图并且没有连接会发生什么?” 所以我开始使用我从简单 DFS 中获得的知识来研究如何做到这一点执行。但是,它比我想象的要复杂一些。这是我遇到的代码示例:
"""DFS implemention."""
adjacency_matrix = {
1: [2, 3],
2: [4, 5],
3: [5],
4: [6],
5: [6],
6: [7],
7: [],
8: [9],
9: [8]
}
def DFS_un(graph):
"""Traversal for undirected graphs."""
vertices = graph[0]
edges = graph[1]
def visit(vertex):
if vertex in visited:
return
visited.add(vertex)
print(vertex)
if vertex in edges:
for e in edges[vertex]:
visit(e)
visited = {}
for v in vertices:
visit(v)
if __name__ == '__main__':
DFS_un(adjacency_matrix)
错误信息是这样写的:
Traceback (most recent call last):
File "dfs.py", line 33, in <module>
DFS_dis(adjacency_matrix)
File "dfs.py", line 17, in DFS_dis
vertices = graph[0]
KeyError: 0
如果您看到,我使用的是一张图,但它有无向数,即 8 和 9 (89)。为什么我没有正确获得输出?抱歉,也学习了一些 Python3 :)。感谢您的帮助!
【问题讨论】:
-
vertices = graph[0]是缩进错误,也指缺少键。
标签: python-3.x search graph microsoft-distributed-file-system undirected-graph