Weighted Interval Scheduling
2020-1ํ๊ธฐ, ๋ํ์์ โ์๊ณ ๋ฆฌ์ฆโ ์์ ์ ๋ฃ๊ณ ๊ณต๋ถํ ๋ฐ๋ฅผ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ์ง์ ์ ์ธ์ ๋ ํ์์ ๋๋ค :)
์ด์ ์ โInterval Scheduling and Partitioningโ ํฌ์คํธ์์ Interval์ ์ค์ผ์ฅด ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ดํด๋ณด์๋ค. ์ด๋๋ Greedy ํ ๋ฐฉ์์ผ๋ก ์ ๊ทผํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
Greedy๋ Interval์ด ๋ชจ๋ ๋์ผํ weight๋ฅผ ๊ฐ๋๋ค๋ฉด ์ ๋์ํ๋ค. ๊ทธ๋ฌ๋ ์ด๋ฒ์๋ ๊ฐ Interval์ weight $W_i$๊ฐ ์์ด ๊ฐ์คํฉ์ ์ต๋ํ ํ๋๋ก ๋ฌธ์ ๋ฅผ ํ์ด์ผ ํ๋ค. ์ด ๊ฒฝ์ฐ์๋ Greedy๊ฐ ์๋๋ผ DP๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ค!
๋จผ์ ๋ฌธ์ ๋ฅผ ๊ธฐ์ ํด๋ณด์.
A set of $n$ jobs, job $j$ starts at $s_j$, finishes at $f_j$ and has weight $w_j$. Find a maximum weight subset of โmutually compatibleโ jobs.
๋จผ์ Greedy ๋ฐฉ์๊ณผ ๋์ผํ๊ฒ interval์ finish time $f_j$๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ค. ๊ทธ๋ฆฌ๊ณ ํจ์ $p(j)$๋ฅผ ์ ์ํด job $j$์ compatible ํ๋ฉด์ ๊ฐ์ฅ ๋น ๋ฅธ job $i$๋ฅผ ๊ตฌํด๋ณด์.
- $p(j)$: last index $i < j$ s.t. job $i$ is compatible with $j$.
๋ง์ง๋ง์ผ๋ก $DP[j]$๋ฅผ โvalue of optimal solution to the problem consisting of jobs from $1$ tot $j$โ ์ ์ํ๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ค๋น๊ฐ ๋๋ฌ๋ค! ๐
$DP[j]$๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ๊ท์น์๋ 2๊ฐ์ง๊ฐ ์๋ค.
1. select job $j$
then, we cannot use incompatible jobs, so
\[DP[j] = w_j + DP[p(j)]\]2. not select job $j$
then, just use previous optimal result
\[DP[j] = DP[j-1]\]์ ๊ท์น์ ์ข ํฉํ๋ฉด ์๋์ ๊ฐ๋ค.
\[DP[j] = \max \left\{ w_j + DP[p(j)], \; DP[j-1] \right\}\](์๋์ ๊ธ์ ์ ์ ๋-ํผ์ ์ ๋๋ค ๐คช)
<Interval Scheduling> ๋ฌธ์ ์์๋ Greedy์ DP๊ฐ ๋ค๋ฅด๋ค๋ ๋๋์ ๋ฐ์ ์ ์๋ค. Greedy๋ ์ด ์ ๊ทผ์ด ์ต์ ํด๋ฅผ ๋ณด์ฅํจ์ ์์ ํ ํ์ ํ๊ฑฐ๋ ์ง์ โ์ฆ๋ช โํด์ผ ํ๋ค. ์ด ๊ณผ์ ์์ ๋ฃฐ์ด ๋๋ฌด ๋ณต์กํ๋ค๋ฉด DP๊ฐ ์ฌ๋ฐ๋ฅธ ์ ํ์ผ ์ ์๋ค. ๋ฐ๋ฉด์ DP๋ ํน๋ณํ โ์ฆ๋ช โ์ ํ ํ์์๋ค. ๋ฌธ์ ๋ฅผ Greedy ๋งํผ ๋จ์ํ๊ฒ ํด๊ฒฐํ์ง ์์ง๋ง ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ DAG์ ํํ๋ก ๊ณ ๋ คํ์ฌ ๋ต์ ์ ๋ํ๊ธฐ ๋๋ฌธ์ด๋ค!
<Interval Scheduling> ๋ฌธ์ ์ ๊ด๋ จ๋ ๋ฐฑ์ค ๋ฌธ์ ๋ ์์ง ์ฐพ์ง ๋ชป ํ๋ค. ์ถํ์ ์ฐพ๊ฒ ๋๋ฉด ์ ๋ฐ์ดํธ ํ๊ฒ ๋ค.