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

Cytoscape JS - Different Weights based on Direction for Dijkstra's

试图让 Cytoscape JS 为我工作,但 运行 遇到一些可用性问题,我不知道是我的问题还是库的限制。

主要问题是想根据方向使用不同的权重。例如,A 到 B 的权重应为 3,但 B 到 A 的权重应为 6。只定义了一条边,因为文档说 source/target 在无向图中被忽略。

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

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

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

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

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

这让我可以获取存储在节点本身上的权重。

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