檢視 《演算法導論》筆記 的原始碼
←
《演算法導論》筆記
跳至導覽
跳至搜尋
由於下列原因,您沒有權限進行編輯此頁面的動作:
您請求的操作只有這個群組的使用者能使用:
使用者
您可以檢視並複製此頁面的原始碼。
{{isbn|9786263248366}}(4/e,繁中譯本,Thomas H. Cormen et al. 著作,賴屺民譯) 經典的演算法導論,但是封面樹形圖在繁中譯本沒有出現。 <span id="ch1ch2"></span> == Ch1、Ch2 == 任何輸入停止執行+正確答案=>演算法是正確的 # 不一定有最好的解決方案 # 有實際的應用 世上沒有一體適用的資料結構。 NP-complete:無法於特定時間內解決 * 平行模型演算法 * 線上演算法(輸入無法一次到位) 機械學習較成功的案例是,演算法中,人類無法理解的(比如自動翻譯) 插入排序法 vertex 頂點 迴圈不變性(loop invariant) 計算模型影響演算法的效率甚大 本書用一台單核的RAM(隨機存取機器)模型來當多數情況下的範例 輸入規模=>執行時間 (在RAM框架內) 一個假設「每行虛擬碼執行的時間是固定的」(雖然有時不是) 簡單的表示法:Big Theta、Big O 呼叫子程序的程序,和執行子程序的程序(caller, callee)分開計算 T(n) = a * n + k:執行時間是n的線性函數 [[插入排序法]]: * 最壞時間,是n^2,即二次函數 * 隨機演算法:輸入不變下,演算法特性不同 通常在本書中僅找最壞狀況 平均請況通常糟如最壞狀況 感興趣的是增長率(rate of growth; order of growth) 我們只於多項式考慮首項 Θ(n^2) = theta of n-squared big theta(Θ)表示增長率 演算法設計技術 漸增法=>插入排序法 分治法(divide-and-conquer) 分治法處理方法: * 遞迴結構分成子問題 * 遞迴處理 * 結合子問題 各問題的狀況分成 * 基本情況 * 分解 -> 處理 -> 合併 A[p:r] 求中間索引值 = floor((p+r)/2) =>遞迴分解 => 漸次求解 [[合併排序法]],關鍵: a[p:q] and a[q+1,r] -> merge(A,p,q,r) -> a[p:r] 合併要 Θ(n)時間。 合併演算法的T(n) = 2T(n/2) + Θ(n) Ch4介紹主定理 ==Ch 3== 參考[[:檔案:演算法導論Ch3部分筆記.pdf|此pdf]] 最後提到 *單調遞增、單調遞減 * floor(x), ceil(x) * a≡b (mod n) * forall constant a>1, b in real number * lim (n->inf) (n^b/a^n) = 0 * n->inf => n ^ b == 0(a^n) * lim (n->inf) (1+x/n)^n = e^x 還有一些函數的定義(中學數學等) == Ch4 分治法 == 分治法是用遞迴的方法來解決一個問題。 * 基本情境:只需直接處理不用遞迴 * 遞迴情況下執行: ** 分解 ** 處理 ** 合併 buttom out: * 不需繼續遞迴即可以解決 * 分拆分治法的遞迴式 '''遞迴式''' * 基本情況:fib(0) = 1 * 遞迴情況:fib(n) = fib(n-1)+fib(n-2) n_0 = 閾常數,如果: * n < n_0 => T(n) = θ (1) * n >= n_0 => 於有限的遞迴次數終止 =>T(n)是演算法相關的(algorithmic) [[category:資訊]]
此頁面使用了以下模板:
模板:ISBN
(
檢視原始碼
)
模板:Isbn
(
檢視原始碼
)
返回到「
《演算法導論》筆記
」。
導覽選單
個人工具
登入
命名空間
頁面
討論
變體
視圖
閱讀
檢視原始碼
檢視歷史
更多
搜尋
導覽
首頁
愛爾蘭語辭典
近期變更
隨機頁面
有關 MediaWiki 的說明
相關網站
總首頁
Blog
舊 blog
現用 blog 備份
工具
連結至此的頁面
相關變更
特殊頁面
頁面資訊