2016-07-06 3 views
0

私は有向グラフを持っています。 (正確に)始まりと終わりが1つ。私はそれらの頂点を見つける必要があります可能なパスの最初から最後まで訪問します。すべてのパスが訪問するすべての頂点を見つける

ゆっくりとしたアプローチは、私が訪れるすべての頂点を+1し、すべての可能なパスを通り抜けることです。開始点(または終了点)と同じ合計訪問数を持つすべての頂点は、私が探している頂点です。

私が書いているコンパイラで最適化を知る必要があります。私は、すべてのコントロールフローパスがマージする場所を知りたい。

誰かが私にそのようなアルゴリズムの正しい名前を教えてもらえれば、それはすでに役に立ちます。 (私のグラフ理論の知識はあまり良くないので)

+0

出口ノードを支配するすべてのノードを検索します。ドミネーション分析はよく知られており、簡単なアルゴリズムです。 https://en.wikipedia.org/wiki/Dominator_(graph_theory) –

+0

ありがとうございます。それが私が探していた名前です! –

答えて

0

私はそれが実際には非常に簡単だと分かりました。 私が持っているグラフは、すでにトポロジカルにソートされています。私はそれを(ソートして)旅行し、すべての「ブランチアウト」をリストに追加します。すべての頂点で、この頂点に来るすべての「分岐アウト」を最初に削除します。それ以上分岐アウトがない場合、この頂点はすべてのパスで参照されます。

関連する問題