Python计算有向图节点的入度和出度

2016-12-15 董付国 Python小屋 Python小屋

本文代码使用字典和集合模拟有向图结构,也可以改用其他的数据类型来实现。

def getDegrees(orientedGraph, node):

    #出度

    outDegree = len(orientedGraph.get(node, []))

    #入度

    inDegree = sum(1 for v in orientedGraph.values() if node in v)

    return (inDegree, outDegree)


#模拟有向图

graph = {'a':set('bcdef'),

              'b':set('ce'),

               'c':set('d'),

              'd':set('e'),

               'e':set('f'),

               'f':set('cgh'),

               'g':set('fhi'),

              'h':set('fgi'),

               'i':set()}


#查看结果

print(getDegrees(graph, 'h'))


上面代码对应的有向图结构如下图所示。