Longest Increasing Subsequences
2020-1νκΈ°, λνμμ βμκ³ λ¦¬μ¦β μμ μ λ£κ³ 곡λΆν λ°λ₯Ό μ 리ν κΈμ λλ€. μ§μ μ μΈμ λ νμμ λλ€ :)
<Longest Increasing Subsequence> μ€μ¬μ <LIS> λ¬Έμ λ sequence of numbersκ° μ λ ₯μΌλ‘ λ€μ΄μ¬ λ, μ¦κ°νλ λΆλΆμμ΄(increasing subsequence) μ€μμ κ°μ₯ κΈ΄ λΆλΆμμ΄μ μ°Ύλ λ¬Έμ λ€!
μλ₯Ό λ€μ΄ μ°λ¦¬μκ² μλμ κ°μ μμ΄μ΄ μ£Όμ΄μ‘λ€κ³ νμ.
μ΄λ, μ¦κ°νλ λΆλΆμμ΄μ λ§λ€κΈ° μν΄ κ°λ₯ν λͺ¨λ transitionμ νμνλ©΄ μλμ κ°λ€!
Directed Graphκ° κ·Έλ €μ‘λ€!! κ·Έλ°λ°, μ’ μ΅μνμ§ μμκ°? λ°λ‘ DAGλ€!!
μ¬μ€ μμ μν©μ κ·Έλνλ‘ λ§λ ν, μμμλΆν° BFSλ₯Ό νλ©΄μ Longest Pathλ₯Ό μ°Ύμλ λ¬Έμ λ₯Ό ν μ μλ€. κ·Έλ°λ°, DPλ μ‘°κΈ λ€λ₯Έ λ°©μμΌλ‘ μκ³ λ¦¬μ¦μ μ μνλ€!!
for $j=1, 2, \dots, n$
ββ$L(j) = 1 + \max \{ L(i) : (i, j) \in E \}$
return $\max_j L(j)$
μμ μκ³ λ¦¬μ¦μ λμ λ°©μμ μκ°ν΄λ³΄λ©΄, λ¨μν $O(N^2)$μΌλ‘ ν΄κ²°ν μ μμμ μ μ μλ€!! μλλ BFSλ‘ νλ©΄, $N\times O(N^2)$μ 걸릴 λ¬Έμ λ₯Ό $O(N^2)$λ‘ ν΄κ²°ν μ μλ€λ λλμ§ μμκ°??
DPμ λ§λ²μ μ΄μ μμμ΄λ€. μ΄μ΄μ§λ ν¬μ€νΈμμλ LIS λ³΄λ€ μͺΌμ€κΈ 볡μ‘ν λ°©μμΌλ‘ DPλ₯Ό μννλ <Edit Distance> λ¬Έμ μ λν΄ μ΄ν΄λ³Έλ€!!
π Edit Distance
μΆμ² λ¬Έμ
p.s. μ°Έκ³ λ‘ νλ²ν LIS λ¬Έμ λ μμ DPλ³΄λ€ λ λΉ λ₯Έ μκ³ λ¦¬μ¦μ΄ μ‘΄μ¬νλ€!! $O(N \log N)$μΌλ‘ λμνλ μκ³ λ¦¬μ¦μΌλ‘, binary searchλ₯Ό νμ©νλ€. μμΈν λ΄μ©μ΄ κΆκΈνλ©΄, μλμ ν¬μ€νΈλ₯Ό μ°Έκ³ νλλ‘ νμ.