【问题标题】:How does the Karmarkar-karp differencing algorithm work?Karmarkar-karp 差分算法如何工作?
【发布时间】:2011-04-22 19:58:21
【问题描述】:

谁能给我karmarkar-karp的差分算法的伪代码,我不明白。如果有可视化/演示更好。

【问题讨论】:

标签: algorithm


【解决方案1】:

它也是从按降序排列数字开始的。

这里是列表[8,7,6,5,4]的排序结果

在每个步骤中,算法都承诺将两个最大的数字放在不同的子集中,同时推迟决定每个将进入哪个子集。
在上面的例子中,如果我们将 8 放在左子集中,将 7 放在右子集中,这相当于将它们的差 1 放在左子集中,因为我们可以减去 7 来自两个子集而不影响最终差异。同样,放置 8 在右子集中,在左子集中 7 相当于将 1 放在 右子集。 该算法去除两个最大的数,计算它们的 差异,然后将差异视为任何其他数字 分配,将其按排序顺序插入剩余的数字列表中。 该算法继续删除两个最大的数字,将它们替换为 他们在排序列表中的差异,直到只剩下一个数字,这 是最终子集差异的值。

例如,给定已排序的整数 (8,7,6,5,4),将 8 和 7 替换为它们的差 1,将其插入剩余列表中,结果 在 (6,5,4,1) 中。接下来,将 6 和 5 替换为它们的差值 1,产生 (4,1,1). 4 和 1 被它们的差 3 代替,得到 (3,1),并且 最后这两个数字的差是最终的子集差 2。 在这种情况下,KK启发式也无法找到最佳分区,但比贪心启发式做得更好。

号码划分问题 Download PDF

【讨论】:

    猜你喜欢
    • 2021-09-26
    • 2011-09-16
    • 2023-03-10
    • 1970-01-01
    • 2016-08-17
    • 2018-11-19
    • 2022-01-18
    • 2022-01-10
    • 1970-01-01
    相关资源
    最近更新 更多