# 演算法筆記 [TOC] ## [github連結](https://github.com/ccc112a/py2cs) ## 第一週 演算法+資料結構=程式 [bubble sort程式](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/01-%E8%A4%87%E9%9B%9C%E5%BA%A6/01-bigO/bubbleSort.py):Big-O(n^2^) [distance程式](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/01-%E8%A4%87%E9%9B%9C%E5%BA%A6/01-bigO/distance.py):Big-O(1) [matrixMul程式](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/01-%E8%A4%87%E9%9B%9C%E5%BA%A6/01-bigO/matrixMul.py):Big-O(n^3^) * 矩陣分割之後可以只有O(n^2.71^),最近有AI突破了 但我查到最少的是O(n^2.3728596),[連結](https://www.qbitai.com/2021/03/22553.html) 嚴格定義:是算法才能有big-O,(不會停的東西不是算法) [infinite](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/01-%E8%A4%87%E9%9B%9C%E5%BA%A6/01-bigO/infinite.py):嚴格定義下沒有big-O,寬鬆定義是big-O(∞) 圖靈停止問題:無法用一個程式判斷另一個程式會不會停,就算寫了也無法100%正確 Kurt Gödel(庫爾特·哥德爾):最早用數學領域提出不可判定停止問題 * 哥德爾完備定理:看不太懂,[定理連結](https://zh.wikipedia.org/zh-tw/%E5%93%A5%E5%BE%B7%E5%B0%94%E5%AE%8C%E5%A4%87%E6%80%A7%E5%AE%9A%E7%90%86) * 哥德爾不完備定理:看不太懂,[定理連結](https://zh.wikipedia.org/zh-tw/%E5%93%A5%E5%BE%B7%E5%B0%94%E4%B8%8D%E5%AE%8C%E5%A4%87%E5%AE%9A%E7%90%86) 2^n^,10^n^在演算法的角度沒有差別 常數不為0多小都沒關係 算法指的是方法,所以不受限於程式語言,但要具體的表明輸入輸出,步驟等等 多**層**迴圈的big-O是O(n^2^) 多**個**迴圈的big-O是O(n) 自己寫遞迴要小心重複算的問題 log n比根號好 費氏數列用遞迴會重算很多重複的,可以用動態規劃,查表法加快 [查表法費氏數列](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/01-%E6%9F%A5%E8%A1%A8%E6%B3%95/fiboanacci/fibonacci_lookup.py):用表記下已經算過的數字 動態規劃:有系統的建表 ### 習題 1. 費氏數列迴圈法 2. 寫出四種算出2^n^的方法 ## 第二周 遞迴轉迴圈很困難 透過遞迴的方式能處理很多迴圈難做的程式 Lisp:沒有迴圈的程式語言,函數程式語言 haskell:函數式程式語言 雜湊不能回推,會碰撞,無法做逆向工程 雜湊在密碼學上很重要 sha256是位數固定的雜湊 ,碰撞機率低,[sha程式](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/02b-%E9%9B%9C%E6%B9%8A%E6%B3%95/sha/hash.py) 大約2^128^會第一次碰撞 能夠列舉才能暴力法 挖礦是暴力法,靠雜湊值 挖礦是一種猜數字遊戲,主要看雜湊前導0,現在是18個0 挖礦跟協助維護比特幣系統都可以得到比特幣 乙太幣有智能合約,能在區塊鏈上跑程式 ### 習題 1. 寫一個可以列舉排列的程式 ## 第三周 暴力法:全面且大量的搜尋 系統式暴力:不會重複,照順序(效能好的一定比較快) 隨機式暴力:會重複,隨機嘗試(不看效能,看運氣) IEEE(Institute of Electrical and Electronics Engineers):電機電子工程師學會 ACM(Association for Computing Machinery):電腦協會 [IEEE754](https://zh.wikipedia.org/zh-tw/IEEE_754):浮點數標準 判斷浮點數不要用等於,因為會有微小誤差 暴力法怕:高維函數,多變數函數 [蝴蝶效應](https://zh.wikipedia.org/zh-tw/%E8%9D%B4%E8%9D%B6%E6%95%88%E5%BA%94):微小的事物會帶來巨大的改變 迭代有可能混沌,收斂,發散,震盪 後兩節課都在寫習題,所以無筆記 ### 習題 1. 求解x^2^-x+1=0(迭代法3種+暴力法) ## 第四周 [巴斯卡三角形](https://zh.wikipedia.org/zh-tw/%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92%E5%BD%A2):每一個數都是左上跟右上兩個數字的合 [歐基里德算法](https://zh.wikipedia.org/zh-tw/%E8%BC%BE%E8%BD%89%E7%9B%B8%E9%99%A4%E6%B3%95):用來算最大公因數 [student t-test](https://zh.wikipedia.org/zh-tw/%E5%8F%B8%E5%BE%92%E9%A0%93t%E6%AA%A2%E5%AE%9A):統計學的重要東西 AI和機器學習會用到很多很難的機率統計 平行指令:在同一行做兩件事,例如 `x,y = y , x%y` 生成語法本身就是一種遞迴 [leetcode](https://leetcode.com/):要面試厲害公司可以刷,很難,老師講的easy的題目就聽不懂解法了 呼叫函式時要先算出參數,要小心這個機制 [哈斯凱爾·布魯克·柯里(Haskell Brooks Curry)](https://zh.wikipedia.org/zh-tw/%E5%93%88%E6%96%AF%E5%87%AF%E5%B0%94%C2%B7%E6%9F%AF%E9%87%8C):函數式編程的始祖 #### python語法: lambda:一種匿名函數的創建方式,且是底層的 map:回傳經過處理的所有數字 filter:回傳滿足條件的選項 reduce:回傳一個累加的結果 ,(用reduce 需 from functools import reduce) [參考程式碼](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/04b-%E5%87%BD%E6%95%B8%E5%BC%8F%E7%B7%A8%E7%A8%8B/01-fp/fp.py) ## 第五周 combinator: 聽不懂,有點複雜,[介紹網址](https://medium.com/@adambene/fixed-point-combinators-in-javascript-c214c15ff2f6) [u combinator程式碼](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/04b-%E5%87%BD%E6%95%B8%E5%BC%8F%E7%B7%A8%E7%A8%8B/07-combinator/ucombinator1.py), [y combinator程式碼](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/04b-%E5%87%BD%E6%95%B8%E5%BC%8F%E7%B7%A8%E7%A8%8B/07-combinator/ycombinator1.py) ,[z combinator程式碼](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/04b-%E5%87%BD%E6%95%B8%E5%BC%8F%E7%B7%A8%E7%A8%8B/07-combinator/zcombinator1.py) [lambda calculus](https://zh.wikipedia.org/wiki/%CE%9B%E6%BC%94%E7%AE%97) 沒有資料結構,所以都是用pair(需自己寫),[pair程式碼](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/04b-%E5%87%BD%E6%95%B8%E5%BC%8F%E7%B7%A8%E7%A8%8B/08-list/pair.py) [Alonzo Curch](https://en.wikipedia.org/wiki/Alonzo_Church):用另一個面向證明圖靈停止定理,時間比圖靈早[證明的paper](https://ics.uci.edu/~lopes/teaching/inf212W12/readings/church.pdf) [皮亞諾公理系統](https://zh.wikipedia.org/zh-tw/%E7%9A%AE%E4%BA%9A%E8%AF%BA%E5%85%AC%E7%90%86) [希爾伯特23個問題](https://zh.wikipedia.org/zh-tw/%E5%B8%8C%E5%B0%94%E4%BC%AF%E7%89%B9%E7%9A%8423%E4%B8%AA%E9%97%AE%E9%A2%98) [Microsoft Bing](https://www.bing.com/create):用文字生成圖片 多人處理,並回推github專案時不要用 -A 參數,因為會增加很多垃圾 多人合作時要善用branch 檢查存不存在,不存在的話創建新的branch指令:git checkout -b 要創建的名字 通常測試不會用print,會有assert 測試很重要,通常會有專門的測試工程師 ## 第六周 可以用算分數的方式決定排序的正確與否 AI=優先=算分數+搜尋 現在AI主要用用梯度下降法 牛頓,萊布尼茲發明微積分,現在都採用萊布尼茲符號 [梯度下降法](https://zh.wikipedia.org/zh-tw/%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E6%B3%95):可以找到局部最低和最高點 評分在AI裡非常重要 爬山演算法:若右比左高,往右,左比右高就往左,找到的不一定是全圖最高點 用爬山演算法算最大值時只需在return時加負號,[一維程式碼(已加負號)](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/05c-%E7%88%AC%E5%B1%B1%E6%BC%94%E7%AE%97%E6%B3%95/hillClimbing1/hillClimbing1.py) ### 習題 1. 寫一個爬山演算法,能算出任何函數的山頂 2. (紅利題)寫一個梯度下降法,能找到任何向量函數的谷底 ## 第七周 用梯度下降法找的都會是有最小值的(不然會找到負無限大) 梯度計算,好難,聽不太懂,[程式碼](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/05f-%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E6%B3%95/02-%E6%A2%AF%E5%BA%A6/xyGradient.py) 高維的連續可維函數可以做偏微分 [梯度下降程式碼](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/05f-%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E6%B3%95/03-%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E6%B3%95/gd.py) [反傳遞演算法](https://zh.wikipedia.org/wiki/%E5%8F%8D%E5%90%91%E4%BC%A0%E6%92%AD%E7%AE%97%E6%B3%95):常應用於神經網路 輸入值不需要再算偏微分 [反傳遞文章參考](https://karpathy.github.io/neuralnets/) [反傳遞程式碼](https://github.com/ccc-py/micrograd/blob/master/ccc/engine.py) [向量資料庫](https://aws.amazon.com/tw/what-is/vector-databases/):可以儲存較久的記憶 ### 習題 1. 把習題6改用 micrograd 的反傳遞算法算梯度 ## 第八周 [模擬退火法](https://zh.wikipedia.org/wiki/%E6%A8%A1%E6%8B%9F%E9%80%80%E7%81%AB):爬山演算法的變形,可以跨越小山丘(但必須是非常非常小的山丘) [貪婪演算法](https://zh.wikipedia.org/zh-tw/%E8%B4%AA%E5%BF%83%E7%AE%97%E6%B3%95):每次都朝進步最多的地方走 [霍夫曼編碼](https://zh.wikipedia.org/zh-tw/%E9%9C%8D%E5%A4%AB%E6%9B%BC%E7%BC%96%E7%A0%81)是一種貪婪演算法 [圖靈獎](https://zh.wikipedia.org/zh-tw/%E5%9B%BE%E7%81%B5%E5%A5%96):在電腦方面有重大貢獻的獎項 [圖靈](https://zh.wikipedia.org/zh-tw/%E8%89%BE%E4%BC%A6%C2%B7%E5%9B%BE%E7%81%B5):圖靈機,證明停止問題不可解,圖靈測試 [ELIZA](https://zh.wikipedia.org/zh-tw/ELIZA):第一個聊天機器人 #### 圖靈獎得獎名單: 1966第一屆:[艾倫·佩利](https://zh.wikipedia.org/zh-tw/%E8%89%BE%E4%BC%A6%C2%B7%E4%BD%A9%E5%88%A9),編譯器和程式語言貢獻 1967第二屆:[莫里斯·威爾克斯](https://zh.wikipedia.org/zh-tw/%E8%8E%AB%E9%87%8C%E6%96%AF%C2%B7%E5%A8%81%E5%B0%94%E5%85%8B%E6%96%AF),第一台有libary的計算機 1968第三屆:[理察·衛斯里·漢明](https://zh.wikipedia.org/zh-tw/%E7%90%86%E6%9F%A5%E5%BE%B7%C2%B7%E8%A1%9B%E6%96%AF%E9%87%8C%C2%B7%E6%BC%A2%E6%98%8E):[hamming code](https://zh.wikipedia.org/zh-tw/%E6%B1%89%E6%98%8E%E7%A0%81)(可以檢查錯誤) 1969第四屆:[馬文·明斯基](https://zh.wikipedia.org/zh-tw/%E9%A9%AC%E6%96%87%C2%B7%E9%97%B5%E6%96%AF%E5%9F%BA),提出單層感知器不能解決XOR問題 1970第五屆:[詹姆斯·威爾金森](https://zh.wikipedia.org/zh-tw/%E8%A9%B9%E5%A7%86%E6%96%AF%C2%B7%E5%A8%81%E5%B0%94%E9%87%91%E6%A3%AE),矩陣運算貢獻 1971第六屆:[約翰·麥卡錫](https://zh.wikipedia.org/zh-tw/%E7%BA%A6%E7%BF%B0%C2%B7%E9%BA%A6%E5%8D%A1%E9%94%A1),發明LISP,提出人工智慧 1972第七屆:[艾茲赫爾·戴克斯特拉](https://zh.wikipedia.org/zh-tw/%E8%89%BE%E5%85%B9%E8%B5%AB%E5%B0%94%C2%B7%E6%88%B4%E5%85%8B%E6%96%AF%E7%89%B9%E6%8B%89):GOTO有害論,銀行家算法 1973第八屆:[查爾斯·巴赫曼](https://zh.wikipedia.org/zh-tw/%E6%9F%A5%E5%B0%94%E6%96%AF%C2%B7%E5%B7%B4%E8%B5%AB%E6%9B%BC),網狀資料庫,三層模型 1974第九屆:[高德納](https://zh.wikipedia.org/zh-tw/%E9%AB%98%E5%BE%B7%E7%BA%B3),[LR parsers](https://zh.wikipedia.org/zh-tw/LR%E5%89%96%E6%9E%90%E5%99%A8)(剖析器) 1975第十屆:[艾倫·紐厄爾](https://zh.wikipedia.org/wiki/%E8%89%BE%E4%BC%A6%C2%B7%E7%BA%BD%E5%8E%84%E5%B0%94)+[司馬賀](https://zh.wikipedia.org/zh-tw/%E5%8F%B8%E9%A9%AC%E8%B4%BA),人工智慧方面 1976第十一屆:[麥可·拉賓](https://zh.wikipedia.org/zh-tw/%E8%BF%88%E5%85%8B%E5%B0%94%C2%B7%E6%8B%89%E5%AE%BE_(%E7%A7%91%E5%AD%A6%E5%AE%B6))+[達納·斯科特](https://zh.wikipedia.org/zh-tw/%E8%BE%BE%E7%BA%B3%C2%B7%E6%96%AF%E7%A7%91%E7%89%B9),有限自動機與判定問題 1977第十二屆:[約翰·巴科斯](https://zh.wikipedia.org/zh-tw/%E7%B4%84%E7%BF%B0%C2%B7%E5%B7%B4%E7%A7%91%E6%96%AF),[BNF](https://zh.wikipedia.org/zh-tw/%E5%B7%B4%E7%A7%91%E6%96%AF%E8%8C%83%E5%BC%8F)(上下文無關文法的語言) 1978第十三屆:[羅伯特·弗洛伊德](https://zh.wikipedia.org/zh-tw/%E7%BD%97%E4%BC%AF%E7%89%B9%C2%B7%E5%BC%97%E6%B4%9B%E4%BC%8A%E5%BE%B7),最短路徑 1979第十四屆:[肯尼斯·艾佛森](https://zh.wikipedia.org/zh-tw/%E8%82%AF%E5%B0%BC%E6%96%AF%C2%B7%E8%89%BE%E4%BD%9B%E6%A3%AE),J語言 1980第十五屆:[東尼·霍爾](https://zh.wikipedia.org/zh-tw/%E6%9D%B1%E5%B0%BC%C2%B7%E9%9C%8D%E7%88%BE),演算法,程式語言貢獻 1981第十六屆:[埃德加·科德](https://zh.wikipedia.org/zh-tw/%E5%9F%83%E5%BE%B7%E5%8A%A0%C2%B7%E7%A7%91%E5%BE%B7),關聯式資料庫 1982第十七屆:[史蒂芬·庫克](https://zh.wikipedia.org/zh-tw/%E5%8F%B2%E8%92%82%E8%8A%AC%C2%B7%E5%BA%93%E5%85%8B),[NP-complete](https://zh.wikipedia.org/zh-tw/NP%E5%AE%8C%E5%85%A8)(演算法) 1983第十八屆:[肯·湯普遜](https://zh.wikipedia.org/zh-tw/%E8%82%AF%C2%B7%E6%B1%A4%E6%99%AE%E9%80%8A)+[丹尼斯·里奇](https://zh.wikipedia.org/zh-tw/%E4%B8%B9%E5%B0%BC%E6%96%AF%C2%B7%E9%87%8C%E5%A5%87),C語言,UNIX作業系統 1984第十九屆:[尼克勞斯·維爾特](https://zh.wikipedia.org/zh-tw/%E5%B0%BC%E5%85%8B%E5%8A%B3%E6%96%AF%C2%B7%E7%BB%B4%E5%B0%94%E7%89%B9),各種程式語言(Pascal,Euler,Oberon...),[EBNF](https://zh.wikipedia.org/zh-tw/%E6%89%A9%E5%B1%95%E5%B7%B4%E7%A7%91%E6%96%AF%E8%8C%83%E5%BC%8F) 1985第二十屆:[理察·卡普](https://zh.wikipedia.org/zh-tw/%E7%90%86%E6%9F%A5%E5%BE%B7%C2%B7%E5%8D%A1%E6%99%AE),證明NP-complete的21個問題 1986第二十一屆:[約翰·霍普克洛夫特](https://zh.wikipedia.org/zh-tw/%E7%B4%84%E7%BF%B0%C2%B7%E9%9C%8D%E6%99%AE%E5%85%8B%E6%B4%9B%E5%A4%AB%E7%89%B9)+[羅伯特·塔揚](https://zh.wikipedia.org/zh-tw/%E7%BE%85%E4%BC%AF%E7%89%B9%C2%B7%E5%A1%94%E6%8F%9A),二分圖,各種算法 1987第二十二屆:[約翰·科克](https://zh.wikipedia.org/zh-tw/%E7%BA%A6%E7%BF%B0%C2%B7%E7%A7%91%E5%85%8B),RISC架構 1988第二十三屆:[伊凡·蘇澤蘭](https://zh.wikipedia.org/zh-tw/%E4%BC%8A%E5%87%A1%C2%B7%E8%98%87%E6%BE%A4%E8%98%AD),計算機圖形學,視窗電腦 1989第二十四屆:[威廉·卡韓](https://zh.wikipedia.org/zh-tw/%E5%A8%81%E5%BB%89%C2%B7%E5%8D%A1%E9%9F%93),IEEE754,浮點數 1990第二十五屆:[費南多·柯巴托](https://zh.wikipedia.org/zh-tw/%E8%B2%BB%E5%8D%97%E5%A4%9A%C2%B7%E6%9F%AF%E5%B7%B4%E6%89%98),[CTSS](https://zh.wikipedia.org/zh-tw/%E7%9B%B8%E5%AE%B9%E5%88%86%E6%99%82%E7%B3%BB%E7%B5%B1)(分時系統),[Multics](https://zh.wikipedia.org/zh-tw/Multics)(多工資訊與計算系統) 1991第二十六屆:[羅賓·米爾納](https://zh.wikipedia.org/zh-tw/%E7%BD%97%E5%AE%BE%C2%B7%E7%B1%B3%E5%B0%94%E7%BA%B3),[ML語言](https://zh.wikipedia.org/zh-tw/ML%E8%AF%AD%E8%A8%80)(函數式語言) 1992第二十七屆:[巴特勒·蘭普森](https://zh.wikipedia.org/zh-tw/%E5%B7%B4%E7%89%B9%E5%8B%92%C2%B7%E8%98%AD%E6%99%AE%E6%A3%AE),個人圖形化電腦 1993第二十八屆:[尤里斯·哈特馬尼斯](https://zh.wikipedia.org/zh-tw/%E5%B0%A4%E9%87%8C%E6%96%AF%C2%B7%E5%93%88%E7%89%B9%E9%A9%AC%E5%B0%BC%E6%96%AF)+[理察·斯特恩斯](https://zh.wikipedia.org/zh-tw/%E7%90%86%E6%9F%A5%E5%BE%B7%C2%B7%E6%96%AF%E7%89%B9%E6%81%A9%E6%96%AF),建立複雜度階層 1994第二十九屆:[愛德華·費根鮑姆](https://zh.wikipedia.org/zh-tw/%E6%84%9B%E5%BE%B7%E8%8F%AF%C2%B7%E8%B2%BB%E6%A0%B9%E9%AE%91%E5%A7%86),建立DENDRAL+[拉吉·瑞迪](https://zh.wikipedia.org/zh-tw/%E6%8B%89%E5%90%89%C2%B7%E7%91%9E%E8%BF%AA),自動駕駛 1995第三十屆:[曼紐爾·布盧姆](https://zh.wikipedia.org/zh-tw/%E6%9B%BC%E7%BA%BD%E5%B0%94%C2%B7%E5%B8%83%E5%8D%A2%E5%A7%86),布魯姆加速定理,提出BG(一種非對稱式加密系統) 1996第三十一屆:[阿米爾·伯努利](https://zh.wikipedia.org/zh-tw/%E9%98%BF%E7%B1%B3%E5%B0%94%C2%B7%E4%BC%AF%E5%8A%AA%E5%88%A9),引入時序 1997第三十二屆:[道格拉斯·恩格爾巴特](https://zh.wikipedia.org/zh-tw/%E9%81%93%E6%A0%BC%E6%8B%89%E6%96%AF%C2%B7%E6%81%A9%E6%A0%BC%E5%B0%94%E5%B7%B4%E7%89%B9),發明滑鼠,圖形介面互動先驅 1998第三十三屆:[詹姆斯·尼古拉·格雷](https://zh.wikipedia.org/zh-tw/%E8%A9%B9%E5%A7%86%E6%96%AF%C2%B7%E5%B0%BC%E5%8F%A4%E6%8B%89%C2%B7%E6%A0%BC%E9%9B%B7),資料庫方面貢獻 1999第三十四屆:[佛瑞德·布魯克斯](https://zh.wikipedia.org/zh-tw/%E4%BD%9B%E7%91%9E%E5%BE%B7%C2%B7%E5%B8%83%E9%AD%AF%E5%85%8B%E6%96%AF),開發OS/360 2000第三十五屆:[姚期智](https://zh.wikipedia.org/zh-tw/%E5%A7%9A%E6%9C%9F%E6%99%BA),密碼學,偽隨機數生成 2001第三十六屆:[奧利-約翰·達爾](https://zh.wikipedia.org/zh-tw/%E5%A5%A7%E5%88%A9-%E7%B4%84%E7%BF%B0%C2%B7%E9%81%94%E7%88%BE)+[克利斯登·奈加特](https://zh.wikipedia.org/zh-tw/%E5%85%8B%E5%88%A9%E6%96%AF%E7%99%BB%C2%B7%E5%A5%88%E5%8A%A0%E7%89%B9),發明simula物件導向程式語言 2002第三十七屆:[羅納德·李維斯特](https://zh.wikipedia.org/zh-tw/%E7%BD%97%E7%BA%B3%E5%BE%B7%C2%B7%E6%9D%8E%E7%BB%B4%E6%96%AF%E7%89%B9)+[阿迪·薩莫爾](https://zh.wikipedia.org/zh-tw/%E9%98%BF%E8%BF%AA%C2%B7%E8%90%A8%E8%8E%AB%E5%B0%94)+[倫納德·阿德曼](https://zh.wikipedia.org/zh-tw/%E4%BC%A6%E7%BA%B3%E5%BE%B7%C2%B7%E9%98%BF%E5%BE%B7%E6%9B%BC),發明RSA算法 2003第三十八屆:[艾倫·凱](https://zh.wikipedia.org/zh-tw/%E8%89%BE%E4%BC%A6%C2%B7%E5%87%AF),物件導向方面貢獻 2004第三十九屆:[文頓·瑟夫](https://zh.wikipedia.org/zh-tw/%E6%96%87%E7%89%B9%C2%B7%E7%91%9F%E5%A4%AB)+[羅伯特·卡恩](https://zh.wikipedia.org/zh-tw/%E7%BD%97%E4%BC%AF%E7%89%B9%C2%B7%E5%8D%A1%E6%81%A9),TCP/IP協定 2005第四十屆:[彼得·諾爾](https://zh.wikipedia.org/zh-tw/%E5%BD%BC%E5%BE%97%C2%B7%E8%AB%BE%E7%88%BE),Algol 60 語言 2006第四十一屆:[法蘭·艾倫](https://zh.wikipedia.org/zh-tw/%E6%B3%95%E5%85%B0%C2%B7%E8%89%BE%E4%BC%A6),編譯器方面貢獻 2007第四十二屆:[愛德蒙·克拉克](https://zh.wikipedia.org/zh-tw/%E7%88%B1%E5%BE%B7%E8%92%99%C2%B7%E5%85%8B%E6%8B%89%E5%85%8B)+[艾倫·愛默生](https://zh.wikipedia.org/zh-tw/%E8%89%BE%E4%BC%A6%C2%B7%E7%88%B1%E9%BB%98%E7%94%9F)+[約瑟夫·斯發基斯](https://zh.wikipedia.org/zh-tw/%E7%BA%A6%E7%91%9F%E5%A4%AB%C2%B7%E6%96%AF%E5%8F%91%E5%9F%BA%E6%96%AF),開發debugger 2008第四十屆:[芭芭拉·利斯科夫](https://zh.wikipedia.org/zh-tw/%E8%8A%AD%E8%8A%AD%E6%8B%89%C2%B7%E5%88%A9%E6%96%AF%E7%A7%91%E5%A4%AB),分散式程式語言方面 2009第四十一屆:[查爾斯·薩克爾](https://zh.wikipedia.org/zh-tw/%E6%9F%A5%E5%B0%94%E6%96%AF%C2%B7%E8%90%A8%E5%85%8B%E5%B0%94),第一台現代式窗型個人電腦 2010第四十二屆:[萊斯利·瓦利安特](https://zh.wikipedia.org/zh-tw/%E8%8E%B1%E6%96%AF%E5%88%A9%C2%B7%E7%93%A6%E5%88%A9%E5%AE%89%E7%89%B9),演算法方面貢獻 2011第四十三屆:[朱迪亞·珀爾](https://zh.wikipedia.org/zh-tw/%E6%9C%B1%E8%BF%AA%E4%BA%9A%C2%B7%E7%8F%80%E5%B0%94),發明貝式網路 2012第四十四屆:[莎菲·戈德瓦塞爾](https://zh.wikipedia.org/zh-tw/%E8%8E%8E%E8%8F%B2%C2%B7%E6%88%88%E5%BE%B7%E7%93%A6%E5%A1%9E%E5%B0%94)+[希爾維奧·米卡利](https://zh.wikipedia.org/zh-tw/%E5%B8%8C%E7%88%BE%E7%B6%AD%E5%A5%A7%C2%B7%E7%B1%B3%E5%8D%A1%E5%88%A9),密碼科學方面貢獻 2013第四十五屆:[萊斯利·蘭波特](https://zh.wikipedia.org/zh-tw/%E8%8E%B1%E6%96%AF%E5%88%A9%C2%B7%E5%85%B0%E6%B3%A2%E7%89%B9),引果邏輯時序,安全性與存活度,循序一致性...等理論 2014第四十六屆:[麥可·史東布雷克](https://zh.wikipedia.org/zh-tw/%E8%BF%88%E5%85%8B%E5%B0%94%C2%B7%E6%96%AF%E9%80%9A%E5%B8%83%E9%9B%B7%E5%85%8B),資料庫系統貢獻 2015第四十七屆:[惠特菲爾德·迪菲](https://zh.wikipedia.org/zh-tw/%E6%83%A0%E7%89%B9%E8%8F%B2%E7%88%BE%E5%BE%B7%C2%B7%E8%BF%AA%E8%8F%B2)+[馬丁·赫爾曼](https://zh.wikipedia.org/zh-tw/%E9%A6%AC%E4%B8%81%C2%B7%E8%B5%AB%E7%88%BE%E6%9B%BC),發明迪菲-赫爾曼密鑰交換 2016第四十八屆:[提姆·柏內茲-李](https://zh.wikipedia.org/zh-tw/%E8%92%82%E5%A7%86%C2%B7%E4%BC%AF%E7%BA%B3%E6%96%AF-%E6%9D%8E),發明全球資訊網 2017第四十九屆:[約翰·軒尼詩](https://zh.wikipedia.org/zh-tw/%E7%B4%84%E7%BF%B0%C2%B7%E8%BB%92%E5%B0%BC%E8%A9%A9)+[大衛·帕特森](https://zh.wikipedia.org/zh-tw/%E5%A4%A7%E8%A1%9B%C2%B7%E5%B8%95%E7%89%B9%E6%A3%AE_(%E5%AD%B8%E8%80%85)),計算機結構方面貢獻 2018第五十屆:[約書亞·班吉歐](https://zh.wikipedia.org/zh-tw/%E7%BA%A6%E4%B9%A6%E4%BA%9A%C2%B7%E6%9C%AC%E5%B8%8C%E5%A5%A5)+[傑佛瑞·辛頓](https://zh.wikipedia.org/zh-tw/%E6%9D%B0%E5%BC%97%E9%87%8C%C2%B7%E8%BE%9B%E9%A1%BF)+[楊立昆](https://zh.wikipedia.org/zh-tw/%E6%9D%A8%E7%AB%8B%E6%98%86),深度學習 2019第五十一屆:[艾德文·卡特姆](https://zh.wikipedia.org/zh-tw/%E8%89%BE%E5%BE%B7%E6%96%87%C2%B7%E5%8D%A1%E7%89%B9%E5%A7%86)+[派屈克·漢拉恩](https://zh.wikipedia.org/zh-tw/%E5%B8%95%E7%89%B9%E9%87%8C%E5%85%8B%C2%B7%E6%B1%89%E6%8B%89%E6%81%A9),3D圖型學貢獻 2020第五十二屆:[阿爾佛雷德·艾侯](https://zh.wikipedia.org/zh-tw/%E9%98%BF%E5%B0%94%E4%BD%9B%E9%9B%B7%E5%BE%B7%C2%B7%E8%89%BE%E4%BE%AF)+[傑弗瑞·烏爾曼](https://zh.wikipedia.org/zh-tw/%E6%9D%B0%E5%BC%97%E7%91%9E%C2%B7%E4%B9%8C%E5%B0%94%E6%9B%BC),程式語言演算法與理論方面 2021第五十三屆:[傑克·唐加拉](https://zh.wikipedia.org/zh-tw/%E6%9D%B0%E5%85%8B%C2%B7%E5%94%90%E5%8A%A0%E6%8B%89),數值分析貢獻 2022第五十四屆:[勞勃·梅特卡夫](https://zh.wikipedia.org/zh-tw/%E7%BE%85%E4%BC%AF%E7%89%B9%C2%B7%E6%A2%85%E7%89%B9%E5%8D%A1%E5%A4%AB),乙太網路發明 [CSMA](https://zh.wikipedia.org/zh-tw/%E8%BD%BD%E6%B3%A2%E4%BE%A6%E5%90%AC%E5%A4%9A%E8%B7%AF%E8%AE%BF%E9%97%AE):檢測不會碰撞才傳送 ## 第九周 霍夫曼編碼是一種壓縮方法 [entropy](https://zh.wikipedia.org/zh-tw/%E7%86%B5):接收的每條消息中包含的資訊的平均量(平均編碼資訊量) [heapsort](https://zh.wikipedia.org/zh-tw/%E5%A0%86%E6%8E%92%E5%BA%8F):堆積排序法 [隨機變數](https://zh.wikipedia.org/zh-tw/%E9%9A%8F%E6%9C%BA%E5%8F%98%E9%87%8F):隨機試驗結果的變數 [廣度優先搜尋](https://zh.wikipedia.org/zh-tw/%E5%B9%BF%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2)(BFS):從根往下,沿寬度遍歷 [深度優先搜尋](https://zh.wikipedia.org/zh-tw/%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2)(DFS):從根往下,搜到無子節點在換下一條 [深度,廣度優先搜尋程式碼](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/06-%E6%90%9C%E5%B0%8B%E6%B3%95/02-search/graph_search.py) ### 習題 1. 用搜尋演算法求下列其中一個問題的解 老鼠走迷宮 《狼、羊、甘藍菜》過河的問題 八個皇后問題 ## 第十周 [狼、羊、甘藍菜問題程式碼(js)](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/06-%E6%90%9C%E5%B0%8B%E6%B3%95/Q2-river/%E7%BF%92%E9%A1%8C%EF%BC%9A%E3%80%8A%E7%8B%BC%E3%80%81%E7%BE%8A%E3%80%81%E7%94%98%E8%97%8D%E8%8F%9C%E3%80%8B%E9%81%8E%E6%B2%B3%E7%9A%84%E5%95%8F%E9%A1%8C.md) [狼、羊、甘藍菜問題程式碼(py)](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/06-%E6%90%9C%E5%B0%8B%E6%B3%95/Q2-river/river.py) [LLAMA](https://zh.wikipedia.org/zh-tw/LLaMA):大型語言訓練模型,[官方網站](https://ai.meta.com/llama/) 單一的.c檔可以直接載入llama:[程式碼](https://github.com/karpathy/llama2.c) [zig](https://ziglang.org/):想取代C,但不想像C++這麼複雜,適合寫作業系統 [bun](https://bun.sh/):可以比deno和node.js更快 純數學領域:代數,幾何,分析 ## 習題 1. 請寫一個程式可以求解 n 次多項式 ## 第十一周 [施特拉森演算法](https://zh.wikipedia.org/zh-tw/%E6%96%BD%E7%89%B9%E6%8B%89%E6%A3%AE%E6%BC%94%E7%AE%97%E6%B3%95):計算矩陣乘法的演算法 動態規劃法:把原問題分解成多個簡單的子問題 用動態規劃法算巴斯卡三角形:[程式碼](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/08-%E5%8B%95%E6%85%8B%E8%A6%8F%E5%8A%83%E6%B3%95/combinatorial/CnkDynamic.py) [編輯距離](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/08-%E5%8B%95%E6%85%8B%E8%A6%8F%E5%8A%83%E6%B3%95/combinatorial/CnkDynamic.py):看需要多少次編輯才能將一個字符串變成另一個字符串,生物學經常用到,[程式碼](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/08-%E5%8B%95%E6%85%8B%E8%A6%8F%E5%8A%83%E6%B3%95/editDistance/editDistance.py) [UUID](https://zh.wikipedia.org/zh-tw/%E9%80%9A%E7%94%A8%E5%94%AF%E4%B8%80%E8%AF%86%E5%88%AB%E7%A0%81):一個128位元的識別碼(不易衝碼) [GUID](https://zh.wikipedia.org/zh-tw/%E5%85%A8%E5%B1%80%E5%94%AF%E4%B8%80%E6%A0%87%E8%AF%86%E7%AC%A6):128位元長的二進位整數(不易衝碼),[程式碼](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/09a-%E9%9A%A8%E6%A9%9F%E6%B3%95/guid.py) [蒙地卡羅法](https://zh.wikipedia.org/zh-tw/%E8%92%99%E5%9C%B0%E5%8D%A1%E7%BE%85%E6%96%B9%E6%B3%95):用亂數解決各種計算問題 [蒙地卡羅法算pi](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/09b-%E8%92%99%E5%9C%B0%E5%8D%A1%E7%BE%85%E6%B3%95/01-pi/monteCarloPi.py) ### 習題 1. (紅利題):用遞迴寫最小編輯距離 ## 第十二周 [拉斯維加斯算法](https://zh.wikipedia.org/zh-tw/%E6%8B%89%E6%96%AF%E7%BB%B4%E5%8A%A0%E6%96%AF%E7%AE%97%E6%B3%95) [T檢定](https://zh.wikipedia.org/zh-tw/%E5%8F%B8%E5%BE%92%E9%A0%93t%E6%AA%A2%E5%AE%9A):在統計學中非常重要,[程式碼](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/09b-%E8%92%99%E5%9C%B0%E5%8D%A1%E7%BE%85%E6%B3%95/03-centrolLimit/ttest1.py) [布萊克-休斯模型](https://zh.wikipedia.org/zh-tw/%E5%B8%83%E8%8E%B1%E5%85%8B-%E8%88%92%E5%B0%94%E6%96%AF%E6%A8%A1%E5%9E%8B):經濟學中的重要模型,有隨機性 在算機率的不一定都是蒙地卡羅,蒙地卡羅要有隨機性 [馬克夫練](https://zh.wikipedia.org/zh-tw/%E9%A9%AC%E5%B0%94%E5%8F%AF%E5%A4%AB%E9%93%BE) gibbs在算所有進出機率平衡,[gibbs程式碼](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/09b-%E8%92%99%E5%9C%B0%E5%8D%A1%E7%BE%85%E6%B3%95/05-markov/gibbs.py) [貝氏定理](https://zh.wikipedia.org/zh-tw/%E8%B4%9D%E5%8F%B6%E6%96%AF%E5%AE%9A%E7%90%86):機率統計上常用到,從A->B的機率推論出B->A的機率 [貝氏分類器](https://zh.wikipedia.org/zh-tw/%E6%9C%B4%E7%B4%A0%E8%B4%9D%E5%8F%B6%E6%96%AF%E5%88%86%E7%B1%BB%E5%99%A8),[程式碼](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/09b-%E8%92%99%E5%9C%B0%E5%8D%A1%E7%BE%85%E6%B3%95/06-bayes/naiveProb.py) [隱馬克夫模型](https://zh.wikipedia.org/zh-tw/%E9%9A%90%E9%A9%AC%E5%B0%94%E5%8F%AF%E5%A4%AB%E6%A8%A1%E5%9E%8B) [期望最大化算法(EM算法)](https://zh.wikipedia.org/zh-tw/%E6%9C%80%E5%A4%A7%E6%9C%9F%E6%9C%9B%E7%AE%97%E6%B3%95),[EM程式碼](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/09b-%E8%92%99%E5%9C%B0%E5%8D%A1%E7%BE%85%E6%B3%95/08-em/em.py) [受限玻爾茲曼機](https://zh.wikipedia.org/zh-tw/%E5%8F%97%E9%99%90%E7%8E%BB%E5%B0%94%E5%85%B9%E6%9B%BC%E6%9C%BA):與AI有關係,在神經網路的學習方面 [基因演算法](https://zh.wikipedia.org/zh-tw/%E9%81%97%E4%BC%A0%E7%AE%97%E6%B3%95):用程式模擬物競天擇,適者生存 [A*搜尋演算法](https://zh.wikipedia.org/zh-tw/A*%E6%90%9C%E5%B0%8B%E6%BC%94%E7%AE%97%E6%B3%95),[A*程式碼](https://github.com/ccc112a/py2cs/blob/master/02-%E6%BC%94%E7%AE%97%E6%B3%95/02-%E6%96%B9%E6%B3%95/06-%E6%90%9C%E5%B0%8B%E6%B3%95/05a-Astar/astar.py)(這個程式好玩~),給定起點,終點,中間障礙,程式會找出一條路 ## 第十三周 前處理法:建索引...等等 委託法:尋找別人寫好的函式庫,可以用[這個網站](https://pypi.org/) [線性規劃](https://zh.wikipedia.org/zh-tw/%E7%BA%BF%E6%80%A7%E8%A7%84%E5%88%92):在限制中找最大值,可以有小數 [單體法](https://zh.wikipedia.org/zh-tw/%E7%BA%BF%E6%80%A7%E8%A7%84%E5%88%92):線性規劃的一種方法,但效率不高 [B-tree](https://zh.wikipedia.org/zh-tw/B%E6%A0%91):一種樹狀資料結構 分層法:針對複雜的系統拆成小層處理 [化約法](https://zh.wikipedia.org/zh-tw/%E6%AD%B8%E7%B4%84):將一個問題轉換成另一個問題,求解後對應回原問題之解的方法 [整數規劃](https://zh.wikipedia.org/zh-tw/%E6%95%B4%E6%95%B0%E8%A7%84%E5%88%92):在限制中找最大值,只能有整數解,會是NP-complete問題 [希爾伯特23個問題](https://zh.wikipedia.org/zh-tw/%E5%B8%8C%E5%B0%94%E4%BC%AF%E7%89%B9%E7%9A%8423%E4%B8%AA%E9%97%AE%E9%A2%98) [歸結原理](https://zh.wikipedia.org/zh-tw/%E5%BD%92%E7%BB%93%E5%8E%9F%E7%90%86) [哥德爾完備定理](https://zh.wikipedia.org/zh-tw/%E5%93%A5%E5%BE%B7%E5%B0%94%E5%AE%8C%E5%A4%87%E6%80%A7%E5%AE%9A%E7%90%86):在一階邏輯中的所有公式都可以證明 [喬姆斯基](https://zh.wikipedia.org/wiki/%E8%AF%BA%E5%A7%86%C2%B7%E4%B9%94%E5%A7%86%E6%96%AF%E5%9F%BA):生成語法,語言方面的大師 [喬姆斯基階乘](https://zh.wikipedia.org/zh-tw/%E4%B9%94%E5%A7%86%E6%96%AF%E5%9F%BA%E8%B0%B1%E7%B3%BB) [BNF(Backus Normal Form)](https://zh.wikipedia.org/zh-tw/%E5%B7%B4%E7%A7%91%E6%96%AF%E8%8C%83%E5%BC%8F):一種上下文無關文法的語言 [有限狀態機](https://zh.wikipedia.org/zh-tw/%E6%9C%89%E9%99%90%E7%8A%B6%E6%80%81%E6%9C%BA) ### 習題 1. 把從希爾伯特經圖靈到 NP-Complete 的故事寫下來 ## 第十四周 [希爾伯特23個問題](https://zh.wikipedia.org/zh-tw/%E5%B8%8C%E5%B0%94%E4%BC%AF%E7%89%B9%E7%9A%8423%E4%B8%AA%E9%97%AE%E9%A2%98) 連續統假設:一步步推論出結果[程式碼](https://github.com/ccc112a/py2cs/blob/master/06-%E8%A8%88%E7%AE%97%E7%90%86%E8%AB%96/01-%E5%B8%8C%E7%88%BE%E4%BC%AF%E7%89%B9%E7%9A%84%E5%95%8F%E9%A1%8C.md) [羅素悖論](https://zh.wikipedia.org/zh-tw/%E7%BD%97%E7%B4%A0%E6%82%96%E8%AE%BA):使希爾伯特第二個問題受到矛盾 [哥德爾完備定理](https://zh.wikipedia.org/zh-tw/%E5%93%A5%E5%BE%B7%E5%B0%94%E5%AE%8C%E5%A4%87%E6%80%A7%E5%AE%9A%E7%90%86) [丘奇函數](https://zh.wikipedia.org/zh-tw/%E9%82%B1%E5%A5%87%E6%95%B0):一套代換系統,為函數式編程領域先驅 [圖靈機](https://zh.wikipedia.org/zh-tw/%E5%9B%BE%E7%81%B5%E6%9C%BA):一種計算模型 [丘奇-圖靈猜想](https://zh.wikipedia.org/zh-tw/%E9%82%B1%E5%A5%87-%E5%9B%BE%E7%81%B5%E8%AE%BA%E9%A2%98):任何在算法上可計算的問題同樣可由圖靈機計算 [SAT問題](https://zh.wikipedia.org/zh-tw/%E5%B8%83%E5%B0%94%E5%8F%AF%E6%BB%A1%E8%B6%B3%E6%80%A7%E9%97%AE%E9%A2%98):第一個NP完全問題 P: [確定型圖靈機](https://zh.wikipedia.org/wiki/%E5%9B%BE%E7%81%B5%E6%9C%BA)可以在多項式時間內解決的問題 NP: [非確定型圖靈機](https://zh.wikipedia.org/zh-tw/%E9%9D%9E%E7%A1%AE%E5%AE%9A%E5%9E%8B%E5%9B%BE%E7%81%B5%E6%9C%BA)可以在多項式時間內解決的問題 [量子電腦](https://zh.wikipedia.org/zh-tw/%E9%87%8F%E5%AD%90%E8%AE%A1%E7%AE%97%E6%9C%BA)是機率波的機器 [ENIAC](https://zh.wikipedia.org/zh-tw/%E9%9B%BB%E5%AD%90%E6%95%B8%E5%80%BC%E7%A9%8D%E5%88%86%E8%A8%88%E7%AE%97%E6%A9%9F):早期通用型電腦 [馮紐曼架構](https://zh.wikipedia.org/zh-tw/%E5%86%AF%C2%B7%E8%AF%BA%E4%BC%8A%E6%9B%BC%E7%BB%93%E6%9E%84):目前的電腦架構 ## 第十五周 [逼近法](https://zh.wikipedia.org/zh-tw/%E9%80%BC%E8%BF%91%E7%90%86%E8%AE%BA):運用函數無限的逼近正確答案,會有誤差 [史特靈公式](https://zh.wikipedia.org/zh-tw/%E5%8F%B2%E7%89%B9%E9%9D%88%E5%85%AC%E5%BC%8F):用來取n階乘近似值的公式 [蝴蝶效應](https://zh.wikipedia.org/zh-tw/%E8%9D%B4%E8%9D%B6%E6%95%88%E5%BA%94):在動態系統中,一個小改變會造成之後巨大的誤差(逼近法裡的誤差就是) 多次微分過後的誤差會非常巨大,可以換用符號微分(基本不會有誤差) [泰勒級數](https://zh.wikipedia.org/zh-tw/%E6%B3%B0%E5%8B%92%E7%BA%A7%E6%95%B0)(也是一種逼近) [黎曼積分](https://zh.wikipedia.org/zh-tw/%E9%BB%8E%E6%9B%BC%E7%A7%AF%E5%88%86)(也是一種逼近):用很多個矩形和逼近一個曲線的面積 [單純貝氏分類器](https://zh.wikipedia.org/wiki/%E6%9C%B4%E7%B4%A0%E8%B4%9D%E5%8F%B6%E6%96%AF%E5%88%86%E7%B1%BB%E5%99%A8):利用假設事件機率都獨立,來推斷綜合的機率 [Kubernetes(K8s)](https://zh.wikipedia.org/zh-tw/Kubernetes):一種容器系統,速度很快,google的,可能會取代docker [淘寶架構演進](https://www.readfog.com/a/1665362910517497856):因為docker的技術出現,造成架構的演進 [傅立葉轉換](https://zh.wikipedia.org/zh-tw/%E5%82%85%E9%87%8C%E5%8F%B6%E5%8F%98%E6%8D%A2):處理懸波和週期函數 一維適合處理語音 二維適合處理影像(可以用來壓縮,大概20倍,例如:jpg檔) [沃爾什轉換](https://zh.wikipedia.org/zh-tw/%E6%B2%83%E7%88%BE%E4%BB%80%E8%BD%89%E6%8F%9B) [海蒂·拉瑪](https://zh.wikipedia.org/zh-tw/%E6%B5%B7%E8%92%82%C2%B7%E6%8B%89%E7%8E%9B):研發秘密通信系統(日後成為5G的技術關鍵) [拉普拉斯轉換](https://zh.wikipedia.org/zh-tw/%E6%8B%89%E6%99%AE%E6%8B%89%E6%96%AF%E5%8F%98%E6%8D%A2):用在解微分方程式,先轉成多項式去解,後再轉回微分方程式 [Z轉換](https://zh.wikipedia.org/zh-tw/Z%E8%BD%89%E6%8F%9B) ## 第十六周 python有支援複數,但是是用j表示 手機內的RF模組基本上都是高通做的(高通前身是[Linkabit](https://en.wikipedia.org/wiki/Linkabit)) [摩爾定律](https://zh.wikipedia.org/zh-tw/%E6%91%A9%E5%B0%94%E5%AE%9A%E5%BE%8B)(最近已經失效了):電晶體兩年會長一倍 [威廉·肖克利](https://zh.wikipedia.org/zh-tw/%E5%A8%81%E5%BB%89%C2%B7%E8%82%96%E5%85%8B%E5%88%A9):和另一個人發明電晶體,發明MOS(目前主流是CMOS) [相量](https://zh.wikipedia.org/zh-tw/%E7%9B%B8%E9%87%8F) [Norm](https://zh.wikipedia.org/zh-tw/%E8%8C%83%E6%95%B0)(人工智慧中重要的東西) 任何東西經過轉換之後都可以用700維向量表示 線性代數橫跨代數和幾何 這周教的大部分都是數學,我數學不適很好,所以很多都聽不太懂 ## 第十七周 [正規表達式](https://zh.wikipedia.org/zh-tw/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F):用簡單字串來描述、符合文中全部符合指定格式的字串 +代表1以上 *代表0以上 ?代表0到1之間 [KMP演算法](https://zh.wikipedia.org/zh-tw/KMP%E7%AE%97%E6%B3%95):一種字串對比的演算法 霍夫曼編碼用來壓縮很差,用[LZW](https://zh.wikipedia.org/zh-tw/LZW)壓所更好 [Trie](https://zh.wikipedia.org/zh-tw/Trie):一種多元樹 [Radix Trie](https://zh.wikipedia.org/zh-tw/%E5%9F%BA%E6%95%B0%E6%A0%91):一種相較Trie更省空間的樹 [倒排索引](https://zh.wikipedia.org/zh-tw/%E5%80%92%E6%8E%92%E7%B4%A2%E5%BC%95):一種前處理 [PageRank](https://zh.wikipedia.org/zh-tw/PageRank):google用來對搜尋結果中的網頁進行排名的一種演算法 [離散餘弦轉換](https://zh.wikipedia.org/zh-tw/%E7%A6%BB%E6%95%A3%E4%BD%99%E5%BC%A6%E5%8F%98%E6%8D%A2) 圖形理論可以使用[NetworkX](https://networkx.org/)這個套件 [戴克斯特拉演算法](https://zh.wikipedia.org/wiki/%E6%88%B4%E5%85%8B%E6%96%AF%E7%89%B9%E6%8B%89%E7%AE%97%E6%B3%95) [最大流問題](https://zh.wikipedia.org/zh-tw/%E6%9C%80%E5%A4%A7%E6%B5%81%E9%97%AE%E9%A2%98):在一個單源點、單匯點的網路流中找到一條最大的流 [凱薩密碼](https://zh.wikipedia.org/zh-tw/%E5%87%B1%E6%92%92%E5%AF%86%E7%A2%BC):位移加密 [維吉尼亞密碼](https://zh.wikipedia.org/zh-tw/%E7%BB%B4%E5%90%89%E5%B0%BC%E4%BA%9A%E5%AF%86%E7%A0%81) [XOR加密](https://zh.wikipedia.org/zh-tw/%E5%BC%82%E6%88%96%E5%AF%86%E7%A0%81):先轉成ASCII後進行XOR運算 [AES](https://zh.wikipedia.org/zh-tw/%E9%AB%98%E7%BA%A7%E5%8A%A0%E5%AF%86%E6%A0%87%E5%87%86):美國聯邦政府採用的一種區塊加密標準,用來取代DES [迪菲-赫爾曼金鑰交換](https://zh.wikipedia.org/wiki/%E8%BF%AA%E8%8F%B2-%E8%B5%AB%E7%88%BE%E6%9B%BC%E5%AF%86%E9%91%B0%E4%BA%A4%E6%8F%9B):影響後來RSA加密法 [RSA加密](https://zh.wikipedia.org/zh-tw/RSA%E5%8A%A0%E5%AF%86%E6%BC%94%E7%AE%97%E6%B3%95) [伽羅瓦體](https://zh.wikipedia.org/wiki/%E6%9C%89%E9%99%90%E5%9F%9F)