【问题标题】:What is the loop invariant for a summation of cubes algorithm?立方求和算法的循环不变量是什么?
【发布时间】:2013-10-04 01:11:02
【问题描述】:

我不能 100% 确定三次幂求和中的不变量是什么。

注意:n 始终为非负值。

伪代码:

triplePower(n)
    i=0
    tot=0
    while i <= n LI1
        j = 0
        while j < i LI2
            k = 0
            while k < i LI3
                tot = tot + i
                k++
            j++
        i++

我知道它很乱,可以用更简单的方式完成,但这是我应该做的(主要用于算法分析实践)。

我要提出三个循环不变量; LI1、LI2 和 LI3。
我在想,对于 LI1,不变量与 tot=(i^2(i+1)^2)/4 (从 0 到 i 的立方求和的方程)
不过,我不知道该怎么做 LI2 或 LI3。 LI2 的循环使 i^3 和 LI3 使 i^2,但我不完全确定如何将它们定义为循环不变量。

如果我在每个 while 循环体中都有 3 个单独的总变量,这些变量在第一个循环中 i++ 之前添加到主总变量中,那么不变量会更容易定义吗?

感谢您提供的任何帮助。

【问题讨论】:

    标签: algorithm invariants loop-invariant


    【解决方案1】:

    我认为您可以将它们定义如下:

    LI1 <= (i^2(i+1)^2)/4
    LI2 <= (i+1)^3 + (i^2(i+1)^2)/4
    LI3 <= (i+1)^2 + i^3 + (i^2(i+1)^2)/4
    

    (如果您计算的金额正确)。

    【讨论】:

    • 谢谢!昨晚我正在研究它,我想到了类似的东西,但我不完全确定如何定义它。谢谢您的帮助。对于LI2和LI3,不是所有i都改成(i-1)吗?
    • @MichaelSchilling,循环不变量在循环执行期间和循环执行完成后应该是真的,所以我认为我说的是真的。 (可能是我错了)。
    猜你喜欢
    • 2011-03-14
    • 2011-02-25
    • 2012-02-29
    • 2010-10-14
    • 1970-01-01
    • 2021-02-28
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多