LCS, Longest Common Subsequence
Last updated
Last updated
<bcdb> ๋ ๋ฌธ์์ด <abcbdab>์ subsequence ์ด๋ค.
<bca>๋ ๋ฌธ์์ด <abcbdab>์ <dbcaba>์ common subsequence ์ด๋ค.
Longest Common Subsequence ๋ common sequence ๋ค ์ค์์ ๊ฐ์ฅ ๊ธด ๊ฒ์ ์๋ฏธํ๋ค.
<bcba>๋ <abcbdab>์ <bdcba> ์ LCS ์ด๋ค.
X์ ๋งจ ๋ง์ง๋ง ๊ธ์์ Y์ ๋งจ ๋ง์ง๋ง ๊ธ์๊ฐ ๊ฐ๋ค๋ฉด, ๊ทธ ๋ฌธ์ i์ j ๋ฐ๋ก ์ง์ ์ธ i-1, j-1๊น์ง์ ๊ฐ์ฅ ๊ธด LCS ๊ฐ๊ณผ ๋งจ๋ง์ง๋ง ๊ฐ์ ๊ธธ์ด์ธ 1์ ๋ํด์ค ๊ฐ์ด ๊ฐ์ฅ ๊ธด ๋ฌธ์์ด์ด ๋๋ค.
๋ง์ฝ X์ ๋งจ ๋ง์ง๋ง ๊ธ์์ Y์ ๋งจ ๋ง์ง๋ง ๊ธ์๊ฐ ๋ค๋ฅด๋ค๋ฉด, ๋ ์ค ํ๋๋ ๋ฐ๋์ ๋ฒ๋ ค์ผ ํ๋ค. ๋ฒ๋ฆฌ๋ ๊ธฐ์ค์ ๊ฐ๊ฐ ๋งจ ๋ง์ง๋ง ๊ธ์๋ฅผ ๋ฒ๋ ธ์ ๋์ LCS ๋ฅผ ๊ตฌํ ๋ค, ๋ ๊ธด ๊ฐ์ ์ ํํด์ฃผ๋ฉด ๋๋ค.
์ด ์ํ์์ base case ๋ i ๋ j๊ฐ 0์ธ ๊ฒฝ์ฐ์ธ๋ฐ, ๊ฐ ๋ฌธ์์ด์ด empty ์์ ์๋ฏธํ๋ค.
general case ์์ ์ํ์์ ๋ ๋, ์ ์ฐจ ๊ฒ์ฌํ๋ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ base case ์ ์๋ ดํ๊ฒ ๋๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
์์ ์ํ์์ ๋ฐ๋ฅด๋ฉด, (i, j) ๊ฐ์ ์๊ธฐ ์ํด์๋ (i-1, j-1), (i-1, j), (i, j-1) ์ ๊ฐ์ ์์์ผ ํ๋ค.
์ด๋ฅผ ์๊ธฐ ์ํ ๊ณ์ฐ ์์๋ ๊ฐ์ฅ ๊ฐ๋จํ๊ฒ ํ ์ฐ์ ๊ณ์ฐ๋ฐฉ๋ฒ์ด๋ค.
i์ j๊ฐ ๊ฐ๊ฐ 0์ผ ๋๋ LCS ๊ฐ ์กด์ฌํ์ง ์์ผ๋ฏ๋ก 0์ด ๋๋ค.