D3.js使用哪些算法来实现力导向图?

13

我很想知道D3图书馆在实现力导向图特性时使用了哪些算法。阅读Kobourov的总结关于力导向图历史的文章让我有些困惑,不知道图书馆中使用了哪种确切的算法或方法(算法/启发式组合)。

D3 API参考 表示使用Barnes-Hut算法来计算作用于物体上的电荷,这是一个O(N*log(N))操作。Kobourov的文章提到Quigley-Eades算法和Hu算法是多级算法,利用了Barnes-Hut。其中一种算法是否以某种方式在D3中被使用?

API维基进一步指出,Verlet积分用于粒子定位。 源代码提到了Gauss-Seidel算法,而胡氏算法和Dwyer的图形布局论文中都提到了它。我猜我正在寻找答案的问题是D3使用了哪个“整合”算法; Kobourov的文章列出了几个,但D3力导向特性似乎不直接符合任何一个算法。

最好将这个问题通过电子邮件发送给Mike Bostock... - akuhn
@akuhn:我在D3网站上没有看到创建者的电子邮件。我认为直接向他发送此类问题的电子邮件并不合适,因为这样每个社区成员都会这样做。我在这里看到Mike回答问题,所以我认为这是正确的论坛来提问。 - amergin
3个回答

4
在原始的d3论文中,Mike Bostock等人写道Dwyer的实现被用于力图布局:
引用: 力布局将物理模拟和迭代约束放松[7]相结合以获得稳定的图形布局。 [7] T. Dwyer.可扩展,多功能且简单的受限图形布局。在EuroVis,2009年。
有关更多信息,请参阅Dwyer的论文详细描述了整个算法。

3

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接