編程基礎概念:分治

===》點我返回目錄《===

當我們求解某些問題時,由於這些問題要處理的數據相當多,或求解過程相當複雜,使得直接求解法在時間上相當長,或者根本無法直接求出。對於這類問題,我們往往先把它分解成幾個子問題,找到求出這幾個子問題的解法後,再找到合適的方法,把它們組合成求整個問題的解法。如果這些子問題還較大,難以解決,可以再把它們分成幾個更小的子問題,以此類推,直至可以直接求出解爲止。這就是分治策略的基本思想。

基本的步驟爲:分而治之,把一個複雜的問題分解成很多規模較小的子問題,然後解決這些子問題,把解決的子問題合併起來,大問題就解決了。

比如說二分查找,就是用的分治思想。要在一個有序的升序數組裏面查找一個數x有沒有,不用拿數組裏面每個數挨個比較,這是暴力枚舉。仔細考慮一下,我們可以把問題分成兩部分,前半段有沒有?後半段有沒有?然後繼續細分。

還有排列問題、歸併排序、棋盤覆蓋問題等等,都體現了分治思想。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章