質問

(並べ替え順序に反して) 逆方向に流れる矢印の数が最小限になるように、有向グラフのノードを並べ替える必要があります。

アルゴリズムを考えることはできます (例:スワップを行わなくても状況が改善されるまでノードをスワップし続けます) が、どれくらいの速度で実行されるのか、最適なソリューションに到達するかどうかはわかりません。

この問題の名前と複雑さは何ですか?

役に立ちましたか?

解決 2

少し考えた結果、問題は 2 つに分けられることがわかりました。

  1. グラフの最大の非巡回部分グラフを決定します (これは NPは難しい)
  2. それをトポロジカルに並べ替えます (つまり、 ずっと簡単です)

他のヒント

深さの順にノードをソートするトポロジカルソートを用いて行うことができる。しかしを、こののみ何サイクルを含まないグラフで動作します。グラフ中のサイクルがあるようにあなたの問題が聞こえます。 1つのオプションは、実行の方法は、ウサギとカメのアルゴリズムを見る(サイクルを見つけることであろうあなたはそれを破ったところ、この)と記録、悪循環を断ち切ります。そして、ノードと再リンクを並べ替えます。

あなたは、可視化の目的のためにこれをやっている場合は、

非常に何かをする GraphVizをに呼ばれるグラフの描画ライブラリがありますあなたが記述して、ノードをレイアウトしているものと同様。統合し、使用して画面または異なる出力フォーマットの様々なレンダリングされますしやすいです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top