13

ライブラリで力指向グラフ機能を実現するためにD3が使用するアルゴリズムを正確に知りたいと思います。Kobourovの力指向グラフの歴史の要約を読んだことで、ライブラリで使用されている正確なアルゴリズムまたは方法(アルゴリズム/ヒューリスティックの組み合わせ)が何であるかについて少し戸惑いました。

D3 APIリファレンスによると、バーンズハットアルゴリズムを使用して、物体に作用する電荷、O(N * log(N))演算を計算します。Kobourovの記事では、Quigley-Eadesアルゴリズム、およびHuのアルゴリズムは、Barnes-Hutを利用するマルチレベルアルゴリズムであると述べています。それらの1つはD3で何らかの方法で利用されていますか?

API wikiはさらに、粒子の位置決めにVerlet統合が使用されると述べています。ソースコードにはGauss-Seidelアルゴリズムが記載されており、HuのアルゴリズムとDwyerのグラフレイアウトペーパーの両方に記載されています。私が答えを探している質問は、D3が利用する「統合」アルゴリズムです。Kobourovの記事にはいくつかのリストがあり、D3の力による機能はそれらのいずれにも直接適合しないようです。

4

3 に答える 3

4

オリジナルのd3論文では、Mike Bostock&al。Dwyerの実装が力グラフのレイアウトに使用されると書いています:

力のレイアウトは、物理シミュレーションと反復的な制約緩和[7]を組み合わせて、安定したグラフレイアウトを実現します。

[7]T.ドワイヤー。スケーラブルで用途が広く、シンプルな制約付きグラフレイアウト。EuroVis、2009年。

詳細については、Dwyerの論文でアルゴリズム全体について詳しく説明しています。

于 2014-05-13T09:35:51.833 に答える
3

さて、これはあなたの特定の質問に対する答えではありませんが、力指向レイアウトのデモページで、「 TimDwyerThomasJakobsenに触発されたレイアウトアルゴリズム」と彼は言います。

于 2012-11-14T02:08:07.420 に答える
0

Force-Layoutアルゴリズムの概要は、 https://github.com/mbostock/d3/wiki/Force-Layoutにあります。

于 2014-10-28T10:22:29.357 に答える