繁体   English   中英

如何反转Jung DirectedGraph?

[英]How to reverse Jung DirectedGraph?

我正在使用JUNG DirectedGraph,并且需要将给定的有向图转换为反向图,以便新创建的图包含原始图的所有顶点和边,而新图中的所有边都被反向。 我需要在模型上执行此转换。
是否有提供该功能的JUNG实用程序? 我使用的是JUNG版本2.0.1。 我意识到这很容易实现,只是喜欢使用提供的实用程序(如果有)。

谢谢

搜索了大部分的JUNG2 API之后,我假设没有这种实用程序。 需要一个边缘转换函数,但是即使有很多用途,也似乎没有任何这种效用函数的痕迹。

取决于您的应用程序,可能值得一看另一种方法:您可以将DirectedGraph子类化,为任何现有的Graph实现包装器,以动态转换边。 具体来说, getInEdges()将返回getOutEdges() ,反之亦然。 您仍然需要包装取决于Edge方向的其他功能。

取决于您的应用程序,此方法可能比简单复制边缘更简单,也可能不简单。

JUNG不提供这种实用程序。 但是,执行此操作的代码将非常简单:

for (E edge : graph.getEdges()) {
  graph2.addEdge(edge, graph.getDestination(edge), graph.getSource(edge));
}

(如果图可以具有任何孤立的顶点,那么您将需要第二个循环将graph的顶点复制到graph2 。)

Uli的建议(例如,使用GraphDecorator来包装图形并动态绕过边缘方向)也可以很好地工作。 您希望选择哪一个取决于(a)您要编写多少代码,以及(b)您是否需要视图或graph副本(边缘方向相反)。

另一个选择:如果您正在编写专门用于这种反向图的代码,则可以简单地getInEdges()调用交换为getOutEdges()等。这可能是最简单的选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM