【发布时间】:2013-01-17 13:07:57
【问题描述】:
我正在阅读此http://www.cas.mcmaster.ca/~terlaky/4-6TD3/slides/DP/DP.pdf 并想知道是否存在对分区问题具有更好时间复杂度的解决方案。
来自链接:
"假设给定的非负数排列 S {s1,...,sn} 和一个整数 k。如何切 S 到 k 或更少的范围, 以最小化所有范围内的最大总和?”
例如
S = 1,2,3,4,5,6,7,8,9
k=3
通过将 S 分成这 3 个范围,最大范围 (8,9) 之和为 17,这是可能的最小值。
1,2,3,4,5|6,7|8,9
链接中建议的算法在 O(kn^2) 中运行并使用 O(kn) 空间。有没有更高效的算法?
【问题讨论】:
-
这是一个动态规划问题。它不是在指数时间内运行,而是将解决方案优化为仅在多项式时间内。这很好,所以我认为您不必寻找“更有效”的解决方案