Pattern matching & String

Naive, KMP, Rabin-Karp, Z-function, Aho-Corasick. Lucene index, ClamAV signature matching.

9 bài · ~175 phútMiễn phí

Nội dung

Danh sách bài học

  1. 01

    Module 2 — Pattern matching & String: tổng quan

    Lộ trình module string matching: từ naive O(n·m) tới KMP, Rabin-Karp, Z-function và Aho-Corasick đa mẫu. Học gì, vì sao, làm được gì.

    ~8 phút
  2. 02

    Naive string matching — vì sao O(n·m) chậm

    Thuật toán so khớp chuỗi ngây thơ: trượt pattern qua text, so từng vị trí. Vì sao worst-case O(n·m) và khi nào vẫn đủ dùng trong thực tế.

    ~16 phút
  3. 03

    KMP — failure function & matching O(n+m)

    Knuth-Morris-Pratt dùng failure function (prefix function) để không bao giờ quay lui con trỏ text, đạt O(n+m). Cách xây bảng failure, vì sao nó đúng, và trace từng bước.

    ~23 phút
  4. 04

    Rabin-Karp — rolling hash cho đa mẫu

    So khớp bằng hash: tính hash cửa sổ trượt trong O(1) nhờ rolling hash. Mạnh khi tìm nhiều pattern cùng lúc; rủi ro hash collision.

    ~20 phút
  5. 05

    Z-function — z-array và ứng dụng

    Z-array[i] = độ dài tiền tố chung dài nhất của chuỗi với hậu tố bắt đầu tại i. Tính O(n) bằng z-box; ứng dụng matching và đếm lặp.

    ~18 phút
  6. 06

    Aho-Corasick — automaton so khớp đa mẫu

    Trie nhiều pattern + failure link tạo automaton tìm tất cả pattern trong một lần quét O(n+z). Nền của antivirus và IDS signature scanning.

    ~22 phút
  7. 07

    Mini-challenge — tự viết grep bằng KMP

    Lab: cài công cụ tìm tất cả vị trí xuất hiện của pattern trong file bằng KMP, đo so với naive trên input adversarial.

    ~30 phút
  8. 08

    Case study — Lucene index & ClamAV signature

    Hai hệ thống thật: Lucene dùng cấu trúc gì để search nhanh, và ClamAV quét triệu signature virus bằng Aho-Corasick ra sao.

    ~26 phút
  9. 09

    Module 2 — Tổng kết & cheat sheet

    Recap string matching: bảng so sánh naive/KMP/Rabin-Karp/Z/Aho-Corasick theo single vs multi-pattern, preprocessing, glossary, self-assessment.

    ~12 phút