1

我有数千个节点和边的图表,我注意到 Cytoscape.js 的性能缺乏强制导向的 JavaScript 布局算法(cose 和 cola)。

我想知道我是否应该花时间寻找其他库或算法,或者这些算法的复杂性是否太高。在一个简单的算法中,我想每个节点都必须与其他节点进行比较,所以应该有一个二次复杂度,但是通过对连接性低的数据进行巧妙过滤,我可以想象出很好的近似值(我不需要数学上完美的结果,对用户来说只是直观的东西)。

我的目标是在典型的用户机器上在 10 秒内布局图表。

我发现的出版物(谷歌学术“力导向的复杂性”):

4

1 回答 1

1

对于使用相邻节点之间的吸引力和所有节点之间的排斥力的布局算法,您可以使用Barnes--Hut样式的近似值来计算来自远处节点的排斥力。这里只是一个简短的草图,因为 B--H 是一个常见的学校作业,并且应该有大量的教程材料。基本思想是,在每一步,对输入节点执行递归四叉树剖析,计算每个细分中的节点数。然后,为了近似特定节点上的力,递归地遍历树。如果我们到达远离该节点的细分,则计算斥力,就好像细分中的每个节点都位于中心一样(或预先计算平均值,任何似乎可行的方法)。

于 2017-06-23T14:11:44.863 回答