Java中的标记图形表示

时间:2010-11-17 17:00:33

标签: java oop data-structures graph

假设我们有一个有向标记的图形,即一个图形,其中从顶点到另一个的边缘用一个值标记。我们如何在Java中对此进行建模? (或者一般是面向对象的语言?)

我目前的解决方案是让一个Vertex课程有Collection<Edge> outgoingEdgesCollection<Edge> incomingEdges,其中Edge是一个有三个字段的课程:

  • label这是边缘的标签
  • predecessor这是来源Vertex
  • successor这是目的地Vertex

其他解决方案?

3 个答案:

答案 0 :(得分:1)

看起来不错。它类似于在数据库中使用辅助表对多对多关系进行建模的标准技术,以保存有关关系的信息。

你还有一个根顶点集合吗?

根据您需要进行的遍历,您可能不需要传入边缘 - 例如如果你只是从根源开始。

严格来说,你甚至不需要Vertex对象,如果没有附加任何其他信息,你可以只为顶点编号并将数字放在每个边的前驱和后继中。然而,这可能会有点远:)

答案 1 :(得分:1)

我不想说你需要分离传出和传入的边缘,你可以检查顶点是源还是目标,并且有一个实用的方法可以让你传出和传入。我注意到很多实现代码定向和无向图不同,实际上没有理由。

答案 2 :(得分:0)

我认为你所做的是对的。您可以添加一个Graph类,其中包含顶点列表和edge列表作为成员。

您已将所有实体表示为对象,因此对我来说没问题。