每日一算法:分治法

在計算機(jī)科學(xué)中,分治法(Divide and Conquer,DAC)是建基于多項分支遞歸的一種很重要的算法范型。字面上的解釋是“分而治之”,就是把一個復(fù)雜的問題分成兩個或更多的相同或相似的子問題,直到最后子問題可以簡單的直接求解,原問題的解即子問題的解的合并。

它分為三個階段:

  • 分解——將問題分解為子問題;

  • 解決——使用遞歸解決子問題;

  • 合并——將子問題的結(jié)果合并到最終解決方案中。

它能用來干什么?

DAC 的一種實際應(yīng)用是使用多個處理器的并行編程,因此子問題在不同的機(jī)器上執(zhí)行。

DAC 是許多高效算法的基礎(chǔ),例如:如排序算法(歸并排序、快速排序)、傅立葉變換(快速傅立葉變換)、二進(jìn)制搜索等。

特性

  • 每個 DAC 問題都可以寫成遞歸關(guān)系;因此,找到停止遞歸的基本情況至關(guān)重要。

  • 它的復(fù)雜度為 T(n)= D(n) + C(n) + M(n),這意味著每個階段的復(fù)雜度取決于問題。

Leetcode 關(guān)于分治算法的題目

最后編輯于
?著作權(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)容

  • 分治法 定義 在計算機(jī)科學(xué)中,分治法是建基于多項分支遞歸的一種很重要的算法范式。字面上的解釋是“分而治之”,就是把...
    tianyl閱讀 705評論 0 0
  • 一、基本概念 在計算機(jī)科學(xué)中,分治法是一種很重要的算法。字面上的解釋是“分而治之”,就是把一個復(fù)雜的問題分成兩個或...
    扎Zn了老Fe閱讀 818評論 0 1
  • 五大常用算法之一:分治算法 一、基本概念 在計算機(jī)科學(xué)中,分治法是一種很重要的算法。字面上的解釋是“分而治之”,就...
    鮑陳飛閱讀 1,294評論 0 4
  • https://www.cnblogs.com/steven_oyj/archive/2010/05/22/174...
    麒麟楚莊王閱讀 636評論 0 0
  • 總目錄:地址如下看總綱 http://www.itdecent.cn/p/929ca9e209e8[https:...
    鄙人_阿K閱讀 1,042評論 0 4

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