算法问题

时间:2011-03-04 06:52:30

标签: algorithm

我想设计一个算法。在有向图G =(V,E)中,每个弧具有数值权重。该算法需要返回一组最大权重的弧,以便A中没有两个弧具有相同的尾部。假设它至少有7个节点和10个弧。谁能提供一些关于这个算法的提示?

1 个答案:

答案 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事物。它可以遍历所有弧线并动态更新解决方案。