用于选择节点子集的算法(K.

时间:2014-05-03 01:56:13

标签: algorithm graph chain

我正在寻找一种从链中选择节点子集的算法。例如,对于在时间链中具有“N”个节点的给定节点,我想基于标准选择“K”节点,使得K <1。 N.例如,如果我必须在集合{D1,D2,D3,... DN}“N = 7”中选择“K = 3”天的一组天{D1,D2,DK},该怎么办?一周中的天数,以便我最大化以下成本:

enter image description here

我需要从集{D1,....,DN}中选择最佳“K”项。一种可能性是我可以列举所有可能的选择并选择最佳组合:

...
1 0 0 0 0 1 1
0 0 0 0 1 1 1 
0 1 0 0 1 1 0

...

计算机科学中是否有一个众所周知的算法来解决这个问题?如果是这样,任何指向适当资源/代码的指针都可能有所帮助。

PS:我不确定这是否是正确的论坛,请在下面发表评论,我会重新发布。

1 个答案:

答案 0 :(得分:2)

由于目标是线性的,因此该问题具有最佳子结构,因此适合于动态编程。对于从0到K的每个i,对于从0到N的每个j,确定从第一个i中选择j个节点的最佳方式。只有一种方法可以选择i = 0个节点。从第一个i&gt;中选择j个节点的最佳方法0是从第一个i - 1或项目j中选择j的最佳方式,之前是选择i的最佳方式 - 来自第一个{1}个节点{1}} - 1.通过避免重新计算子问题的最优值,运行时间是多项式的。