0

有向グラフとそのいくつかのノードが与えられた場合、指定されたノードのいずれにも到達できないノードをプルーニングする方法。(私はそれをリーフコンポーネントと呼んでいますが、これが正しい用語かどうかはわかりません)

これを効率的に解決する既知のアルゴリズムはありますか?

そのためのJavaオープンソースコードをいくつか指摘していただければ完璧です。

ありがとう。

4

2 に答える 2

2

指定された一連のノードから開始して幅優先検索または深さ優先検索を開始し、検索が通過するすべてのノードをマークします。その後、マークされていないすべてのノードは、指定されたノードのセットから到達できず、プルーニングできます。nが頂点の数でmがエッジの数である場合、これはO(n + m)の問題を解決します。

個人的には、JVM/Java/Scala でグラフを処理するためのメイン ライブラリとして、Tinkerpop Blueprintsを好みます。

于 2012-10-07T16:50:59.290 に答える
0

私の理解が正しければ、 Strongly Connected Componentsを見つける必要があります。これは、深さ優先検索を 2 回実行することで O(n + m) 時間で見つけることができます。

于 2012-10-07T16:55:56.413 に答える