用循环不变性证明了幂算法的正确性

时间:2016-09-14 13:52:57

标签: algorithm math

enter image description here

该算法计算x的pth幂并将结果存储在r中。我看它是如何运作的,但对我来说似乎会有两种情况(对于奇数和偶数p)。我找不到这个算法的循环不变量。

2 个答案:

答案 0 :(得分:0)

权利要求

r*x^p

在每一步都是不变的。

注意:该过程不应编译,因为它在返回值中包含隐式转换doubleint。因此它也不符合其描述。

答案 1 :(得分:0)

设p i 表示循环的i th 迭代中变量p的值,其中p 0 是传递给函数的参数p的值。令r i 表示循环的i th 迭代中变量r的值,并注意r 0 是1,恰好是x 0 (x上升到0 th 幂)。

前提是:p 0 ≥0

不变量为:p i ≥0且r i ·x p i = x p <子> 0

首先,通过归纳证明不变量。然后,找到一种方法来证明循环终止。

当循环终止时,存在迭代n,使得p n = 0.因此,r n = x p 0