分治法

目錄

  • 零、主定理
  • 零-零、利用數(shù)學(xué)方法求解遞歸式
  • 一、歸并排序
    *二、最大子數(shù)組問題
    2.1 問題描述
    2.2 使用分治策略求解
    2.3 分治法的分析
  • 三、矩陣乘法的Strassen算法
    3.1 普通矩陣乘法
    3.2 一個(gè)簡(jiǎn)答的分治算法
    3.3 Strassen方法

在分治策略中,遞歸地求解一個(gè)問題,在每層遞歸中應(yīng)用如下三個(gè)步驟:
1)分解:將問題劃分為一些子問題,子問題的形式與原問題一樣,只是規(guī)模更小
2)解決:遞歸地求解出子問題。如果子問題的規(guī)模足夠小,則停止遞歸,直接求解。
3)合并:將子問題的解組合成原問題的解

分治有兩種情況:
1)當(dāng)子問題足夠大,需要遞歸求解時(shí),稱之為遞歸情況
2)當(dāng)子問題變得足夠小,不再需要遞歸時(shí),進(jìn)入基本情況

零、主定理



主定理的三種情況分別對(duì)應(yīng)以下三種情況:
1)樹的總代價(jià)由葉節(jié)點(diǎn)的代價(jià)決定
2)樹的總代價(jià)均勻分布在樹的所有層次上
3)樹的總代價(jià)由根節(jié)點(diǎn)的代價(jià)決定


主定理的證明:(需要用到下面兩個(gè)引理)


引理4.2:



引理4.2的證明:


引理4.3:



4.3的證明:



主定理的應(yīng)用:


幾個(gè)遞歸公式的解:
1)T (n) = T (αn) + T ((1 ? α)n) + n 的解為:T (n) = Θ(n lg n)
可以用代入法驗(yàn)證
2)T (n) = T (n ? 1) + n的解為:T (n) = Θ(n2)



3)T (n) = T (√n) + 1 的解為:T(n) = Θ(lglgn)



4)T (n) = T (n/2) + T (n/4) + T (n/8) + n的解為:T(n) = Θ(n)
可以用代入法驗(yàn)證

5)T (n) = T (n ? 1) + lg n的解為:T (n) = Θ(n lg n)
6)T (n) = T (n ? 1) + 1/n的結(jié)尾:T(n) = Θ(lgn)

零-零、利用數(shù)學(xué)方法求解遞歸式

一、歸并排序

二、最大子數(shù)組問題

2.1 問題描述

股票的買入賣出,使得收益最大
暴力求解方法:嘗試每隊(duì)可能的組合,共有n(n - 1) /2種,運(yùn)行時(shí)間為Ω(n2)

問題轉(zhuǎn)換:不從每日價(jià)格的角度去看待輸入,二十考察每日價(jià)格變化,第i天的價(jià)格變化定義為第i天和第i-1天的價(jià)格差,將該數(shù)組定義為A。那么問題就轉(zhuǎn)換為尋找A的和最大的非空連續(xù)子數(shù)組。稱之為最大子數(shù)組。
只有當(dāng)數(shù)組中包含負(fù)數(shù)時(shí),最大子數(shù)組問題才有意義,否則整個(gè)數(shù)組和肯定是最大的。

2.2 使用分治策略求解


考慮求解子數(shù)組A[low..high]的最大子數(shù)組。
使用分治技術(shù)意味著將子數(shù)組劃分為兩個(gè)規(guī)模盡量相等的子數(shù)組,比如中央位置mid。A[low..high]的任何連續(xù)子數(shù)組A[i..j]所處的位置必然是一下三種情況之一:



這三種情況的求法:
A[low..mid]和A[mid+1..high]遞歸進(jìn)行求解
跨mid的求解:找出A[i..mid]和A[mid+1..j]最大子數(shù)組,然后合并
求出這三個(gè)之后,然后選出其中的最大者,即為A[low..high]的最大子數(shù)組



2.3 分治法的分析


可得T(n) = Θ(nlgn)

三、矩陣乘法的Strassen算法

3.1 普通矩陣乘法

3.2 一個(gè)簡(jiǎn)答的分治算法



遞歸情況的總時(shí)間為分解時(shí)間、遞歸調(diào)用時(shí)間以及矩陣加法時(shí)間之和:




得到T(n) = Θ(n3)

3.3 Strassen方法

核心思想是令遞歸樹少一點(diǎn)點(diǎn),只遞歸進(jìn)行7次而不是8次n/2 x n/2矩陣的乘法。



創(chuàng)建10個(gè)矩陣:




遞歸地計(jì)算7次矩陣乘法:

計(jì)算C的4個(gè)子矩陣:






運(yùn)行時(shí)間的分析:

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

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

  • 分治策略 本文包括分治的基本概念二分查找快速排序歸并排序找出偽幣棋盤覆蓋最大子數(shù)組 源碼鏈接:https://gi...
    廖少少閱讀 1,991評(píng)論 0 7
  • 版本記錄 前言 將數(shù)據(jù)結(jié)構(gòu)和算法比作計(jì)算機(jī)的基石毫不為過,追求程序的高效是每一個(gè)軟件工程師的夢(mèng)想。下面就是我對(duì)算法...
    刀客傳奇閱讀 3,098評(píng)論 0 0
  • 一、基本概念 在計(jì)算機(jī)科學(xué)中,分治法是一種很重要的算法。字面上的解釋是“分而治之”,就是把一個(gè)復(fù)雜的問題分成兩個(gè)或...
    扎Zn了老Fe閱讀 811評(píng)論 0 1
  • 要點(diǎn) 遞歸式T(n)求解代換法*迭代法*遞歸樹主定理 Master (core) 分治策略Insert Sort ...
    陳碼工閱讀 3,183評(píng)論 0 1
  • 變天了,冷 思緒雜亂 如窗外的風(fēng) 凄凄的吹過臺(tái)燈 將我的身影斜斜地映在墻上 拉長(zhǎng) 顯示屏的光亮分外的白 我在電腦...
    默默Mona閱讀 220評(píng)論 0 0

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