Cytoscape JS - 基于Dijkstra的方向的不同权重

时间:2016-12-23 09:15:59

标签: dijkstra cytoscape.js

试图让Cytoscape JS为我表现,但遇到一些我不知道的可用性问题,如果是我还是图书馆的限制。

主要问题是希望根据方向使用不同的权重。 A至B应具有重量3,但B至A应具有重量6,例如。由于文档说无源图中忽略了源/目标,因此只定义了一条边。

到目前为止,我通过将重量存储在节点本身来解决这个问题,我认为通过检查edge.target()得到所需的重量,我已经在dijkstra的权重函数中解决了这个问题。

但是,我认为edge.target()似乎只符合我设置边缘时定义的单向关系,尽管对算法指定了directed = false。如果我从另一个方向来到它,我似乎得到了错误的重量。

所以我的问题是..如何正确获取dijkstra找到重量的节点目标,在权重函数中我所拥有的只是边缘对象?我的图形具有圆形路径,因此可以从两个方向接近节点,并且单个权重将不起作用。

1 个答案:

答案 0 :(得分:0)

我通过编辑cytoscape.js并修改Dijkstra来解决这个问题,将实际目标节点传递给权重函数:

var weight = weightFn.apply( edge, [ edge, v ] );

这允许我抓住我在节点上存储的重量。

如果边缘对象中有一个提供实际目标的属性,我仍然感兴趣,但主要问题已得到解答。