Python 深度优先搜索空集错误
我正在制作一个程序来确定一个有向图是否是强连通的。图形由2个字符串组成,1个指向另一个字符串,以及可选的数字边权重(如果没有数字,则默认为True) 我有一个默认的dict(dict): 然后我有一组字符串:Python 深度优先搜索空集错误,python,dictionary,collections,set,graph-theory,Python,Dictionary,Collections,Set,Graph Theory,我正在制作一个程序来确定一个有向图是否是强连通的。图形由2个字符串组成,1个指向另一个字符串,以及可选的数字边权重(如果没有数字,则默认为True) 我有一个默认的dict(dict): 然后我有一组字符串: myNewSet = {'D', 'E', 'C', 'A', 'B'} 然后调用深度优先搜索函数: for i in myNewSet: newSet = graph_DFT(i) print(newSet) break def graph_DFT(start)
myNewSet = {'D', 'E', 'C', 'A', 'B'}
然后调用深度优先搜索函数:
for i in myNewSet:
newSet = graph_DFT(i)
print(newSet)
break
def graph_DFT(start):
functionSet = set() # Contains all visited nodes
myStack = []
myStack.append(start)
if not myStack:
node = myStack.pop()
for neighbor in myDefaultDict[node]:
if neighbor not in functionSet:
functionSet.add(neighbor)
myStack.append(neighbor)
return functionSet # Return the set with the visited nodes
问题在于打印(新闻集)
。这个示例图是强连通的。也就是说,可以从一个顶点到达每个顶点。但是打印(新闻集)
显示:
set() # But it should be equal to myNewSet, because this is a strongly connected graph
为什么我的newSet
是空的?它不应该等于myNewSet?我需要它,因为这取决于我如何处理程序的其余部分,所以我可能在我的graph_DFT函数中出错了。
谢谢你的帮助 正如@MosesKoledoye所指出的: 我只是改变一下:
if not myStack:
到
if not myStack
永远不为True
,正如您在前一行的列表中所附加的那样,我认为这意味着,而myStack不为空。如果不是,我该怎么做呢?而myStack:…
@MosesKoledoye我把它改成了那样,但得到了相同的结果。你应该使用一种方法。还要注意的是,图形不是强连接的,因为您无法从E
if not myStack:
while myStack: