グラフをレイアウトする際のエッジ オーバーラップの最小化手法にはどのようなものがありますか? (できればGraphVizに関連しています)また、グラフを平面的にレイアウトできる既存のソフトウェアはありますか?
現在のレイアウト - http://www.evecakes.com/doodles/master.gif
左上隅のピンク色のセクションはきれいに見えますが、水色のセクションには回避可能なエッジ オーバーラップがあります。
グラフをレイアウトする際のエッジ オーバーラップの最小化手法にはどのようなものがありますか? (できればGraphVizに関連しています)また、グラフを平面的にレイアウトできる既存のソフトウェアはありますか?
現在のレイアウト - http://www.evecakes.com/doodles/master.gif
左上隅のピンク色のセクションはきれいに見えますが、水色のセクションには回避可能なエッジ オーバーラップがあります。
一般的なグラフの場合、エッジの交差が最小のグラフの平面レイアウト (交差数) を決定する問題は NP 困難です。したがって、いくつかのヒューリスティックな方法が使用されます ( Force ベースのレイアウトアルゴリズムなど)。
以下のページでは、graphviz アルゴリズムについて簡単に説明し、利点を得るためにそれらを使用するいくつかの方法を提案しています。また、アルゴリズムに関する詳細情報を含む PDF へのリンクもあります。
http://rss.acs.unt.edu/Rdoc/library/Rgraphviz/html/GraphvizLayouts.html
それが役立つことを願っています。
次のオープン ソース Java ライブラリには、平面グラフのレイアウトに役立つアルゴリズムがいくつか含まれています。 https://github.com/trickl/trickl-graph
特に、次のクラスは問題に対する分析ソリューションを提供します。
ChrobakPayneLayout (Aaron Windsor による Boost C++ 実装に基づく) http://www.boost.org/doc/libs/1_37_0/libs/graph/doc/straight_line_drawing.html
FoldFreeLayout (センサー ネットワークでのアンカーフリー分散ローカリゼーションに基づく)
あなたがやりたいことは、見栄えが悪いかもしれませんが、オーバーラップしないことを保証する最初の「試み」としてこのようなものを使用することです. 次に、強制指向アルゴリズムを適用して、ノードをより公平に配置できます。
残念ながら、ライブラリはリリースされたばかりなので、ドキュメントが不足しています。ただし、単なる理論ではなく、実際のコードを提供することで役立つ場合があります。