我想解决最小生成树问题的一个较难的版本。两条边相连的最小生成树
还有N
顶点。还有2M
边编号为1,2,..,2M
。该图连接,无向和加权。我想选择一些边缘来使图形保持连接并使总成本尽可能小。有一个限制:编号为2k
的边缘和编号为2k-1
的边缘是并列为,因此应该选择两者或者不应该选择两者。所以,如果我想选择边缘3,我也必须选择边缘4。
那么,连接图形的最低总成本是多少?
我的想法:
- 我们叫两个边
2k
和2k+1
一个边缘设置。 - 如果合并两个不同的组件,我们称它为有效的。
如果两条边都是有效的,我们称之为边集好。
首先准确地加上
m
边缘集合,这些边集合在成本的增加顺序上是好的。然后以成本递增的顺序迭代所有边集,并且如果至少一个边有效,则添加集。应该从0到M
迭代m
。运行一个克鲁斯卡尔算法,其中有一些变化:边缘
e
的成本各不相同。- 如果其中包含
e
边集是良好,成本:(边集的成本)/ 2。 - 否则,费用是:(边集的成本)。
- 即使成本发生变化,我也无法证明kruskal算法是否正确。
- 如果其中包含
对不起,我英文不好,但我想解决这个问题。是NP-hard还是某种东西,还是有很好的解决方案? :D感谢你提前!
听起来像是一个流动问题,但对其复杂性并不完全确定 –
@The Brofessor,请您详细说明您的解决方案吗? – miheyan