Java八大算法思想(總結(jié))

八大算法:枚舉、遞推、遞歸、分治、貪心、試探法、動態(tài)迭代和模擬算法思想。

一、枚舉算法思想(暴力算法)

  將問題的所有可能答案一一列舉,根據(jù)判斷條件判斷此答案是否合適,一般用循環(huán)實現(xiàn)。

  經(jīng)典運用:百錢買百雞、填寫運算符

二、遞推算法思想

  1.順推法:從已知條件出發(fā),逐步推算出要解決問題的方法。

  2.逆推法:從已知結(jié)果出發(fā),用迭代表達(dá)式逐步推算出問題開始的條件,即順推法的逆過程。

  經(jīng)典運用:斐波那契數(shù)列(順推法)、銀行存款(逆推法)

三、遞歸算法思想

  1.遞歸過程一般通過函數(shù)或子過程實現(xiàn);

  2.遞歸算法在函數(shù)或子過程的內(nèi)部,直接或間接調(diào)用自己的算法

  3.遞歸算法實際上是把問題轉(zhuǎn)化為規(guī)模縮小了的同類問題的子問題,然后再遞歸調(diào)用函數(shù)或過程來表示問題的解

注意:必須有一個明確的遞歸結(jié)束條件;如果遞歸次數(shù)過多,容易造成棧溢出。

  經(jīng)典運用:漢諾塔問題、階乘問題

四、分治算法思想

  將一個規(guī)模為N的問題分解為K個規(guī)模較小的子問題,這些子問題相互獨立且與原問題性質(zhì)相同。只要求出子問題的解,就可得到原問題的解。

  一般步驟:

    1.分解,將要解決的問題劃分成若干個規(guī)模較小的同類問題

    2.求解,當(dāng)子問題劃分得足夠小時,用較簡單的方法解決

    3.合并,按原問題的要求,將子問題的解逐層合并構(gòu)成原問題的解

  經(jīng)典運用:大數(shù)相乘問題、比賽日程安排

五、貪心算法思想

  從問題的某一個初始解出發(fā),逐步逼近給定的目標(biāo),以便盡快求出更好的解。

  局限:

    不能保證最后的解是最優(yōu)的;

    不能求最大最小解問題;

    只能求滿足某些約束條件的可行解范圍。

  基本過程:

    1.從問題的某一初始解出發(fā)

    2.while能向給定總目標(biāo)前進(jìn)一步

    3.求出可行解的一個解元素

    4.由所有解元素組合成問題的一個可行解

  經(jīng)典運用:裝箱問題、找零方案

六、試探算法(回溯法)

  在試探算法中,放棄當(dāng)前候選解,并繼續(xù)尋找下一個候選解的過程稱為回溯。擴(kuò)大當(dāng)前候選解的規(guī)模,以繼續(xù)試探的過程稱為向前試探。

 ?。榍蟮脝栴}的正確解,會先委婉地試探某一種可能情況。在進(jìn)行試探過程中,一旦發(fā)現(xiàn)原來選擇的假設(shè)情況是不正確的,馬上會自覺地退回一步重新選擇,然后繼續(xù)向前試探。反復(fù)進(jìn)行,直到得到解或證明無解時才死心)

  基本步驟:

    1.針對所給問題,定義問題的解空間

    2.確定易于搜索的解空間結(jié)構(gòu)

    3.以深度優(yōu)先方式搜索解空間,并在搜索過程中用剪枝函數(shù)避免無效搜索

  經(jīng)典運用:八皇后問題、29選7彩票組合

七、迭代算法(輾轉(zhuǎn)法)

  是一種不斷用變量的舊值遞推新值的過程,解決問題時總是重復(fù)利用一種方法。

  1.確定迭代變量:直接或間接地不斷由舊值遞推出新值的變量

  2.建立迭代關(guān)系式:新值與舊值的公式或關(guān)系。(解決迭代問題的關(guān)系)

  3.對迭代過程進(jìn)行控制:確定迭代過程什么時候結(jié)束

    所需的迭代次數(shù)是個確定值,可以計算出來:可以構(gòu)建一個固定次數(shù)的循環(huán)來實現(xiàn)對迭代過程的控制;

    所需的迭代次數(shù)無法確定:需要進(jìn)一步分析出用來結(jié)束迭代過程的條件。

  經(jīng)典運用:求平方根問題

八、模擬算法思想

  對真實事物或者過程的虛擬。

  經(jīng)典運用:猜數(shù)字游戲、擲骰子問題

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容