演算法導論學習-數學歸納法與迴圈不變式理解
阿新 • • 發佈:2018-12-30
數學歸納法:
最簡單和常見的數學歸納法是證明當n等於任意一個自然數時某命題成立。證明分下面兩步:- 證明當n= 1時命題成立。
- 假設n=m時命題成立,那麼可以推導出在n=m+1時命題也成立。(m代表任意自然數)
- 證明第一張骨牌會倒。
- 證明只要任意一張骨牌倒了,那麼與其相鄰的下一張骨牌也會倒。
- 那麼便可以下結論:所有的骨牌都會倒下。
迴圈不變式為演算法思想,用於判斷演算法的正確性,通常通過三條性質證明:初始化、保持、終止。
1、初始化。比如插入演算法開始第一次迭代之前,只有一個元素,顯然成立。
2、保持。也就是演算法迴圈過程中不變的特性,比如插入排序,每次排完前面的序列都是排好序的。
3、終止。迴圈結束時,可以保證演算法正確,比如插入排序,前面n-1次都是排好序的,那麼最後一次也是排好序的。
正確演算法的迴圈過程中總是存在一個維持不變的特性,這個特性一直保持到迴圈結束乃至演算法結束,這樣就可以保證演算法的正確了。 比方說插入排序,演算法每次迴圈後,前n個數一定是排好序的(n為已經迴圈的次數)。由於這個特性一直成立,到演算法結束時,所有N個數一定是排