这是一个消费税:
考虑从加权连通图 G 中找到最小权重连通子集 T 的问题。T 的权重是 T 中所有边权重的总和。给出一个计算最小权重连通子集 T 的有效算法。
这是我得到的:
我必须假设权重是由正负混合的。对于这种消费税,只有两种权重的混合才有意义。
我将首先对边缘进行排序,因此负边缘将首先出现。
我会考虑使用 Kruskal 的算法,但应该进行一些修改
因为我欢迎负边缘,所以我会尝试添加尽可能多的负边缘。
此外,可以添加一些正边沿,以防并非所有负边沿都连接,并且它们可能需要一些正边沿作为桥接。
好的,以上是我的想法。但是当我试图弄脏我的手时,我被卡住了。
如何始终记录可能设置的最小权重?
例如,
{0, 1} 的权重为 -20
{2, 3} 的权重为 -10
如果 {1, 3} 的权重为 11,那么我当然不想要 {1, 3}
或者如果 {1, 3} 的权重为 9,那么我想要
使用哪种数据结构,我可以始终保持最小权重和该权重的顶点?
值得注意的是,本次消费税所针对的子集edges
。
考虑从加权连通图 G中找到最小权重连通子集 T 的问题
这意味着仍然需要包含所有顶点。
它也不仅仅是一个 MST。考虑如果一个顶点有两条边,一条是-1,另一条是-2。在正常的 MST 算法中,只会采用 -2 的边。但是在这种消费税中,需要同时采用-1和-2来进一步降低整体重量。