2017-04-23 37 views
0

グラフのサイクル数を求めなければなりません。グラフのサイクル数を見つける(Python)

Iは、以下の構造を有する相互に接続されたノードのセットを有する:

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

Iグラフを正常に作成されており、それは収束点である場合のフィールドdivergencePointと convergencePointが1に設定されています発散点である。

どうすればサイクルを検出できますか?

+0

もっと正確になりますか。どのようにダイヤモンドを定義しますか? – mchristos

+0

私はダイヤモンドをもっと見る。あなたのダイヤモンドの定義は何ですか? – frederick99

+0

この場合、発散点はAとDであり、収束点はDとEですか? –

答えて

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 
関連する問題