背包问题的最佳和最坏情况
The best and the worst case scenarios for the knapsack problem
我想知道背包问题的最佳和最坏情况。我想最好的情况应该是所有对象的值和权重都具有相同的值。例如:
int[] values = new int[] { 5, 5, 5};
int[] weights = new int[] { 9, 9, 9};
但我不知道最坏的情况。
非常感谢!
由于最佳和最坏情况是相对于算法或问题解决方案定义的,我假设您指的是著名的背包问题动态规划解决方案。
背包算法的动态规划解法是pseudo-polynomial algorithm在O(nW)
时间内运行s,其中n
表示物品的数量,[=12] =]表示最大权重。因此,您可以通过简单地将最大权重设置为任意高的值来使该算法 运行 非常糟糕。特别是,将每个权重设置为 2^n
将使该算法在 O(2^n)
时间内达到 运行。
我想知道背包问题的最佳和最坏情况。我想最好的情况应该是所有对象的值和权重都具有相同的值。例如:
int[] values = new int[] { 5, 5, 5};
int[] weights = new int[] { 9, 9, 9};
但我不知道最坏的情况。
非常感谢!
由于最佳和最坏情况是相对于算法或问题解决方案定义的,我假设您指的是著名的背包问题动态规划解决方案。
背包算法的动态规划解法是pseudo-polynomial algorithm在O(nW)
时间内运行s,其中n
表示物品的数量,[=12] =]表示最大权重。因此,您可以通过简单地将最大权重设置为任意高的值来使该算法 运行 非常糟糕。特别是,将每个权重设置为 2^n
将使该算法在 O(2^n)
时间内达到 运行。