S SmartDocs

算法与数据结构

排序、树、哈希、图算法、KMP、LeetCode 练习与算法分析教材。

Algorithms 更新于 2026-07-24

3-SAT 完整教材:回溯與 DPLL

史上第一個被證明 NP-Complete 的問題:給一堆「三選一」的條件,找出讓全部條件成立的真假指派

阅读文章 →
Algorithms 更新于 2026-07-24

0/1 背包問題完整教材

容量有限、每件物品拿或不拿:NP-Hard 卻有偽多項式解法的代表作

阅读文章 →
Algorithms 更新于 2026-07-24

Subset Sum 與 Partition 完整教材

Subset Sum 與 PartitionSubset Sum / Partition — DP Meet-in-the-Middle 「湊得出這個數嗎?」——最精瘦的 NP-Complete 問題,以及把 2n 砍成 2n/2 的漂亮技巧

阅读文章 →
Algorithms 更新于 2026-07-24

N-Queens 完整教材:回溯法入門

回溯法的「Hello World」:學會在死路上及早回頭,一輩子受用

阅读文章 →
Algorithms 更新于 2026-07-24

Graph Coloring 完整教材

相鄰的點不能同色,最少要幾種顏色?從排課到暫存器分配都是它

阅读文章 →
Algorithms 更新于 2026-07-24

Vertex Cover 完整教材

用最少的守衛看住所有走廊:FPT 分支與「保證不超過兩倍」的近似法的最佳教室

阅读文章 →
Algorithms 更新于 2026-07-24

Independent Set 與 Clique 完整教材

「彼此都不認識的最大群體」與「彼此都認識的最大群體」——在補圖裡它們是同一個問題

阅读文章 →
Algorithms 更新于 2026-07-24

Hamiltonian Path 完整教材

每個點恰好經過一次:用位元把「走過哪些點」壓成一個整數,n! 變 2n

阅读文章 →
Algorithms 更新于 2026-07-24

TSP 完整教材:Held-Karp 與最近鄰啟發式

最著名的 NP-Hard 問題:精確解的極限在哪、啟發式又能多接近最優

阅读文章 →
Algorithms 更新于 2026-07-24

Set Cover 完整教材:貪心近似

用最少的集合蓋住全部元素:貪心法的近似保證與它「已是最優」的驚人事實

阅读文章 →
Algorithms 更新于 2026-07-24

Bin Packing 完整教材:First Fit Decreasing

固定容量的箱子最少用幾個:從搬家打包到雲端 VM 調度,以及「先放大件」的智慧

阅读文章 →
Algorithms 更新于 2026-07-24

Job Scheduling 完整教材:列表排程近似

n 個工作分給 m 台機器、最晚完工時間最短:近似演算法理論的誕生地(Graham 1966)

阅读文章 →
Algorithms 更新于 2026-07-24

遺傳演算法完整教材

把「物競天擇」寫成程式:不懂問題結構也能逼近好解的通用武器,本篇以 TSP 與背包實戰

阅读文章 →
Algorithms 更新于 2026-07-24

NP、NP-Complete 與 NP-Hard 完整白話教材

NP、NP-Complete 與 NP-Hard 完整白話教材 Computational Complexity — A Plain-Language Guide 從「為什麼有些問題算不動」出發,[2pt] 一路講到歸約、經典難題圖鑑、精確解、近似演算法、[2pt] 啟發式方法,以及真實世界如何與 NP 共處

阅读文章 →
Algorithms 更新于 2026-04-05

Balanced Binary Search Tree — AVL Tree、RedBlack Tree、由遍歷重建樹

Part I — AVL Tree 1. AVL Tree 定義與性質1avltree定義與性質 2. Balance Factor 與高度2balancefactor與高度 3. AVL 的四種旋轉3avl的四種旋轉 4. AVL 插入4avl插入 5. AVL 刪除5avl刪除 6. AVL 完整範例推演6avl完整範例推演

阅读文章 →
Algorithms 更新于 2026-04-26

銀行系統前後端完整教學 — 架構、流程、API、安全與交易一致性

本教材從工程角度介紹一個現代銀行系統如何設計前端、後端、資料庫、交易流程、安全控管與 API。 內容適合作為系統設計、金融科技後端、全端開發與面試準備教材。 注意:真實銀行系統會受到法規、內控、資安稽核與核心銀行主機限制,本教材以教學用架構為主,不構成金融或法遵建議。

阅读文章 →
Algorithms 更新于 2026-04-26

Disjoint Set(並查集 / UnionFind)演算法完整教學

1. Disjoint Set 簡介與動機1disjointset簡介與動機 2. 基本術語與資料結構2基本術語與資料結構 3. 三大基本操作3三大基本操作 4. 實作 1:Quick Find(陣列直接記錄群編號)4實作1quickfind陣列直接記錄群編號 5. 實作 2:Quick Union(樹狀父節點表示)5實作2quickunion樹狀父節點表示 6. 優化 1:Union by Size / Union by Rank6優

阅读文章 →
Algorithms 更新于 2026-05-29

模糊搜尋(Fuzzy Search / Approximate String Matching)— 完整教材

從「字串距離」到「近似匹配演算法」與「索引結構」,一份內含 9 個手動推演例子、完整可編譯 C++ 程式碼的中階教材。

阅读文章 →
Algorithms 更新于 2026-06-21

圖論演算法完整教材

圖論演算法完整教材 Graph Algorithms — A Complete Guide 從圖的表示、走訪、最短路徑、最小生成樹、[2pt] 網路流、進階結構,到真實世界的應用與解法

阅读文章 →
Algorithms 更新于 2026-04-19

Hash 演算法 — 完整教材(概念到應用)

本教材依「資料結構用的 Hash」與「密碼學用的 Hash」兩條主線編排,並對應 Hash/cpp/ 內的 C++ 範例程式。

阅读文章 →
Algorithms 更新于 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完整手

阅读文章 →
Algorithms 更新于 2026-05-24

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

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

阅读文章 →
Algorithms 更新于 2026-04-26

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

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

阅读文章 →
Algorithms 更新于 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.

阅读文章 →