【MIT公開課】6.006 算法導(dǎo)論(完結(jié)·中英字幕·機(jī)翻)

本課有3大內(nèi)容:
1.效率與復(fù)雜度
2.程序的可延展性
3.一些經(jīng)典數(shù)據(jù)結(jié)構(gòu)與經(jīng)典算法(如排序和匹配,但算法課更推薦6.046)
Python的使用與實(shí)現(xiàn)是本課一大亮點(diǎn)
具體又分成8大塊:
1.算法思維:peaking finding(第一集 15:00 開始)特殊數(shù)據(jù)尋找/特殊數(shù)據(jù)點(diǎn)/函數(shù)零點(diǎn)/導(dǎo)數(shù)零點(diǎn)/函數(shù)最值……
2.sorting & trees 排序
3.Hash 哈希比較
4.RAS加密
5.Graph圖論與魔方
6.short-path最短路徑
7.動(dòng)態(tài)編程/動(dòng)態(tài)規(guī)劃
8.一些進(jìn)階話題(與6.046甚至是6.854、6.851銜接)
本課前置課程6.042離散數(shù)學(xué),主要需要關(guān)于漸進(jìn)復(fù)雜度的討論
peaking finding (找最值/峰值)
第一節(jié)主要是以peaking finding為例,讓學(xué)生體驗(yàn)什么叫算法分析,對(duì)應(yīng)課本第二單元
首先需要一個(gè)實(shí)用的,不講廢話的”峰值“定義:a,b,c,按順序,滿足a<=b,c<=b,b是峰值
對(duì)一維問題:
1.遍歷法 復(fù)雜度為order n 線性復(fù)雜度
2.二分法 復(fù)雜度為order log2(n) 對(duì)數(shù)復(fù)雜度
對(duì)二維問題:
1.遍歷法 order (nm) =order (n^2)
2.簡單二分法 無法使用 因?yàn)槎S問題存在局部極值
3.修正后二分法 增加局部極值相互比較的步驟
lec02
第二節(jié)開頭是一個(gè)大雜燴,介紹課本前四節(jié)中涉及的但在第一節(jié)課中沒有來得及提及的定義,比如什么是算法
文件距離例子:
使用內(nèi)積定義距離(度量metric) ,顯然還會(huì)帶有角度。
d(v1,v2)=v1*v2=sum of v1[i]*v2[j]
需要考慮歸一化問題
lec03
1.排序的用途
2.
3.
本節(jié)課正式進(jìn)入算法分析,對(duì)課本前四單元內(nèi)容進(jìn)行掃尾,特別是圖解演示nlogn復(fù)雜度
(中文版教材,排版奇怪,需要注意與英文原版對(duì)照)
lec04
這是足以高潮的 一節(jié)課(癡漢臉)
首先是數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)的結(jié)構(gòu),點(diǎn)的結(jié)構(gòu),幾何的結(jié)構(gòu):
”如同在數(shù)學(xué)中一樣,集合也是計(jì)算機(jī)科學(xué)的基礎(chǔ)。不過數(shù)學(xué)中的集合是不變的,而算法所操作的集合卻可以隨著時(shí)間的改變而增大、縮小或產(chǎn)生其他變化。我們稱這種集合是動(dòng)態(tài)的?!?/p>
動(dòng)態(tài)集合支持的操作:search查找、insert插入、delete刪除
顯然,計(jì)算機(jī)科學(xué)的基礎(chǔ)圖論和集合論的條件更為寬松的。
哈佛抽象代數(shù)公開課里,教授用”人是看不見自己的未來的,但我能看見你們的未來,期末的未來“ 一句玩笑話,正式引入了群表示論,表示論”換個(gè)角度看世界“的思想,如此簡單,如此有效
在計(jì)算機(jī)科學(xué)中,我們的研究對(duì)象/我們的系統(tǒng)和宇宙(物理化學(xué)用語)/我們的集合、集合中的元素具有離散的結(jié)構(gòu),或者叫沒有結(jié)構(gòu)。
沒有,意味著我們可以任意揉搓,當(dāng)成一筆畫問題,拉成一條線,他就是數(shù)組array、棧、隊(duì)列,適當(dāng)?shù)耐負(fù)湫巫兙妥兂蓤A,一個(gè)有限域,存儲(chǔ)在有限的內(nèi)存空間
加一個(gè)映射,直線就映射成二叉樹,如果不限制映射的模樣,也就有了圖
本節(jié)用一節(jié)課時(shí)間,討論了課本第六單元,堆排列,討論另一個(gè)視角下的數(shù)列——二叉樹,利用新結(jié)構(gòu)的特殊性質(zhì),加速排序過程,變一維問題為二維問題,增加了解決問題的靈活度