假设我有一个大小为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边缘添加到该生成树。我很好奇是否还有其他方法可以做到这一点?
答案 0 :(得分:0)
您感兴趣的是很多类型的格状网格图的跨度子图。如果只需要其中一个,则可以将每个顶点与其水平邻居连接起来,然后连接最左边的列(所以最终看起来像梳子。例如,
*-*-*-*-*
|
*-*-*-*-*
|
*-*-*-*-*
|
*-*-*-*-*
这只是许多可能的跨子图之一。
通过添加必要的边直到k来完成。如注释中所述,可以不生成边缘集而对其进行描述。