分而治之演算法

2021-09-06 06:58:50 字數 883 閱讀 6895

演算法是問題的分步驟解決的方法。

分而治之的思想是:有很多問題,可以劃分為多個小問題,而小問題本身是易於解決的,那麼就通過找到」劃分方法「,得到小問題後,最終解決原問題。

一、是否所有問題都能劃分成小問題?

比如1+1=?可以劃分麼?不行。因此並不是所有問題都能夠劃分。

二、怎樣的問題能夠劃分?

和規模n相關的,可以劃分成每乙個節點,或者某一小段,形成可以直觀解決的小問題。就如一條長的線段,分成若干定長的小段,進而解決所有問題。如,乙個平面,可以劃分為若干小區域,也是一樣的道理。只要具備規模性,不是原子性的問題,都能夠劃分成小的問題。

三、劃分的方式有什麼分別?

我覺得有三種劃分問題的方法,第一種,是根據問題的特點,劃分為不同的子問題,每個子問題就是其中乙個步驟。大多數數學的應用題都是這樣。

第二種,劃分成子節問題和剩餘問題,而這個劃分方式可以重複應用到剩餘問題之上。也就能夠找出簡單的子問題,並且證明剩餘問題是重複的簡單問題的集合。

特點就是子問題是相似並重複的,不像第一種那樣需要針對每個子問題做不同的解答。

第三種,混合一二兩種情況。

四、分而治之的重點是什麼?

第一就是看是否能夠發現重複的子問題,能否發現大問題存在的迴圈子結構,如果發現就把原問題轉化為很簡單的小問題。

第二,是否能劃分步驟(不同步驟不同解決方法),因為單個步驟往往比整個問題解決起來要簡單很多。

第三,子問題是否很容易解決,如果子問題都解決不了,那麼劃分還有啥意義?

比如乙個規模為n的問題,可以劃分為1 和 n-1 兩個部分,其中1是易於解決的。而n-1這個剩餘部分可以用相同的劃分方式分成1 , n-2兩部分;重複這個過程,最終解決所有問題。

也可以劃分成n/2 和 n/2 兩部分,然後對兩個部分繼續劃分,最終都會成為乙個1的簡單問題。

分而治之演算法

今天的演算法是乙個叫分而治之的思想,這個思想感覺對於程式優化,節約時間很有幫助,但是對於實際中的用途還是稍微差了點!這個思想很簡單即使把乙個大的程式,分成一小段一小段的區分步執行,這樣的好處就是減少複雜度,比如我們要計算2的100次方,我們通常的思想就是 for int i 0 i 100 i 好吧...

演算法設計與分析 分而治之演算法 金塊問題

目錄 題目描述 問題分析 編寫 列印結果 老闆有一袋金塊 共n塊,n是2的冪 n 2 最優秀的雇員得到其中最重的一塊,最差的雇員得到其中最輕的一塊。假設有一台比較重量的儀器,希望用最少的比較次數找出最重和最輕的金塊。對於一般思路 通過乙個函式max進行n 1次比較來找到最重的金塊,然後再從餘下的n ...

分而治之 D C)

分而治之 能將問題逐步分解,但並非可用於解決問題的演算法,而是一種解決問題的思路。分而治之演算法是遞迴的,使用分而治之 d c 解決問題的過程包括兩個步驟 找出遞迴邊界條件,這種條件必須盡可能簡單 不斷地將問題分解 或者說縮小規模 直到符合遞迴邊界條件。注意 假設要將一塊地均勻地分成方塊,確保分出的...