我想设计一个算法。在有向图G =(V,E)中,每个弧具有数值权重。该算法需要返回一组最大权重的弧,以便A中没有两个弧具有相同的尾部。假设它至少有7个节点和10个弧。谁能提供一些关于这个算法的提示?
答案 0 :(得分:2)
你说你的弧线不允许有相同的尾巴。所以我将这组弧分成几个由“弧的尾部”决定的“箱”。即你拿走每个弧线,看它的尾巴,然后把它放进相应的箱子里。
考虑以下弧的图表:
(1->2)
(1->3)
(2->1)
(2->4)
(3->2)
然后,我们有如下内容:
bin 1 | 2 | 3 | 4
arc 2 3 | 1 4 | 2 | (empty)
weight .. .. | .. .. | .. |
现在很清楚,我们每个垃圾箱最多可以取一个圆弧。为了最大化总和,我们总是可以选择每个箱子中重量最大的那个。
编辑:请注意,您的算法不需要执行此整个bin事物。它可以遍历所有弧线并动态更新解决方案。