演算法圖鑑
演算法 · 6 個細項

String Algorithms字串演算法

字串比對的暴力法最壞是 O(nm)。這個主題的每個演算法都在用不同方式避免重複比對:雜湊用數字代替字串、KMP 與 Z 利用已比對過的資訊、Manacher 利用回文的對稱性。

為什麼要學 String Algorithms

現實中的應用
編輯器的 Ctrl+F 與 grep

在一億字的 log 裡找一段字串,暴力比對最壞是 O(nm)。KMP 利用「已經比對過的部分」不回頭,做到線性時間。

→ 對應課程:KMP
抄襲與重複內容偵測

把每一段文字算成一個雜湊值,比對雜湊比比對文字快得多。Rabin-Karp 的滾動雜湊讓視窗移動時不用重算。

→ 對應課程:Rabin-Karp
DNA 序列分析

基因序列就是很長的 ACGT 字串。找特定片段、找回文結構(限制酶切位常是回文),都是字串演算法。

→ 對應課程:Manacher
搜尋引擎的關鍵字比對

同時要在文件裡找幾千個關鍵字,字典樹把所有關鍵字疊在一起,掃一遍文件就全部找到。

→ 對應課程:Trie Applications

細項

6