让T = (V, E)成为一个具有
例如:考虑以下树T。红色边缘具有给定成本。将添加虚线边缘以从此树构建完整图形。
要找到生成此图的(多项式时间)算法。我主要是在寻找提示,而不是完整的解决方案。到目前为止,我设计了以下算法:
1)找到包括权重为
2)对于MST的所有其他边缘
问题:
1)上述算法是否正确?根据割定理,应该是这样的。
2)我能否更有效地做到这一点?我没有一个在脑海中找到切割的算法,但我不认为这种方法会很有效。
|V|
个顶点和|E| = |V-1|
条边的树,其中边缘成本已知。我们想要构建一个最小权重的完全图G = (V, E'),它以其唯一的最小生成树为跨度。例如:考虑以下树T。红色边缘具有给定成本。将添加虚线边缘以从此树构建完整图形。
要找到生成此图的(多项式时间)算法。我主要是在寻找提示,而不是完整的解决方案。到目前为止,我设计了以下算法:
1)找到包括权重为
w_max
的最重MST边缘且没有其他MST边缘的图形割。所有其他边缘都必须为w_max + 1
。下面的图片说明了我的想法:2)对于MST的所有其他边缘
e_i
,按降序处理其权重w_i
。取一个仅包含e_i
的切割,没有其他MST边缘。该切割中的任何未知非MST边缘都应具有w_i + 1
的权重。问题:
1)上述算法是否正确?根据割定理,应该是这样的。
2)我能否更有效地做到这一点?我没有一个在脑海中找到切割的算法,但我不认为这种方法会很有效。
1) 使用并查集,我按照成本递增的顺序迭代所有最小生成树边,并将相应的顶点统一到同一个组件中。
2) 在每个步骤中,通过成本为w
的边将两个不同的组件统一。在同一个(新)组件内形成循环的任何其他边应具有成本w+1
。