應(yīng)用算法串講之計(jì)算復(fù)雜度優(yōu)化與組合優(yōu)化

大數(shù)據(jù)文摘授權(quán)轉(zhuǎn)載自龍心辰
作者:龍心辰
從事算法工作以來,涉獵過不少算法。有些算法被淘汰,有些如日中天,有些則退守在某些特定的領(lǐng)域中頑強(qiáng)地生存,并不斷給算法工作者提供思想啟發(fā)。
自己的一個(gè)方向是算法在產(chǎn)業(yè)界的應(yīng)用,一個(gè)很強(qiáng)烈的感受是即便新的算法層出不窮,真正在實(shí)踐上有生命力的并不在于其思想有多炫,而是其算法特質(zhì)能夠最好地適應(yīng)具體場(chǎng)景的需求。
這么多算法,什么時(shí)候用什么算法,是需要梳理清晰的。然而算法思想過于復(fù)雜,想用一兩篇文章講得面面俱到幾乎不可能。
所以筆者希望用一個(gè)系列專題試圖從應(yīng)用的視角統(tǒng)一串講一下不同算法,盡量少講公式,著重從思想角度關(guān)注不同算法之間的橫向聯(lián)系和適用條件,希望對(duì)大家應(yīng)用算法落地有些幫助。
目標(biāo)(因變量):F(x) 自變量(控制條件):x 約束:g(x)=0

最小化目標(biāo):時(shí)間復(fù)雜度T(f)與空間復(fù)雜度S(f)
自變量:一段程序f
滿足條件(約束):程序f能夠?qū)崿F(xiàn)某個(gè)特定的功能(可套娃)
這里首先要注意的是約束本身也可以是一個(gè)最優(yōu)化問題,又構(gòu)成了一個(gè)套娃,套娃玩出了花。

將長(zhǎng)度為n的整數(shù)數(shù)組劃分為m個(gè)片段(約束),最小化每個(gè)片段和的最大值(目標(biāo))——LeetCode1011。
在長(zhǎng)度為n的整數(shù)數(shù)組中,找出一個(gè)的和大于等于s的連續(xù)子數(shù)組(約束),最小化子數(shù)組的長(zhǎng)度(目標(biāo))——LeetCode209。
在長(zhǎng)度為n的整數(shù)數(shù)組中,找出一個(gè)遞增子序列(約束),最大化子序列的長(zhǎng)度(目標(biāo))——LeetCode300。

最小化目標(biāo)(程序出參):所有劃分片段的子數(shù)組和的最大值。
自變量(程序入?yún)ⅲ洪L(zhǎng)度為n的整數(shù)數(shù)組,整數(shù)m。
約束(程序必需滿足邏輯):將整數(shù)數(shù)組劃分為m個(gè)子片段。
回過頭來看外層套娃的最優(yōu)化問題,其目的就是找出一個(gè)最佳的可執(zhí)行的程序。而這個(gè)是需要人手動(dòng)寫出來的。那有沒有能夠自動(dòng)化編程的算法呢?






評(píng)論
圖片
表情
