2016-09-09 7 views
0

networkxの有向非循環グラフを使用しています。私は下の図のようなグラフを持っています。 enter image description hereDAGを指定すると、長さ3より短いパスに排他的に存在するノードを削除します。

私が本質的にやってみたいのは、長さが3未満のパスに排他的に接続されているすべてのノードをこのグラフから削除することです。たとえば、上のグラフではすべての青いノードを削除し、赤いもの。

これらのグラフは非常に大きくなる(最大10Kノードまで)ことができるということを念頭に置いて、これに最適なアルゴリズムは何でしょうか?

同様の質問hereは、バイナリツリーのみに焦点を当て、私の場合には適用されません。私はPython(networkx)でこれを達成することを好むでしょう。

ありがとうございます!

答えて

0
  1. 逆のちょうど高さマップである(デプスマップを生成
  2. (すべてのエッジが逆になっている)必要に応じて逆のグラフを生成する高さマップ(高さまでノードから辞書)
  3. を生成しますグラフ)
  4. ノード= [N HMAPかのノードにおけるnの[N] + DMAP [N]> = 3]

O(ノード+エッジ'S)

関連する問題