Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm Karmarkar-karp差分算法是如何工作的?_Algorithm - Fatal编程技术网

Algorithm Karmarkar-karp差分算法是如何工作的?

Algorithm Karmarkar-karp差分算法是如何工作的?,algorithm,Algorithm,谁能给我卡马尔卡·卡普差分算法的伪代码,我不懂。如果有可视化/演示,效果会更好。您可以找到一个示例: 它还从按降序排列数字开始。 下面是列表[8,7,6,5,4]的排序结果 在每一步中,算法都会将两个最大的数字放在不同的子集中,同时推迟每个子集的决定。 在上面的例子中,如果我们在左子集中放置8,在右子集中放置7,这相当于在左子集中放置它们的差1,因为我们可以减去7 在不影响最终差异的情况下,从两个子集中删除。同样,第8位 在右边的子集中,7在左边的子集中,相当于在右边的子集中放置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启发式也无法找到最优划分,但比贪婪启发式做得更好


数字分区问题

+1…并有选择地更新维基百科,使其读者从更好的解释中受益()。:)似乎解释得很好,特别是在最后一个图中。此页已过期