You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CLRS切杆算法实现中4-6行循环的循环不变式及验证问询

CLRS 切杆算法cut_rod循环的循环不变式及证明

循环不变式定义

针对代码中第4至6行的循环,循环不变式定义为:

当循环准备执行第i次迭代(i从1到n)时,变量q的值等于长度为n的钢杆仅考虑前i-1种切割方案(即第一段切割长度取1到i-1)时能获得的最大收益。若i=1(首次迭代前),因未考虑任何切割方案,q的初始值-inf代表“无有效方案的默认状态”。

初始化阶段证明

循环开始前,i=1,此时尚未执行任何迭代。根据循环不变式,需要q对应“前0种切割方案的最大收益”——也就是没有任何切割方式被评估,q被初始化为-inf,完全符合这一要求,因此初始化时循环不变式成立。

保持阶段证明

假设在第i次迭代开始前,循环不变式成立:即q存储了第一段长度取1到i-1时的最大收益。

在本次迭代中,计算p[i] + cut_rod(p, n-i)——这是第一段切割长度为i时的总收益。随后将q更新为当前q与该值的最大值,此时q就代表了第一段长度取1到i时的最大收益,恰好满足第i+1次迭代开始前的循环不变式要求(此时对应前i种切割方案)。因此,每次迭代后循环不变式仍保持成立。

终止阶段证明

循环终止时,i = n+1(循环遍历完1到n的所有值)。根据循环不变式,此时q存储了第一段长度取1到n时的最大收益——这覆盖了长度为n的钢杆的所有可能切割方案:

  • 若选择切割,第一段长度可从1到n-1,剩余部分递归求解;
  • 若选择不切割,对应第一段长度为n,收益为p[n] + cut_rod(p, 0) = p[n],已被纳入计算。

因此,终止时q的值就是长度为n的钢杆能获得的最大收益,与函数返回值一致,验证了算法的正确性。


内容的提问来源于stack exchange,提问作者Rajesh Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 10:20:41