數(shù)據(jù)結(jié)構(gòu)mooc學(xué)習(xí)

清華大學(xué)學(xué)堂在線 ?鄧俊輝老師 deng@tsinghua.edu.cn

第1章 緒論


(a)計(jì)算

計(jì)算=信息處理

對(duì)象:規(guī)律,技巧 ? ? 目標(biāo):高效,低耗

何為計(jì)算:借助某種工具,遵照一定規(guī)則,以明確而機(jī)械的形式進(jìn)行。

計(jì)算模型=計(jì)算機(jī)=信息處理工具

算法:

輸入:待處理的信息(問題)

輸出:經(jīng)處理的信息(答案)

正確性:的確可以解決指定的問題

確定性:任一算法都可以描述為一個(gè)有基本操作組成的序列

可行性:每一基本操作都可實(shí)現(xiàn),且在常數(shù)時(shí)間內(nèi)完成

有窮性:對(duì)于任何輸入,經(jīng)有窮次基本操作都可以得到輸出

例子:Hailstone問題

什么是個(gè)好算法:正確,健壯,可讀,

效率

Data Structure + Algorithms = Programs


(b)計(jì)算模型

成本:運(yùn)行時(shí)間+存儲(chǔ)空間

特定算法+不同實(shí)例, 以及,不同算法+特定實(shí)例

圖靈機(jī) Turing Machine

包括:紙帶,讀寫頭,Transition Function

(q,c,d,L/R,p) 表示若當(dāng)前狀態(tài)為q且當(dāng)前字符為c,則將當(dāng)前字符改寫為d,轉(zhuǎn)向左側(cè)/右側(cè)的鄰格,轉(zhuǎn)入p狀態(tài),一旦轉(zhuǎn)入特定的終止?fàn)顟B(tài) ‘h’ ,則停機(jī)。

例子:圖靈機(jī)實(shí)例
RAM模型概念

在這些算法中,算法的運(yùn)行時(shí)間成正比于算法需要執(zhí)行的基本操作次數(shù)。

RAM模型的實(shí)例

執(zhí)行過程可以記錄為一張表,表的行數(shù)即是所執(zhí)行的基本指令的總條數(shù),能夠客觀度量算法的執(zhí)行時(shí)間。

圖靈機(jī)(TM),RAM等模型為度量算法性能提供了準(zhǔn)確的尺度。


(c)大O記號(hào)(Big O Notation) ?Paul Bachmann 1894 ?同階無窮小

Mathematics is more in need of good notations than of new theorems. ----Alan Turing

長(zhǎng)遠(yuǎn),主流

漸進(jìn)分析 Asymptotic analysis:

當(dāng)n>>2后,對(duì)于規(guī)模為n輸入,

算法需執(zhí)行的基本操作次數(shù):T(n)=?? ? 需占用的存儲(chǔ)單元數(shù):S(n)=??

T(n) = O(f(n)) ?iff ?存在 c>0,當(dāng) n>>2 后,有 T(n) < c*f(n) 。

O(1):常數(shù)復(fù)雜度,2=2017=...=2011111111=O(1)

O( (log n)c ),對(duì)數(shù)多項(xiàng)式的復(fù)雜度 ?(poly log function)

對(duì)數(shù):O(log n) ? ? ?ln n, lg n, ... , ?與對(duì)數(shù)的底數(shù)無關(guān)

常底數(shù)無所謂: 對(duì)任意的a,b,有 log(a)n=log(a)b*log(b)n=O( log(b)n )

常數(shù)次冪無所謂:對(duì)任意的c>0, (log n)c=c*log n=O(log n)

對(duì)于對(duì)數(shù)多項(xiàng)式而言,取對(duì)數(shù)多項(xiàng)式里面次數(shù)最高的項(xiàng)即可

此類算法非常有效,因?yàn)閺?fù)雜度無限接近于常數(shù)。

對(duì)任意的c>0, n充分大時(shí),O(log n)小于n的c次方。

O(n的c次方),多項(xiàng)式復(fù)雜度,polynomial function

O(2的n次方),指數(shù)(exponential function) 指數(shù)爆炸

這類算法的計(jì)算成本增長(zhǎng)極快,通常被認(rèn)為是不可忍受的,從O(n的c次方)O(2的n次方),

是從有效算法到無效算法的分水嶺,很多問題的O(2的n次方)算法顯而易見,

然而,設(shè)計(jì)出O(n的c次方)算法卻極為不易,甚至,有時(shí)注定地只能是徒勞無功。

2-Subset 問題,美國(guó)大選實(shí)例

對(duì)于2-Subset 問題,

直覺算法:逐一枚舉S集中的每一個(gè)子集,并統(tǒng)計(jì)其中元素的總和,須2的n次方輪。

亦即:在最壞的情況下,必須花費(fèi)2的n次方的時(shí)間,不甚理想!

直覺提出的問題:是否有更好的算法?

定理:2-Subset is NP-complete

not Polynomial, 非多項(xiàng)式時(shí)間內(nèi)完成

即:就目前的計(jì)算模型而言,不存在可以在多項(xiàng)式時(shí)間內(nèi)回答此問題的算法,就此意義而言

上述的直覺算法已經(jīng)屬于最優(yōu)。

最后編輯于
?著作權(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ù)據(jù)結(jié)構(gòu) [TOC] 算法 函數(shù)的增長(zhǎng) 漸近記號(hào) 用來描述算法漸近運(yùn)行時(shí)間的記號(hào),根據(jù)定義域?yàn)樽匀粩?shù)集$N=...
    wxainn閱讀 1,243評(píng)論 0 0
  • 算法復(fù)雜度 時(shí)間復(fù)雜度 空間復(fù)雜度 什么是時(shí)間復(fù)雜度 算法執(zhí)行時(shí)間需通過依據(jù)該算法編制的程序在計(jì)算機(jī)上運(yùn)行時(shí)所消耗...
    KODIE閱讀 3,401評(píng)論 0 9
  • 此筆記用于指導(dǎo)初學(xué)者閱讀。原文在此!,出于便于交流的考慮,內(nèi)容重放在此。由于作業(yè)部落支持LaTex公式,所以,更加...
    Bintou老師閱讀 12,554評(píng)論 0 27
  • 由于項(xiàng)目中經(jīng)常會(huì)有一些需求頁面是,從底部彈出一個(gè)視圖,在當(dāng)前視圖的上面,因此為了減少那些沒必要的工作量,基于UIP...
    捷風(fēng)閱讀 3,720評(píng)論 0 4
  • 今天我大金陵又被淹了,躺在蝸居看周星星的功夫?!皣?yán)格來講我們就是賣唱的,一曲肝腸斷,天涯何處覓知音”,以前的老電影...
    莫__天閱讀 207評(píng)論 0 0

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