有一些算法,例如Edmond's Algorithm或Boruvka's Algorithm,需要程序员创建一个图形,该图形是通过将一些节点合并为单个节点而获得的,并在稍后将其扩展回来。
收缩的正式描述如下:
假设
收缩的正式描述如下:
假设
G
是具有顶点V
和边缘E
的图形。 让C
是G
的连通组件。 关于C
的G
的收缩定义为在V-nodes(C)+ C *
上的图形,其中C *
是代表已缩小的组件的“超级节点”。 不涉及C
中的顶点的边缘保持不变。 现在将端点在C
中的边缘连接到C *
。
我不清楚如何使用邻接表等表示方法来实现这样的算法原语。
有什么优雅高效的方法可以表示图,以便在缩小它们的同时记住扩展所需的相关数据?