次の意味で、ほぼツリーである有向非巡回グラフのコレクションがあります。各グラフにはルートがあり、頂点は、v 1とv 2が頂点である場合、v 1のレベルがv 2のレベルよりも小さい場合、グラフにはv 2からv 1へのエッジはありませんが、 v 1からは多くのエッジが存在する可能性があります。同じレベルまたはそれ以上のレベルの頂点に。たとえば、式ツリー、関数呼び出しグラフ、または線形クラス階層は、そのようなグラフの例です。このようなグラフの例を次に示します。
A1
/ \ A1 -> A4, A3
/ \ A3 -> A2, A6, A7
A4 A2--A3 A2 -> A6
| \ / \
A6 \_ A7
グラフ描画アルゴリズムは数多くありますが、この状況に最適なアルゴリズムを判断することはできません。一部の予備調査では、ハッセ図を描画するためのアルゴリズムが適切である可能性があることが示されていますが、そのようなアルゴリズムの出力は、私がモデル化しようとしているデータ構造のタイプに対応していないようです。階層データをモデル化するためのアルゴリズムもいくつかありますが、どれが実装の容易さと効率のバランスを取るかはわかりません。前者のアプローチの問題点の 1 つは、これらのグラフにルートと方向があることです。可能であれば、アルゴリズムは巡回グラフをサポートし、数値計算の数を最小限に抑えますが、これは必須ではありません。これらの理由から、力指向のアルゴリズムは避けたいと思います。ドット。