将 JUNG 与 TinkerPop3 高效结合使用

Using efficiently JUNG with TinkerPop3

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

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

我既不熟悉 TinkerPop,也不熟悉它的数据模型。通常,如果 B 和 A 相当兼容,您有两种基本方法可以在给定 A 实例的情况下提供 B 实例:

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

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

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