[Algorithm] ๋ถํ ์ ๋ณต(5) - Median of Medians
๐ค๋ถํ ์ ๋ณต
๋ถํ ์ ๋ณต์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ์์ ๋จ์๋ก ๋ถํ ํ ๋ค ๋ถํ ๋ ๋ฌธ์ ๋ค์ ์ฌ๊ท์ ์ผ๋ก ํด๊ฒฐํ์ฌ ํด๋น ๋ต์ ์ ์ ํ๊ฒ ์กฐํฉํ์ฌ ํฐ ๋ฌธ์ ์ ๋ต์ ์ ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋งํฉ๋๋ค.
์ด๋ ๋ถํ ๋ ๋ฌธ์ ๋ค์ ์กฐํฉํ์ฌ ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ Conquer์ด๋ผ๊ณ ํฉ๋๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ Median of Medians ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
๐ Median Of Medians
ํฌ๊ธฐ๊ฐ $n$์ธ ๋ฐฐ์ด A๊ฐ ์ฃผ์ด์ก์ ๋ A์์ k๋ฒ์งธ ์์ ์์๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฐพ์๋ณด๊ฒ ์ต๋๋ค.
์์ Quicksellect์ ์๊ฐ๋ณต์ก๋ ๋ถ์์์ ๊ฒฐ๊ตญ Quickselect์ ์ฑ๋ฅ์ '์ข์ pivot์ ์ผ๋ง๋ ๋น ๋ฅด๊ฒ ์ฐพ์๋ด๋๊ฐ'์ ๋ฌ๋ ค์๋ค๋ ๊ฒ์ ์ ์ ์์์ต๋๋ค.
์ข์ pivot์ ์ฐพ๊ธฐ ์ํ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ค๋ฉด ์ฑ๋ฅ์ด ์ข์์ง๋ค๋ ๊ฒ์ด๊ณ ๊ทธ ๋ฐฉ๋ฒ ์ค ํ๋๊ฐ Median Of Medians์ ๋๋ค.
Step 0: ๋จผ์ Base Case๋ก 'A์ ํฌ๊ธฐ๊ฐ 25์ดํ์ด๋ฉด ๊ทธ๋ฅ A๋ฅผ sortingํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค'๋ผ๊ณ ํฉ๋๋ค.
Step 1: ์ดํ A์ ํฌ๊ธฐ๊ฐ 25 ์ด์์ด๋ฉด A๋ฅผ ํฌ๊ธฐ๊ฐ 5์ธ $n/5$๊ฐ์ subarray ๋ค๋ก ๋๋๋๋ค.
Step 2: ๊ฐ subarray์ median ์ฆ 3๋ฒ์งธ๋ก ์์ element๋ฅผ ์ฐพ์ ์ดํ ์ด๋ค์ ๋ฐฐ์ด M์ ์ ์ฅํฉ๋๋ค.
์ด๋ ์ค์ํ ๊ฒ์ subarray์์ median๊ฐ์ ์ฐพ๊ธฐ ์ํด์ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด๋ ๋ฌด๋ฐฉํ๋ค๋ ๊ฒ์ ๋๋ค.
์๋ํ๋ฉด ํฌ๊ธฐ๊ฐ 5์ธ ๋ฐฐ์ด์์ median๊ฐ์ ์ฐพ๋ ๋ฐ์๋ ์ด๋ค ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋๋ผ๋ ํฌ๊ธฐ๊ฐ ์์์ฌ์ $O(1)$์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ฐธ๊ณ ๋ก ์ต์ ์ ๋ฐฉ๋ฒ์ ํตํด median๊ฐ์ ์ฐพ๊ธฐ ์ํด์๋ 6๋ฒ์ ๋น๊ต๋ง ์งํํ๋ฉด ๋ฉ๋๋ค.
Step 3: M์ median์ quickselect using median of medians๋ก ์ฐพ์๋ด๊ณ ์ด๋ฅผ pivot์ผ๋ก ๋ก๋๋ค.
์ด๋ median of medians๋ A[1] A[8] ... A[43] ์ค ์ด๋ค ๊ฐ์ด ์ ํ๋์ด๋ ๋ฌด๋ฐฉํฉ๋๋ค.
๊ทธ ๋ค์์ ์์ quick select์ ๋ง์ฐฌ๊ฐ์ง๋ก ์งํํ๋ฉด ๋ฉ๋๋ค.
M์ ํธ๋ ๊ฒ์ ์ผ์ข ์ subproblem์ด๋ผ๊ณ ์๊ฐํ๊ณ ํ๋ฉด ๋ฉ๋๋ค.
์ด๋ฅผ ์๋์ฝ๋๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
์ด๋ $m$์ด subarray ๊ฐ์๊ฐ ๋๋ฉฐ $MedianOfFive(A[5i - 4 .. 5i])$๋ฅผ ํตํด 5๊ฐ์ค 3๋ฒ์งธ๋ก ์์ ์ซ์๋ฅผ $M[i]$์ ์ ์ฅํฉ๋๋ค.
๋ฐฐ์ด M์ ๋ชจ์๋ pivot๋ค์ MomSelect๋ผ๋ ํจ์๋ฅผ ํตํด ์ฌ๊ท์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก mom(median of medians)์ ์ ์ฅํฉ๋๋ค.
์ดํ partitioning ํ ์ดํ A1 ํน์ A2๋ก ๊ฐ์ subproblem์ ํด๊ฒฐํ๋ฉด ๋ฉ๋๋ค.
์ฆ ํ๊ท ์ ์ผ๋ก ์ด ๋ ๋ฒ์ subproblem์ ํด๊ฒฐํด์ผ ํฉ๋๋ค.
๐ Median Of Medians๋ ์ผ๋ง๋ ์ข์ pivot์ธ๊ฐ?
์์ ์์์ ๊ฐ์ด ๊ฐ๊ฐ์ subarray๊ฐ ์์์ ์๋ ์์๋๋ก ์ ๋ ฌ๋์ด์๊ณ ๋ ธ๋์ ๋ถ๋ถ๋ํ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ ๋ ฌ๋์ด ์๋ค๊ณ ํ๊ฒ ์ต๋๋ค.
์ด๋ ํ๋์ ๋ถ๋ถ์ด mom์ด ๋ฉ๋๋ค.
์ด๋ ์ฃผ์ํ ์ ์ ์ฒซ ๋ฒ์งธ subarray์ ๋ ธ๋์ ์๋์ ์๋ ์์๊ฐ ํฐ ์ง ๋ค์ subarray๋ค์ ๋ ธ๋์ ์์ ์๋ ์์๊ฐ ํฐ ์ง๋ ์ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
์ฆ, ์๋์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋นจ๊ฐ์ ๋ฐ์ค ์์ ํด๋นํ๋ ์์๋ค์ mom๋ณด๋ค ๋ฌด์กฐ๊ฑด ์๊ฑฐ๋ ๊ฐ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ ์ฒด element์ ์๊ฐ $n$์ด๋ผ๊ณ ํ์ ๋ mom์ ์ ์ด๋ $\frac{3n}{10}$๊ฐ์ ์์๋ณด๋ค๋ ๋ฌด์กฐ๊ฑด ํฝ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ์๋์ ๊ทธ๋ฆผ์์ ๋นจ๊ฐ ๋ฐ์ค ์์ ํด๋นํ๋ ๋ถ๋ถ์ mom๋ณด๋ค ๋ฌด์กฐ๊ฑด ํฌ๊ฑฐ๋ ๊ฐ์ต๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก mom์ ์ ์ด๋ $\frac{3n}{10}$๊ฐ์ ์์๋ณด๋ค๋ ๋ฌด์กฐ๊ฑด ์์ต๋๋ค.
๋ฐ๋ผ์ mom์ ํผ๋ด์ผ๋ก ํ์ ๋ partitioningํ๋ ๊ฒฝ์ฐ ํด๋น ๋ถ๋ถ์ ์ ์ธํ ๋ถ๋ถ์ subproblem๋ง์ ํด๊ฒฐํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ํด๊ฒฐํด์ผํ๋ subprooblem์ ํฌ๊ธฐ๋ ์ต๋ $\frac{7n}{10}$์ ๋๋ค.
๐ Median Of Medians์ ์๊ฐ๋ณต์ก๋
$T(n)$์ ํฌ๊ธฐ๊ฐ $n$์ธ ๋ฐฐ์ด์์ quickselect with median of medians๋ฅผ ํ๋๋ฐ ๊ฑธ๋ฆฌ๋ worst-case time์ด๋ผ๊ณ ํ๊ฒ ์ต๋๋ค.
$T(n)$์ ๋ฐฐ์ด M์์ median์ ์ฐพ๋ ์๊ฐ + partitioning ํ subproblem์ ํด๊ฒฐํ๋ ์๊ฐ + $n/5$๊ฐ์ ๋ฐฐ์ด์ ์ ๋ ฌํ๋ ์๊ฐ($n/5 * O(1) + partitioning)์ด๋ฏ๋ก ์๋์ ๊ฐ์ ์์ผ๋ก ๋ํ๋ผ ์ ์์ต๋๋ค.
$$T(n) = T(n/5) + T(7n/10) + O(n)$$
์์ ์์ recurrence relation์ ๋ฐ๋ผ ํน์ level์ ๋ ธ๋์ ํด๋นํ๋ subproblem ๋ค์ input size์ ์ด ํฉ์ ์ด์ level์ ๋ ธ๋์ ํด๋นํ๋ subproblem์ input size์ ๋น๊ตํ์ฌ $9/10$๋ฐฐ ์ด์์ด ๋์ง ์์ต๋๋ค.
์ฆ, ์๋์ ๊ฐ์ด ๋ํ๋ผ ์ ์์ต๋๋ค.
$$T(n) ≤ T(7n/10) + O(n)$$
Master Theorem์ ์ํด $T(n) = O(n)$์ด ๋ฉ๋๋ค.