算法的正确性证明
直接证明法
反证法
要证明定理是正确的,首先假设定理是错误的,然后使用正确的命题和推理规则进行推理,出现:
1.与已知条件矛盾
2.与公理矛盾
3.与正确命题矛盾
4.自相矛盾
则得到结果(按照从浅显的正确性到稍微加深的部分进行)
例:证明:没有最大的整数
思路:假设有最大的整数设为P,令N=p+1则存在比P大的整数
(考虑可以在整数上进行的运算)
数学归纳法
强归纳法:保证归纳假设过程的每一步都正确的情况下得出完整证明(证明前k项均成立,
c <=k<n)
注意归纳假设利用的是要证明的结论
例:证明欧几里得算法(算法E)的正确性
首先证明引理的正确性:
若m,n为正整数,r=mMODn,则m和n的最大公因子等于n和r的最大公因子
思路:设两个集合分别为m,n的公因数集合和n,r的公因数集合 ,通过所给公式的变形证明另一个数也符合条件,注意:两集合中的元素要任取。
数学归纳法主要用于证明归纳算法的正确性和递归函数可以终止