了解用于获取多项式时间算法的几何改进方法

问题描述

我正在阅读网络流-理论,算法和应用程序,但我坚持以下定理的证明(第3章,第67页):

定理。假设?^?是算法的??ℎ迭代时最小化问题的某些解的目标函数值,?^ ∗是最小目标函数值。此外,假设该算法保证每次迭代?,

(1)(?^?-?^(?+ 1))≥?(?^?-?^ ∗)

(即迭代?+ 1的改进至少是总可能改进的1/3倍),且常数

证明。数量(?^?−?^ ∗)表示??ℎ迭代后目标函数值的总可能改进。考虑从迭代starting开始的连续2 /?迭代序列。如果算法的每个迭代将目标函数值提高至少?(?^?-?^ ∗)/ 2个单位,则该算法将在这2 /?个迭代中确定最佳解。取而代之的是,假设算法在?+ 1的某个迭代中将目标函数值提高了不到?(?^?-?^ ∗)/ 2个单位。换句话说,

(2)?^?-?^(?+ 1)≤?(?^?-?^ ∗)/ 2。

不等式(1)表示

(3)?(?^?-?^ ∗)≤?^?-?^(?+ 1)

不等式(2)和(3)暗示着

(?^?−?^ ∗)≤(?^?−?^ ∗)/ 2,

因此,该算法将总可能的改进(reduced ^?−?^ ∗)减少了至少2倍。因此,我们证明了在2 /?连续迭代中,该算法要么获得了最佳解,要么降低了可能的总改进量至少为2倍。由于possible是最大可能的改进,并且每个目标函数值都是整数,因此算法必须在?((????)/ ?)次迭代中终止。

为什么作者要关注2 / a迭代?

解决方法

我认为这样写是为了让计算机科学家更容易理解,我们每2 /α轮将整数数量减半,因此2 /α轮的超级轮数将为O(log)。没有特别的原因,我们不能更直接地进行数学运算:

T(n) is the gap between the nth solution and an optimal solution.

T(n) ≤ (1 - α) T(n-1) [assumption]


                   n
T(n) ≤ T(0) (1 - α)   [by induction]

              -α n                 x
     < T(0) (e  )     [by 1 + x < e  for x ≠ 0]


                       -α (ln T(0))/α
T((ln T(0))/α) < T(0) e

               = 1,

因此(ln T(0))/α足以满足要求。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...