深度优先搜索邻接

时间:2017-05-13 03:11:08

标签: python dictionary search graph

检查有向图是否连接强烈的程序

我有一个defaultdict:

defaultdict(<class 'dict'>, {'SanFrancisco': {'Houston': '1000'},
 'LA': {'Ames': '300', 'SanFrancisco': True, 'Detroit': '200'}, 
'NYC': {'LA': '3000'}, 'Austin': {'Houston': '500'}}) 
# myDefaultDict = collections.defaultdict(dict)

包含所有不同字符串的集合:

{'Austin', 'LA', 'NYC', 'Ames', 'Detroit', 'Houston', 'SanFrancisco'}
# myNewSet

现在这是我的代码:

for i in myNewSet:
    break
    graph_DFT(i)

def graph_DFT(start):
    functionSet = set()
    myStack = []
    myStack.append(start)
    if not myStack:
        node = myStack.pop()
        # for neighbor in node's adjacent node
            #  if neighbor not visited - i.e. not in functionSet
                  # functionSet.add(neighbor)
                  # myStack.append(neighbor)

注意:我的defaultdict可以包含带有可选边权重的有向字符串。

那么如何检查相邻节点?说实话,我不是 100%确定我的示例中的相邻节点是什么。嵌套让我感到困惑。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

如果不放弃太多,我会解释一下。

你可以像这样迭代dict的键:

for k in mydict:
    ...

在你的例子中:

for neighbor in G[node]: # Assumes your defaultdict is `G`.
    ...

由于键是相邻的节点,因此您可以对它们进行操作。