在图中查找循环数(Python)

时间:2017-04-23 10:36:57

标签: python algorithm graph

我必须在图表中找到周期数。

我有一组相互连接的节点,它们具有以下结构:

class Node:
   def __init__(self, id, value):
     self.divergencePoint = 0
     self.convergencePoint = 0
     self.id = id
     self.value = value
     self.parents = []
     self.children = []

我已经成功创建了图形和字段divergencePoint和 如果converPoint是收敛点或发散点,则converset设置为1。

现在我该如何检测周期?

1 个答案:

答案 0 :(得分:0)

由于您已经找到了收敛点和发散点,因此这是一项简单的任务。您从分歧点开始,递归地将其子项添加到钻石中,直到遇到收敛点。

for node in divergence_nodes:
    diamond= {node}
    queue= node.children[:]

    while queue:
        node= queue.pop()
        if node in diamond:
            continue

        diamond.add(node)

        if not node.convergencePoint:
            queue+= node.children