S SmartDocs

Algoritmos e estruturas de dados

Ordenação, árvores, hashing, algoritmos de grafos, KMP, prática de LeetCode e análise de algoritmos.

Algorithms 中文 Atualizado 2026-03-06

KMP KnuthMorrisPratt 字串匹配演算法 — 完整教學

1. 問題定義1問題定義 2. 暴力法(Brute Force)及其缺點2暴力法bruteforce及其缺點 3. KMP 的核心思想3kmp的核心思想 4. 前綴函數(Failure Function / Partial Match Table)4前綴函數failurefunctionpartialmatchtable 5. 前綴函數的建構過程5前綴函數的建構過程 6. KMP 搜尋過程6kmp搜尋過程 7. 完整手動推演範例7完整手

Ler artigo →
Algorithms 中文 Atualizado 2026-05-24

Knuth–Morris–Pratt KMP 字串匹配演算法 — 完整教材

適用對象:演算法初學者到中階;含完整理論、6 個手動推演例子、可編譯的 C++ 程式碼,以及進階應用。

Ler artigo →
Algorithms 中文 Atualizado 2026-04-26

KMP 與 LPS 演算法 — 完整教學(含多範例逐步推導)

本教材把 LPS(Longest Proper Prefix–Suffix) 與 KMP(Knuth–Morris–Pratt) 當成兩個獨立但相依的主題。 LPS 不只是 KMP 的副產物,它本身就是一個強大的字串工具;KMP 則是 LPS 最有名的應用之一。

Ler artigo →
Algorithms 中文 Atualizado 2026-03-28

遞迴 Recursion — 完整教學

1. 什麼是遞迴?1什麼是遞迴 2. 遞迴的三大要素2遞迴的三大要素 3. 遞迴的執行原理:Call Stack3遞迴的執行原理callstack 4. 經典遞迴範例4經典遞迴範例 5. 遞迴的優點5遞迴的優點 6. 遞迴的缺點6遞迴的缺點 7. 遞迴 vs 迭代 比較表7遞迴vs迭代比較表 8. 如何將遞迴改成非遞迴(迭代)8如何將遞迴改成非遞迴迭代 9. 轉換技巧總結9轉換技巧總結 10. 進階:尾遞迴優化10進階尾遞迴優化 11.

Ler artigo →
Algorithms 中文 Atualizado 2026-07-03

排序演算法全集(C++17)

每個檔案都是獨立、可編譯執行的示範程式,內含:原理註解、複雜度分析、 穩定性說明、多組測試(含空陣列、單元素、已排序、反向、重複元素等邊界情況)。

Ler artigo →
Algorithms 中文 Atualizado 2026-04-12

排序演算法 — 教材(含 C++ 範例)

