できるだけ多くの矢印が前を向くようにグラフを並べ替える
-
12-09-2019 - |
質問
(並べ替え順序に反して) 逆方向に流れる矢印の数が最小限になるように、有向グラフのノードを並べ替える必要があります。
アルゴリズムを考えることはできます (例:スワップを行わなくても状況が改善されるまでノードをスワップし続けます) が、どれくらいの速度で実行されるのか、最適なソリューションに到達するかどうかはわかりません。
この問題の名前と複雑さは何ですか?
他のヒント
深さの順にノードをソートするトポロジカルソートを用いて行うことができる。しかしを、こののみ何サイクルを含まないグラフで動作します。グラフ中のサイクルがあるようにあなたの問題が聞こえます。 1つのオプションは、実行の方法は、ウサギとカメのアルゴリズムを見る(サイクルを見つけることであろうあなたはそれを破ったところ、この)と記録、悪循環を断ち切ります。そして、ノードと再リンクを並べ替えます。
あなたは、可視化の目的のためにこれをやっている場合は、非常に何かをする GraphVizをに呼ばれるグラフの描画ライブラリがありますあなたが記述して、ノードをレイアウトしているものと同様。統合し、使用して画面または異なる出力フォーマットの様々なレンダリングされますしやすいです。
所属していません StackOverflow