国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

吳軍《計(jì)算之魂》第六章:分治思想及應(yīng)用-筆記

2023-03-21 18:38 作者:raft0065  | 我要投稿

6.1 分治:從O(N^2)到O(NlgN)

????三部曲:

????1)將一個(gè)復(fù)雜問(wèn)題分解成若干個(gè)簡(jiǎn)單子問(wèn)題,即divide

????2)解決每一個(gè)子問(wèn)題,即conquer,如果子問(wèn)題依然很大,則需要遞歸調(diào)用分治進(jìn)一步分解,直到被分出的子問(wèn)題能夠被直接解決為止

????3)對(duì)子問(wèn)題的結(jié)果進(jìn)行合并,即combine

分治例子1:歸并排序


分治例子2:25名選手爭(zhēng)名次問(wèn)題

????1)先分為5組,每組5人,賽5次后,根據(jù)速度分別編號(hào)A1~A5,B1~B5,...,E1~E5,其中A1>A2>...>A5,以此類推

????2)A1,B1,...,E1五個(gè)小組跑最快的人賽一次,不是一般性,設(shè)速度:A1>B1>...>E1

????3)因?yàn)锳1不需要賽了(已經(jīng)第一),D和E組最快的人前面至少有三個(gè)人,也不用賽了直接整組淘汰。同理,可以讓A2,A3,B1,B2,C1再賽一場(chǎng)找亞軍和季軍

分治例子3:總和7次,為可能的最少次數(shù)
分治例子4:從N個(gè)排好序的序列中選出K個(gè)最大元素

????當(dāng)K<<N時(shí),可以綜合使用【歸并排序】和【堆排序】的思想,時(shí)間復(fù)雜度O((K+N)lgN),該方法常用作國(guó)際大學(xué)挑選每個(gè)國(guó)家的新生候選人的算法:

????具體為:

????1)將N個(gè)序列從大到小排列

????2)分別在每個(gè)序列中取出最大的那個(gè)數(shù),建堆(Max Heap)

????3)取出MaxHeap中的最大元素,并根據(jù)該元素所屬的序列號(hào)來(lái)更新該序列的指針下移一個(gè)


6.2 分割算法:快速排序和中值問(wèn)題

分割算法例1:前K個(gè)最大元素

????找K個(gè)最大需要建最小堆,逆向思維排除N-K個(gè),剩下K個(gè),找K個(gè)最小元素則反之建最大堆

分割算法例2:找中值

????如果使用堆排,K=N/2,那么時(shí)間復(fù)雜度退化為O(nlgn),這時(shí)使用快速選擇更好O(n),詳見《算法導(dǎo)論》,或者使用主定理(Master Theorem)也可:

????和快速排序相比,尋找中值或某一個(gè)K大的數(shù)雖然在代碼上相差無(wú)幾,但實(shí)際上,基于分割原理的中值算法并沒有解決pivot之上或之下的系列數(shù)字的相互關(guān)系,因此要少做很多計(jì)算。并且,從過(guò)程上看,雖然快排和中值算法都要經(jīng)過(guò)很多迭代,但是前者每次都是針對(duì)整個(gè)數(shù)組的元素,后者每次迭代比較的元素則是呈等比數(shù)列遞減的。

????N選K問(wèn)題有很多實(shí)際應(yīng)用,比如在一億個(gè)游戲玩家中尋找100個(gè)最活躍者獎(jiǎng)勵(lì),或機(jī)器學(xué)習(xí)中,為權(quán)衡計(jì)算和存儲(chǔ)成本,只保留前K個(gè)最有效的特征等。

????解決了單機(jī)版本的中值問(wèn)題,那分布式的中值問(wèn)題該如何解決呢?

分治的不同應(yīng)用流程圖比較

6.4 并行初探:矩陣相乘和MapReduce

????大規(guī)模矩陣乘法可以使用分治思想進(jìn)行處理:

10倍資源(服務(wù)器)將計(jì)算時(shí)間縮短至原來(lái)的1/10


吳軍《計(jì)算之魂》第六章:分治思想及應(yīng)用-筆記的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
成武县| 鄂尔多斯市| 孟连| 淮南市| 嘉义县| 德保县| 始兴县| 林州市| 甘谷县| 鹤壁市| 民勤县| 咸丰县| 林甸县| 民丰县| 梓潼县| 西平县| 乌兰察布市| 司法| 黑水县| 宝丰县| 平武县| 策勒县| 承德市| 成都市| 卓资县| 雅安市| 东丰县| 会同县| 行唐县| 长沙市| 格尔木市| 泗阳县| 昭觉县| 涞水县| 嘉鱼县| 尼玛县| 瓮安县| 陈巴尔虎旗| 江津市| 三原县| 阿勒泰市|