我们如何有效地实现固定基数的最大设置覆盖范围?

时间:2018-12-20 17:17:41

标签: graph-algorithm

我正在努力解决以下问题,并用C ++实现解决方案。

让我们假设我们有一个定向加权图G =(V,A,w),P是一组人。

我们收到许多查询,每个查询都给出一个人p以及两个顶点s和d,并要求计算人p的s和d之间的最小加权路径。一个人可以有多个路径。

所有查询结束后,我得到一个数字k <= | A |我应该给出k条弧线,以使使用k条弧线中至少一个弧线的人数达到最大(这是最大覆盖率问题)。

为解决第一部分,我使用priority_queue实现了Djikistra算法,并计算了s和d之间的最小权重。 (这是个好方法吗?)

要解决第二部分,我为每个弧存储使用该弧的一组人员,并使用贪婪算法来计算该组弧(在每个阶段,我选择了最多未发现人员使用的弧)。 (这是个好方法吗?)

最后,如果我的算法很实用,如何在C ++中有效地实现它们?

0 个答案:

没有答案