我很想知道 D3 使用什么算法来实现库中的力导向图功能。阅读了 Kobourov对力导向图历史的总结后,我对图书馆中使用的确切算法或方法(算法/启发式的组合)有点困惑。
D3 API 参考说 Barnes-Hut 算法用于计算作用在物体上的电荷,一个 O(N*log(N)) 操作。Kobourov 的文章提到 Quigley-Eades 算法和 Hu 的算法是利用 Barnes-Hut 的多级算法。其中一个是否在 D3 中以某种方式使用?
API wiki 进一步说 Verlet 集成用于粒子定位。源代码中提到了 Gauss-Seidel 算法,在Hu 的算法和 Dwyer 的图形布局论文中都提到了该算法。我想我正在寻找答案的问题是 D3 使用的“综合”算法;Kobourov 的文章列出了几个和 D3 强制导向功能似乎并不直接适合其中任何一个。