算法的分析思路
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
分析框架
1、以算法輸入規(guī)模n作為參數(shù)進(jìn)行分析算法效率
2、時(shí)間復(fù)雜度:找出基本操作O(1),再計(jì)算它的運(yùn)行次數(shù)(忽略乘法常量,僅關(guān)注增長(zhǎng)次數(shù))
3、增長(zhǎng)次數(shù):log2n<n<nlog2n<n2<n3<2n<n! (注意指數(shù)級(jí)操作的增長(zhǎng)次數(shù)只能解決小規(guī)模問題)
4、最差、平均和最佳效率均是指輸入規(guī)模為n時(shí)候的效率(平均效率可以引用已知的推到結(jié)果)
主要概括分析框架:
1、算法的時(shí)間效率和空間效率都用輸入規(guī)模的函數(shù)進(jìn)行度量。
2、用算法的基本操作的執(zhí)行次數(shù)來(lái)度量時(shí)間效率,用算法消耗的額外單位的數(shù)量來(lái)度量空間單位
3、在輸入規(guī)模相同的情況下,有寫算法的效率會(huì)有顯著的差異,對(duì)于這類算法需要分析最差、平均和最佳效率
4、框架主要關(guān)心:輸入規(guī)模趨向于無(wú)限大的情況下它的效率問題
漸近符號(hào)和基本效率類型
1、O(g(n))是增長(zhǎng)次數(shù) < = c*g(n)的函數(shù)集合,上階
2、Ω(g(n))是增長(zhǎng)次數(shù) >= c*g(n)的函數(shù)集合,下階
3、θ(g(n))是增長(zhǎng)次數(shù) = c*g(n)的函數(shù)集合,同階
可以利用極限進(jìn)行比較增長(zhǎng)次數(shù)(洛必達(dá)法則)
算法整體效率是由具有較大增長(zhǎng)次數(shù)的部分所決定的。
非遞歸問題的數(shù)學(xué)分析的通用方案
1、決定哪個(gè)參數(shù)表示輸入規(guī)模的度量標(biāo)準(zhǔn)
2、找出算法的基本操作
3、檢查基本操作的執(zhí)行次數(shù)是否只依賴于輸入規(guī)模,如果它還依賴于一些其他的特性(例如:元素在數(shù)組中的位置等)則分析最差、平均和最佳效率
4、建立一個(gè)算法基本操作執(zhí)行次數(shù)的求和表達(dá)式(有可能是遞推表達(dá)式)
5、利用求和運(yùn)算的標(biāo)準(zhǔn)運(yùn)算或者法則來(lái)建立一個(gè)操作次數(shù)的閉合公式,或者至少確定它的增長(zhǎng)次數(shù)
遞歸問題的數(shù)學(xué)分析的通用方案
1、決定哪個(gè)參數(shù)表示輸入規(guī)模的度量標(biāo)準(zhǔn)
2、找出算法的基本操作
3、檢查基本操作的執(zhí)行次數(shù)是否只依賴于輸入規(guī)模,如果它還依賴于一些其他的特性(例如:元素在數(shù)組中的位置等)則分析最差、平均和最佳效率
4、對(duì)于算法基本操作執(zhí)行次數(shù),建立一個(gè)遞推關(guān)系以及相應(yīng)的初始條件。
5、解這個(gè)遞推式,或者至少確定它的增長(zhǎng)次數(shù)。
本文地址:http://www.linuxprobe.com/analysis-algorithm.html編輯:王毅,審核員:逄增寶
轉(zhuǎn)載于:https://my.oschina.net/u/3308739/blog/1585491
總結(jié)
- 上一篇: python - hash类型操作
- 下一篇: 【开发者的精进】 数据驱动下的程序设计