2

同じ階層を描画する2つの異なる方法があります。 「スタックされた」レイアウトでは、ノードは常に、最も高い「子」ノードよりも1つ上のレイヤーです。 (重要別例えば、質問の下部にある編集を参照してください)"積み重なった"対 "ぶら下がった"層グラフ描画アルゴリズムの標準的な名前は?

two different ways of visualising the same graph

層状の描画メソッドこれらの2つのタイプの操作を行い、特定の名前を持っていますか?私は "積み重なった"ものの既存のアルゴリズムを見つけようとしていますが、何が呼び出されたのかわからないので、何らかの情報を出すようには見えません。

彼らは、同じアルゴリズムに依存しているだけでなく、既存のアルゴリズムを持つグラフの「スタック」バージョンを達成するためのパラメータの既知のセットがあるので、それらを区別するために名前を持っていない場合は?ありがとう!

編集:上記のグラフは「trees」厳しいですが、私が探しているアルゴリズムは、ノードが複数の親を持つケースを扱うことができるはずですし、ルートから複数の経路がある場合葉に。 Here's an exampleおよびhere's anotherである。

EDIT2:それは誰にも有用だ場合、事前計算ノード層(y軸contraints)とハック(および低速)力指向アプローチは、すべての権利を動作するように思われます。 Here's what it looks like。この例では、cytoscape.jsとcola.jsを使用しています。逆さまです。この質問に対する解決策ではありませんので、私はこれを編集としてここに入れています。

(SO wouldn't let me submit the JSBin link without a code block...) 
+0

私はそれを正しく理解していれば、各ノードのy位置に子ノードの*最大*の深さに依存左?定義上、リーフノードはy = 0となるように?それは基本的にあなたのアルゴリズムです。 – MSalters

+0

まあまあです。どちらもノードの深さについて非常に単純なルールを持っています。つまり、リーフノードをアンカーし、ルートノードをアンカーするという点で反対です。私は交差を最小限にするロジックが少し違うと思いますが、私が使用するためにすでにそこに実装されていることを望んでいると思っているので、あまりにも難しくは考えていません。 – JoeRocc

+0

Crossings?ツリーは平面グラフです。そうでなければ、それは非周期的です。したがって、ゼロ交差。トリビュア:任意の有限木にはノードあたりN個の子供の上限Nと有限深度Dがあります。したがって、各木は深さDの完全N分木の部分集合であり、交差することなく簡単に描けます。 – MSalters

答えて

1

私は上記の特定の名前について知らない。どちらの場合も、階層化アルゴリズムは、高さを最小限に抑えながら本質的に幅を無視するlongest path algorithmであるようです。あなたはボトムアップからグラフを層と、グラフは、多くのシンク(アウト度ゼロの頂点)を持っているなら、あなたは広い最下層取得します(「スタック」レイアウトを?)。あなたはトップダウンからグラフを層と、それは多くのソース(中度ゼロの頂点)を持っているなら、あなたは広いトップ層(「ハング」レイアウトを?)を取得します。

関連する問題