Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 深度优先搜索空集错误_Python_Dictionary_Collections_Set_Graph Theory - Fatal编程技术网

Python 深度优先搜索空集错误

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)

我正在制作一个程序来确定一个有向图是否是强连通的。图形由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):
    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: