力导向图布局的性能和复杂性?

时间:2017-06-23 13:09:24

标签: javascript algorithm time-complexity graph-layout

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

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

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

我发现的出版物(Google学术搜索“强制导向的复杂性”):

1 个答案:

答案 0 :(得分:1)

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