算法設計思想--分治法

分治法:

核心思想,

1.分解,把大問題分解爲多個規模更小的同一類型的問題。
2.求解
在問題規模足夠小時,立即得到結果。
3.合併
依據所有分解後問題的解,進行綜合處理,
得到一個屬於大問題的解。

正確性證明

數學歸納法

通過分治實現的算法,用數學歸納法來證明正確性。
數學歸納法的證明:
初始時,
問題規模足夠小時,算法目標可以實現。
對於給定規模爲k的算法輸入,
依據數學歸納法,
輸入規模小於k的情形下,算法目標均可以實現。
須論證,規模k的算法,
在處理完畢時,可以得到該規模下的算法目標。

綜合,
通過證明初始時,和規模爲k下算法目標均可實現。即可證明算法對任意規模輸入均成立。

另一種更具普適性的證明視角

有時不太肯定,
是否分解後的同類型問題屬於原問題下一個規模更小的子問題。
可以按如下思路證明:
分治或包含分治處理的算法,
在算法處理中,
要麼,在算法處理中,可以直接對問題求解。
此時算法必然成立。
要麼,
在算法處理中,
將要求解的問題,轉化爲了一個或多個相同類型的問題,
在假定轉化後的相同類型問題均可求解的前提下,
算法將可以完成對於輸入問題的求解。

下面證明相同類型問題可被求解。
需要證明,在最壞情況下,
算法也必然在有限次轉化爲同類型問題後的某次,
可以達到可以直接求解的情形。

若上述被證明。
則,我們可知從最後一次直接被求解的情況,
逐層上移,最終到達本輸入中時,
我們可以完成對分解後同類型的問題的可求解的證明。
綜合,
算法成立。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章