优化算法:从分支限界到爬山法的深入解析
1. 复杂度分析与伪多项式时间
在一些计算中,对于每一组值 $m = 1, \ldots, n$ 和 $d = 0, \ldots, c$ 的组合,需要计算 $s(v,w,n - 1,c - w[n]) + v[n]$。由于存在 $nc$ 这样的组合对,所以时间复杂度为 $O(nc)$。然而,这看似是多项式时间复杂度,但实际上并非如此,这种运行时间被称为伪多项式时间。它在输入值上表现为多项式,但在输入规模上并非如此。问题的关键在于参数 $c$,它是输入的一个值,在二进制表示中,用 $k$ 位可以表示到 $2^k$ 的数字,因此表示值 $c$ 所需的位数是 $\log(c)$。而 $n$ 表示输入的规模,即给定的值和权重的数量。所以,在这种情况下,输入规模为 $n\log(c)$,$O(nc)$ 的运行时间在输入规模上是指数级的。
2. 分支限界算法
2.1 基本思想
分支限界算法是解决组合优化问题的另一种方法。与动态规划类似,其实现依赖于具体要解决的问题,它是一种通用的问题解决思路。基本思想是将问题迭代地分解为子问题,并对这些子问题进行研究和评估。这与动态规划方法类似,但子问题的产生方式不同。在每一步中,固定一个变量的值,然后确定在这个值下的最佳和最差情况。每次迭代后,这些边界为确定下一个要评估的子问题提供了指导,从而避免了对原问题的所有可行解进行遍历,以更高效的方式搜索解空间。
2.2 分支过程
在整数规划(IPs)中,变量必须取整数值。如果可行域是有界的,这通常会导致变量有有限个可能的值。例如,在背包问题中,变量需要是二进制的,可行域被限制在区间 $[0, 1]$
超级会员免费看
订阅专栏 解锁全文
58

被折叠的 条评论
为什么被折叠?



