邻接列表图的实现:顶点的入射是否需要单独的对象?

时间:2014-03-30 20:58:44

标签: java data-structures graph-theory abstract-data-type

在Goodrich和Tamassia的教科书中: Data Structures& Java中的算法,图ADT的邻接列表结构实现如下图所示:

enter image description here

事件对象 I(u),包含Vertex u 的事件边缘列表,在Vertex u 对象中引用。对于图中的每个顶点都是这种情况。

我的问题是,在本ADT的Java实现中,单独的事件对象中有什么意义,我(你)

为什么不能将事件边缘存储在Vertex对象的字段中?我看不出这会有什么问题,肯定会简化实施?

2 个答案:

答案 0 :(得分:1)

  

为什么事件边缘不能存储在Vertex对象的字段中?

他们可以,但不是这两种方式都有很大的不同。可能存在限制实现,例如当您有一个作为顶点的基元数组,或者顶点只是由索引表示时,即没有顶点对象(当没有对象需要时,这可以用于有效的内存使用) ,例如) - 在这种情况下,您需要将发生对象放在别处。

我无法肯定地说出作者的真实含义(假设他们没有在书中的其他地方说过 - 我没有检查过),但完全有可能从顶点到事件对象的箭头表示Vertex类包含对事件对象的引用(即,成员是事件对象),即图像已经表示您认为它应该工作的方式。

答案 1 :(得分:0)

是的,这是可能的,但它不会是邻接列表的实现。 这个实现的一个问题是当一个新的边插入到一个空图中时,它不会将终端顶点添加到V.方法insertEdge应该调用insertVertex或者在调用insertEdge之前需要调用insertVertex。

相关问题