๐ง ๋ถ๋ถ ์์ด(Subsequence)
๊ธธ์ด n์ธ ์์ด(sequence, ordered list) $S = a_1, a_2, ... a_n$ ์ด ์ฃผ์ด์ก์ ๋,
์์ด $S' (= a_{i1}, a_{i2}, ..., a_{ik})$ ๊ฐ $1 \leq i1 < i2 < ... < ik \leq n$ ๋ฅผ ๋ง์กฑํ ๊ฒฝ์ฐ,
$S'$ ๋ฅผ $S$ ์ subsequence๋ผ ํฉ๋๋ค.
๐ง ์ฆ๊ฐ ์์ด(Increasing sequence)
์์ด S = $a_1, a_2, ..., a_n$ ์ ๋ํ์ฌ
$a_1 < a_2 < ... < a_n$ ์ผ ๋, increasing sequence๋ผ ํฉ๋๋ค.
๐ง ๊ฐ์ํ์ง ์๋ ์์ด(Non-decreasing sequence)
์์ด S = $a_1, a_2, ..., a_n$ ์ ๋ํ์ฌ
$a_1 \leq a_2 \leq ... \leq a_n$ ์ผ ๋, non-decreasing sequence๋ผ ํฉ๋๋ค.
๐ง ์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด(Longest Increasing Subsequence, LIS)
์ด๋ ํ ์์ด S ์ ๋ํ์ฌ, S์์ ๊ฐ์ฅ ๊ธด ์ฆ๊ฐ ๋ถ๋ถ ์์ด์ LIS๋ผ ์ ์ํฉ๋๋ค.
๐ง LIS ๊ตฌํ๊ธฐ
DP ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ง์ถ์ด LIS์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
1. ๋ฌธ์ ๋ฅผ ์ ํํ๊ฒ ์ ์ํฉ๋๋ค.
Problem: $S = a_1, a_2, ..., a_n$ ์์ LIS์ ๊ธธ์ด ๊ตฌํ๊ธฐ
2. ์ ์๋ ๋ฌธ์ ์ ๋ํ Subproblem์ ์ธ์๋๋ค.
Subproblem:
์ฒซ i๊ฐ์ ์์๋ค($a_1, a_2, ..., a_i$)๋ก ์ด๋ฃจ์ด์ง ์์ด์์,
$a_i$๋ก ๋๋๋ ์ฆ๊ฐํ๋ ๋ถ๋ถ์์ด๋ค ์ค ๊ฐ์ฅ ๊ธด ๋ถ๋ถ์์ด์ ๊ธธ์ด ๊ตฌํ๊ธฐ
$a_i$๋ก ๋๋๋ ์ฆ๊ฐํ๋ ๋ถ๋ถ์์ด๋ค ์ค ๊ฐ์ฅ ๊ธด ๋ถ๋ถ์์ด์ ๊ธธ์ด๋ฅผ L(i)๋ก ์ ์ํ๊ฒ ์ต๋๋ค.
3. Subproblem์ ์ด์ฉํ์ฌ Recurrence Relation์ ์ธ์๋๋ค.
recurrence relation:
$L(i) = 1 + max_{j<i, \; a_j < a_i}L(j)$
์ฆ i๋ณด๋ค ์์ ๋ชจ๋ j๋ค ์ค, $a_j$ < $a_i$ ๋ฅผ ๋ง์กฑํ๋ j์ ๋ํ L(j)๊ฐ๋ค ์ค ์ต๋๊ฐ์ 1์ ๋ํ ๊ฒ์ด L(i)๊ฐ ๋ฉ๋๋ค.
S์ LIS์ ๊ธธ์ด๋ $max_{i=1}^{n}L(i)$ ๊ฐ ๋ฉ๋๋ค.
๐ง Pseudocode
๐ง ์์
์ด๋ฅผ ํตํด LIS์ ๊ธธ์ด๋ 4๋ผ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๐ง ์ค์ ์ต๋จ ๊ฒฝ๋ก ๊ตฌํ๊ธฐ
์ค์ LIS๋ฅผ ๊ตฌํ๊ณ ์ถ๋ค๋ฉด L(i) = L(j) + 1 ๋ก ์ ๋ฐ์ดํธ ํ ๋๋ง๋ค ํด๋น LIS์ ์ง์ ์์๊ฐ $a_j$ ๋ผ๋ ๊ฒ์ ๋ฐ๋ก ์ ์ฅํด์ค ํ,
์ด๋ฅผ ๋ฐ๋ผ ์ญ์ถ์ ํ๋ ๊ณผ์ ์ ํตํด ์์๋ผ ์ ์์ต๋๋ค.
์์ ์์์ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด ์ง์ ์์๋ฅผpre๋ก ๋ฐ๋ก ์ ์ฅํด ์ค ํ,
8(->6), 6(->5), 5(->2), 2(->0) ์ ํตํด LIS๋ฅผ ๊ตฌํ ์ ์์ต๋๋ค.
๐ง ์๊ฐ ๋ณต์ก๋
L(i) ๋ฅผ ๊ณ์ฐํ ๋ ์กฐ๊ฑด์ ๋ง๋ L(i) ๋ฅผ ๊ฒ์ : $O(i - 1)$
์ด๋ i ๋ n ๋ฒ ์งํ๋๋ฏ๋ก, ์ด $O(n^2)$
๋ชจ๋ L(i) ๊ณ์ฐ ๋ค, ํด๋น ๊ฐ์ด ์ ์ผ ํฐ i ์ฐพ๊ธฐ : $O(n)$
๋ฐ๋ผ์ ์ด $O(n^2)$ ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ต๋๋ค.
๐ง ์ด๋ถ ํ์์ ์ด์ฉํ ๋ ๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆ
https://ttl-blog.tistory.com/486
'๐ฅ Computer Science > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] DP (3) - ๋ฒจ๋งํฌ๋(Bellman-Ford) ์๊ณ ๋ฆฌ์ฆ (0) | 2022.11.12 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] DP (2) - Edit Distance(ํธ์ง ๊ฑฐ๋ฆฌ) (0) | 2022.11.12 |
[์๊ณ ๋ฆฌ์ฆ] DP (0) - DP ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ (0) | 2022.11.09 |
[์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ฆฌ๋ (3) - Huffman Encoding(ํํ๋ง ๋ถํธํ) (0) | 2022.10.21 |
[์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ฆฌ๋ (2) - Interval scheduling (0) | 2022.10.21 |