Primal-Dual 算法為求解 LCS 提供了一種基於對偶理論的幾何視角。本文整理其核心定義、排序分組流程、L 矩陣填充與回溯還原步驟,並附完整範例演示。
文本 A = a₁a₂...aₘ、B = b₁b₂...bₙ。
定義匹配點集合 P = {(i,j) | aᵢ = bⱼ},共 l 個點 pₖ = (iₖ, jₖ)。
| 符號 | 定義 | 幾何意義 |
|---|---|---|
◁ | pₓ ◁ pᵧ ⇔ iₓ < iᵧ ∧ jₓ < jᵧ | 右上方向嚴格遞增 (可構成公共子序列) |
⊿ | pₓ ⊿ pᵧ ⇔ iₓ ≤ iᵧ ∧ jₓ ≥ jᵧ | 右下方向 (衝突關係) |
≦ | pₓ ≦ pᵧ ⇔ pₓ ◁ pᵧ ∨ pₓ ⊿ pᵧ | 部分序關係 |
p₁=(1,1) p₂=(1,2) p₃=(1,8) p₄=(3,3) p₅=(3,4) p₆=(3,10) p₇=(4,6) p₈=(5,5) p₉=(5,9) p₁₀=(6,1) p₁₁=(6,2) p₁₂=(6,8) p₁₃=(7,7) p₁₄=(9,3) p₁₅=(9,4) p₁₆=(9,10)
p₃ ≦ p₂ ≦ p₁ ≦ p₆ ≦ p₅ ≦ p₄ ≦ p₇ ≦ p₉ ≦ p₈ ≦ p₁₂ ≦ p₁₁ ≦ p₁₀ ≦ p₁₃ ≦ p₁₆ ≦ p₁₅ ≦ p₁₄
| 組 | 元素 (按 ⊿ 排序) |
|---|---|
| C₁ | p₃ ⊿ p₂ ⊿ p₁ ⊿ p₁₀ |
| C₂ | p₆ ⊿ p₅ ⊿ p₄ ⊿ p₁₁ |
| C₃ | p₇ ⊿ p₈ ⊿ p₁₅ ⊿ p₁₄ |
| C₄ | p₉ ⊿ p₁₂ ⊿ p₁₃ |
| C₅ | p₁₆ |
C₁: p₃ p₂ p₁ p₁₀ → L: 0 0 0 0 C₂: p₆ p₅ p₄ p₁₁ → L: p₁ p₁ p₁ p₁ C₃: p₇ p₈ p₁₅ p₁₄ → L: p₄ p₄ p₁₁ p₁₁ C₄: p₉ p₁₂ p₁₃ → L: p₇ p₈ p₈ C₅: p₁₆ → L: p₁₃
p₁₆ → p₁₃ → p₈ → p₄ → p₁ (9,10) (7,7) (5,5) (3,3) (1,1) LCS = a₁a₃a₅a₇a₉ = b₁b₃b₅b₇b₁₀ = 41371
A: 4 8 1 2 3 4 7 8 _ 1 B: 4 4 1 1 3 2 7 4 3 1
Primal-Dual 將 LCS 轉化為幾何偏序集上的鏈分解問題,雖非工程首選 (Hirschberg 線性空間、Myers O(ND) 更優),但其數學結構優美,適合理論研究與教學展示「演算法設計的多元視角」。