构造k边连通子图

时间:2019-03-03 14:56:53

标签: algorithm graph

假设我有一个大小为m x n的网格图。顶点数为mn,边数为2mn-m-n。如何用k-edge构造连通子图?我知道因为k是边缘的数量,所以mn-1 <= k <= 2mn-m-n。如果k = mn-1,则子图为生成树。如果k = 2mn-m-n,则子图是网格图本身。

我的方法是先使用Kruskal算法构造一个生成树(以确保它已连接),然后将k边缘添加到该生成树。我很好奇是否还有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

您感兴趣的是很多类型的格状网格图的跨度子图。如果只需要其中一个,则可以将每个顶点与其水平邻居连接起来,然后连接最左边的列(所以最终看起来像梳子。例如,

*-*-*-*-*
|
*-*-*-*-*
|
*-*-*-*-*
|
*-*-*-*-*

这只是许多可能的跨子图之一。

通过添加必要的边直到k来完成。如注释中所述,可以不生成边缘集而对其进行描述。