我有兴趣确切地知道 D3 使用什么算法来实现库中的力导向图功能。读过科布罗夫的总结 http://www.cs.brown.edu/~rt/gdhandbook/chapters/force-directed.pdf力导向图的历史让我有点困惑,不知道库中使用的确切算法或方法(算法/启发式的组合)是什么。
D3 API参考 https://github.com/mbostock/d3/wiki/Force-LayoutBarnes-Hut 算法用于计算作用在物体上的电荷,O(N*log(N)) 运算。 Kobourov的文章提到Quigley-Eades算法,而Hu的算法是利用Barnes-Hut的多级算法。 D3 中是否以某种方式利用了其中之一?
API wiki 进一步表示 Verlet 集成用于粒子定位。这源代码 https://github.com/mbostock/d3/blob/master/src/layout/force.js提到了 Gauss-Seidel 算法,该算法在胡氏算法 http://www.mathematica-journal.com/issue/v10i1/contents/graph_draw/graph_draw.pdf和德怀尔的图表布局纸 http://www.csse.monash.edu.au/~tdwyer/Dwyer2009FastConstraints.pdf。我想我正在寻找答案的问题是“综合”算法 D3 使用什么; Kobourov 的文章列出了几个,而 D3 强制导向的功能似乎并不直接适合其中任何一个。
在原来的d3 paper http://vis.stanford.edu/papers/d3、迈克·博斯托克等人。写道 Dwyer 的实现用于力图布局:
力布局结合了物理模拟和迭代约束松弛[7]以实现稳定的图形布局。
[7] T.德怀尔。可扩展、多功能且简单的约束图形布局。在欧洲视觉展,2009 年。
了解更多信息,德威尔的论文 http://www.csse.monash.edu.au/%7Etdwyer/Dwyer2009FastConstraints.pdf详细描述了整个算法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)