1. 總覽與比較1總覽與比較 2. 氣泡排序(Bubble Sort)2氣泡排序bubblesort 3. 選擇排序(Selection Sort)3選擇排序selectionsort 4. 插入排序(Insertion Sort)4插入排序insertionsort 5. 希爾排序(Shell Sort)5希爾排序shellsort 6. 合併排序(Merge Sort)6合併排序mergesort 7. 快速排序(Quick Sor

Ler artigo →
Algorithms 中文 Atualizado 2026-04-26

Splay Tree(伸展樹)演算法完整教學

1. Splay Tree 簡介與動機1splaytree簡介與動機 2. 基本性質與設計理念2基本性質與設計理念 3. 基本旋轉(Left / Right Rotation)3基本旋轉leftrightrotation 4. Splaying 操作 — 三種情況4splaying操作三種情況 4.1 Zig(單旋)41zig單旋 4.2 ZigZig(同向雙旋)42zigzig同向雙旋 4.3 ZigZag(異向雙旋)43zigzag

Ler artigo →
Algorithms 中文 Atualizado 2026-04-26

第三方支付平台前後端完整教學 — 類 Stripe / PayPal 架構、API 對接與 Webhook

本教材介紹第三方支付平台的全端架構與 API 對接方式,並以類似 Stripe.com、PayPal 的產品型態作為參考。 內容涵蓋商戶前端、商戶後端、支付平台、收單銀行、卡組織、Webhook、退款、對帳、安全與錯誤處理。 注意:Stripe、PayPal 的實際 API 會隨版本與地區改變。本文使用教學用 API 形狀說明設計思想,實作時應以官方文件與合約為準。

Ler artigo →
Algorithms 中文 Atualizado 2026-03-28

Tree、Binary Tree、Balanced Binary Tree — 完整教學

1. Tree(樹)基本概念1tree樹基本概念 2. Tree 的表示法2tree的表示法 3. Tree 的遍歷(Traversal)3tree的遍歷traversal 4. Binary Tree(二元樹)4binarytree二元樹 5. Binary Tree 的性質與定理5binarytree的性質與定理 6. Binary Tree 的遍歷6binarytree的遍歷 7. Binary Search Tree(二元搜尋樹

Ler artigo →
Automata 中文 Atualizado 2026-07-15

練習題完全詳解[0.3em] 不可判定性 · NP 完備 · DPLL · 2SAT · 機率圖靈機 · 單純形法 · TSP[0.5em] 5CCS2FC2 Foundations of Computing II — 測驗題逐題解析

本詳解的使用方式 十四張截圖共包含: :不可判定性測驗,共 5 題選擇題,主題對應 Week 10(可判定語言、停機問題、Entscheidungsproblem)。 :綜合測驗,共 11 題,涵蓋 NP 類別、SAT CLIQUE 歸約、主定理、DPLL 演算法、2SAT 蘊涵圖、機率圖靈機、單純形法、TSP 的 2-opt 與近似演算法。 每題的格式為: 。建議先自己作答,再對照解析。

Ler artigo →
Automata 中文 Atualizado 2026-07-23

第一部分:選擇題(第 1–10 題,共 50 分)

本試卷共 13 題,限時兩小時: [nosep] (共 50 分):選擇題,每題有一個或多個正確選項。必須選出正確選項且多選,選錯會倒扣分數。 (每題 25 分):三題長答題中作答。 本詳解涵蓋全部 13 題:先完整重述並解析每個題目在問什麼、考哪個觀念,再一步一步推導出解答。

Ler artigo →
Automata 中文 Atualizado 2026-07-23

第一部分:選擇題(第 1–10 題,共 50 分)

本試卷共 13 題,限時兩小時: [nosep] (共 50 分):選擇題,每題有一個或多個正確選項。必須選出正確選項且多選,選錯會倒扣分數。 (每題 25 分):三題長答題中作答。 本詳解涵蓋全部 13 題:先完整重述並解析每個題目在問什麼、考哪個觀念,再一步一步推導出解答。

Ler artigo →
Automata 中文 Atualizado 2026-06-10

計算理論基礎:有限自動機、正則語言與圖靈機[4pt] 完整教材(依據 5CCS2FC2 Foundations of Computing II 第一週內容編寫)

[notebox,title=本週學習目標] [leftmargin=2em,itemsep=1pt] 複習與的形式定義、組態(configuration)與計算(computation)。 理解與,以及它們與有限自動機的等價性(Kleene 定理)。 透過鴿籠原理證明 L=anbn ,並掌握一般化工具——。 認識的形式定義、接受準則,以及「機器可能不停機」帶來的根本差異。 認識及其與確定性圖靈機的等價性。 理解 的內容、地位與支持證據

Ler artigo →
Automata 中文 Atualizado 2026-07-15

計算的極限[0.3em] 不可判定性與 Entscheidungsproblem 學習教材[0.5em] 5CCS2FC2 Foundations of Computing II — Week 10 白話講義

本講義在講什麼? 這份教材對應 Week 10 的兩份投影片: :什麼是「可判定的語言」?是否所有問題都能用電腦解決?如何把圖靈機本身編碼成字串,並造出一台能模擬所有機器的「萬能圖靈機」? :希爾伯特提出的「判定問題」(Entscheidungsproblem)——是否存在一個演算法,能判斷任何邏輯公式是否恆真?答案是「不存在」,而本講義將白話解釋為什麼。 一句話總結本週主題:

Ler artigo →
Automata 中文 Atualizado 2026-07-08

計算的極限:不可判定性[4pt] 完整教材(依據 5CCS2FC2 Foundations of Computing II 第十週內容編寫)[2pt] 通用圖靈機、對角線論證、停機問題與 Entscheidungsproblem

[notebox,title=本週學習目標] [leftmargin=2em,itemsep=1pt] 理解的三要件:健全(sound)、完備(complete)、必停機(terminating)。 掌握與的概念。 用證明:不可判定的語言。 完整掌握不可判定的證明(自我指涉與矛盾)。 認識其他不可判定問題:、、、、,與技巧、Rice 定理。 理解希爾伯特的 為何不可判定,及其歷史意義(Turing 1936、Church)。

Ler artigo →
Automata 中文 Atualizado 2026-07-08

計算極限之外:可計算枚舉性與映射歸約[4pt] 完整教材(依據 5CCS2FC2 Foundations of Computing II 第十一週內容編寫)[2pt] 半可判定性、交錯模擬、co-C.E. 與映射歸約

[notebox,title=本週學習目標] [leftmargin=2em,itemsep=1pt] 理解語言:放棄「必停機」、只保留健全與完備。 證明與非空問題是 C.E.,並掌握技巧。 理解 與核心定理:L與皆 C.E. L可判定。 由此推出、C.E.——存在「連半個演算法都沒有」的問題。 掌握A B的正式定義、基本定理與使用方法。 完整走過兩個歸約:與。

Ler artigo →
Automata 中文 Atualizado 2026-06-18

複雜度類 NP 專題[4pt] 從「驗證 vs. 求解」談起,並詳述百萬美元問題 P vs NP

[notebox,title=本講學習目標] [leftmargin=2em,itemsep=1pt] 從日常直覺理解 的核心精神:。 精確掌握 的:非確定性圖靈機(NDTM)與。 透過(數獨、SAT、子集和、地圖著色、團、旅行推銷員)體會何謂 問題。 釐清 、、、-complete 之間的關係。 理解 這個百萬美元問題:它在問什麼、歷史、若 = 的後果、現況與常見誤解。

Ler artigo →
Automata 中文 Atualizado 2026-06-10

P 與 NP:百萬美元問題[4pt] 完整教材(依據 5CCS2FC2 Foundations of Computing II 第二週內容編寫)

[notebox,title=本週學習目標] [leftmargin=2em,itemsep=1pt] 掌握O, , 與常見成長階層。 理解T_M(n)與複雜度類、的定義,以及兩者的關係。 認識:真值表、DNF/CNF 正規形,並證明。 理解與X Y,以及、的定義與證明策略。 透過兩個經典歸約與,實際操作「NP-完備性證明」。 理解 問題的內容、重要性與現況。

Ler artigo →
Automata 中文 Atualizado 2026-06-22

數學歸納法:代入法

[notebox,title=本週學習目標] [leftmargin=2em,itemsep=1pt] 熟練與,並用以證明遞迴關係的封閉式解。 理解的三步驟,並掌握兩個經典演算法:與。 學會由演算法,再求其漸進成長率。 精通的三種情形,並能快速套用。 理解 如何把任意 問題的計算「編碼成布林公式」,證明 是 NP-complete。

Ler artigo →
Automata 中文 Atualizado 2026-06-29

圖論演算法導論[4pt] 完整教材(依據 5CCS2FC2 Foundations of Computing II 第四週內容編寫)[2pt] BFS / DFS、最小生成樹、拓撲排序與強連通元件

[notebox,title=本週學習目標] [leftmargin=2em,itemsep=1pt] 認識與圖演算法的時間度量T(|V|,|E|)。 掌握與,並理解其O(|V|+|E|)複雜度。 理解,精通 與 兩個貪婪演算法及其正確性(割性質/環性質)。 認識與。 理解、凝聚圖為 DAG 的證明,以及 兩趟 DFS 演算法。

Ler artigo →
Automata 中文 Atualizado 2026-07-02

SAT 求解導論[4pt] 完整教材(依據 5CCS2FC2 Foundations of Computing II 第五週內容編寫)[2pt] 受限 SAT、2-SAT 與蘊涵圖、DPLL 與貪婪局部搜尋

[notebox,title=本週學習目標] [leftmargin=2em,itemsep=1pt] 理解:第一個 NP-complete 問題、所有 NP 問題的「通用語言」。 掌握與兩條多項式歸約鏈,特別是 的子句拆分技巧。 理解:蘊涵圖 + 強連通元件,並掌握其充要條件與正確性證明。 認識另一個容易的變體:。 掌握實務 SAT 求解的核心:、(單位傳播、純文字消去)與。

Ler artigo →
Automata 中文 Atualizado 2026-07-02

近似演算法與旅行推銷員問題[4pt] 完整教材(依據 5CCS2FC2 Foundations of Computing II 第七週內容編寫)[2pt] 最佳化問題、近似比、2OPT 演算法與不可近似性

[notebox,title=本週學習目標] [leftmargin=2em,itemsep=1pt] 分辨與,並理解最佳化問題的解空間、成本函數與全域/區域最佳。 認識,理解其判定版本是 NP-complete,以及最佳化版與判定版的等價性。 掌握的定義、R-可近似與不可近似的概念。 理解 (MST + 前序走訪 + swap),並證明它對 的近似比為 2。 認識 ,以及的證明。

Ler artigo →
Automata 中文 Atualizado 2026-07-08

線性規劃與整數規劃[4pt] 完整教材(依據 5CCS2FC2 Foundations of Computing II 第八週內容編寫)[2pt] 線性規劃、單純形法、整數規劃與分枝定界

[notebox,title=本週學習目標] [leftmargin=2em,itemsep=1pt] 理解:線性目標函數、線性限制式、可行區域與最佳解,並會用矩陣形式A表達。 會把實際問題(能源調度、工作指派)成線性/整數規劃。 掌握:鬆弛變數、表格(tableau)、樞軸運算,並能完整解出一個小型 LP。 知道單純形法最壞情況是(Klee–Minty),但 LP 本身可在求解(Khachiyan)。 理解是 NP-hard(),並掌

Ler artigo →
Automata 中文 Atualizado 2026-07-08

機率圖靈機與隨機複雜度類[4pt] 完整教材(依據 5CCS2FC2 Foundations of Computing II 第九週內容編寫)[2pt] 機率與期望值、機率圖靈機、BPP 與 ZPP

[notebox,title=本週學習目標] [leftmargin=2em,itemsep=1pt] 複習與。 掌握與其線性性質、、與標準差。 理解:機率轉移函數、計算樹、分支機率與接受機率。 掌握隨機複雜度類 (有界錯誤)與 (零錯誤),及其對應的與演算法。 理解定理 的完整證明(馬可夫不等式的應用)。 認識擴充後的複雜度階層,以及 與 、 之間的未解問題。

Ler artigo →