(言語アプリケーションの)混合した支持体/依存関係グラフを描画するアルゴリズムを探しています。このようなグラフには、2種類の頂点(トークン、ノード)と2種類のエッジ(階層型、非階層型)があります。
私は一般にグラフ理論とアルゴリズムに慣れていないので、この質問がこのサイトの研究レベルの要件などと衝突しないことを願っています。ただし、一般的にはcstheoryの範囲内である必要があります。
すべてのトークンは同じy座標で表示される必要があり、トークンをグループ化するノードやノードを構成要素にグループ化するy座標を動的に計算する必要があるため、グラフはボトムアップで描画する必要があります(私はそう思います)。たとえば、トークンへの最長パスを介して。
階層的なエッジ(トークン/ノードを構成要素にグループ化するために使用)には、最小数のベンドポイント(理想的には0)が必要ですが、交差の数も最小である必要があり、必要に応じて前の要件を上書きします。
非階層エッジ(依存関係に使用)には、最小数の交差があり、ベジェ曲線として描画される必要があります。
私が遭遇した次善の事は、ブッフハイム等によって記述されたアルゴリズムです。、ウォーカーのアルゴリズムを線形時間で実行するように改善しました。
私の質問を改善する必要がある場合は、私に知らせてください。ポインタについては、事前に感謝します。
編集:
コメントで指摘したように、基本的にはアルゴリズムによるデフォルトのグラフレイアウトが必要であり、長期的にはEclipse GEFの可能性の範囲内で編集および修正する必要があることを述べておきます。以前にGraphvizをGEFで動作させるためのオプションを検討しましたが、GEFから継承されたすべての編集機能を保持する実用的なソリューションはないようです。