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๋ฅผ ํ์ฉํ๋ค. ์์ธํ ๋ด์ฉ์ด ๊ถ๊ธํ๋ฉด, ์๋์ ํฌ์คํธ๋ฅผ ์ฐธ๊ณ ํ๋๋ก ํ์.