【发布时间】:2017-10-07 07:05:14
【问题描述】:
我不断看到深度优先搜索的伪代码,它与我的具体问题的关系完全让我感到困惑。我正在尝试确定“有向图”是否是强连接的。
如果我有一个包含 2 个字符串(第一个表示源,第二个表示目标)和一个表示边缘权重的可选数字的 dict:
{'Austin': {'Houston': 300}, 'SanFrancisco': {'Albany': 1000}, 'NewYorkCity': { 'SanDiego': True }}
如何实现 DFS 的一些元素?我知道我可以从顶点“Austin”开始,而“Houston”是另一个顶点。但我看不出这在 Python 代码中是如何工作的
就像我有这个伪代码:
function graph_DFS(start):
# Input: start vertex
S = new Stack()
# Mark start as visited
S.push(start)
while S is not empty:
node = S.pop()
# Do something? (e.g. print)
for neighbor in node’s adjacent nodes:
if neighbor not visited:
# Mark neighbor as visited
S.push(neighbor)
我可以看到我可以通过“奥斯汀”作为我的开始。但是我到底如何将“奥斯汀”设置为已访问,以及如何查看与“奥斯汀”相邻的节点?
另外,如果图是强连接的,我什至如何使用这个算法来返回真或假?
我很难看到这种从伪代码到代码的转移。感谢任何帮助。
【问题讨论】:
-
您的数据结构不适合实现一般图,因为它不允许从一个顶点有多个边。 dict 值应该是目的地的列表。
标签: python algorithm search graph depth-first-search