0

我在 Java 中使用 TinkerPop3,我有一个加权多图,我想在其上运行 Dijkstra 算法来找到两个顶点之间的最短加权路径。我在其他问题中发现,推荐的方法是将 JUNG 与 TinkerPop 一起使用,但它们与 TinkerPop2 相关,TinkerPop2 将 JungGraph 作为蓝图的一部分。

我的问题是是否有任何有效的方法可以在 Tinkerpop3 图上使用 JUNG,因为我现在发现的唯一方法是创建一个新的 JUNG 图并迭代地将我的 TinkerPop3 图的所有边添加到它。也欢迎对 JUNG 提出任何替代建议。

4

1 回答 1

1

我既不熟悉 TinkerPop,也不熟悉它的数据模型。一般来说,在给定 A 的实例的情况下,您有两种基本方法来提供 B 的实例,前提是 B 和 A 是合理兼容的:

  1. 复制:创建 B 的实例,遍历 A 的元素并将它们复制到 B 中(这是您当前的解决方案)
  2. view:创建一个类,将对 A 的方法的调用重定向到 B 的适当方法。您可以通过实现适当的接口(或扩展适当的(抽象)类)来做到这一点。

假设您使用的是 JUNG 2.x,您可以扩展Abstract[Typed]Graph该类。您可能会发现查看GraphDecorator 类以查看此类委托的示例很有用(在这种情况下,被委托的类是 的实例Graph,但TinkerPop如果该模型具有适当的方法)。

注意:v2.x 中使用的 JUNG 数据模型正在被JUNG v3.x 中的Guava common.graph 数据模型替换。然而,同样的基本思想也适用。

于 2018-06-22T15:45:42.380 回答