通过归纳验证算法的正确性

时间:2018-06-17 12:01:09

标签: algorithm induction correctness

我最近开始阅读一本关于数据结构的书,它首先介绍了算法。在一个练习中,它要求通过归纳和循环不变来证明算法。伪代码中的算法是:

Algorithm DEC2BIN(int n, int[] b)
Input: int n, array b
Output: b[i] contains the i-th bit of n's binary representation.

1: int x=n, k=0;
2:while(x>0){
3:   b[k]=x%2;
4:   x/=2;
5:   k++;
6:}
en of DEC2BIN
我说:

令P(n)为语句“b包含n的二进制表示”。

对于n = 1: 很明显,b = [1]所以,P(1)。

设P(N)。如何显示P(n + 1)?

1 个答案:

答案 0 :(得分:0)

通过提供适当的循环不变性开始。例如。

  

“循环运行k后,b将包含k”二进制表示的第一个n数字。

Horner's methodPositional Systems应该用来证明从上面的循环不变量开始的语句。