【问题标题】:Cytoscape JS - Different Weights based on Direction for Dijkstra'sCytoscape JS - 基于 Dijkstra 方向的不同权重
【发布时间】:2016-12-23 17:32:42
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: dijkstra cytoscape.js


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我不确定这是否真的适用于 Dijkstra 的算法,因为该算法打算每条边有一个权重。如果权重可以按方向表示并且算法仍然可以正常工作(即以一些单元测试为例),那么通过拉取请求在库中拥有此功能会很棒。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多