๐ง Selection ์๊ณ ๋ฆฌ์ฆ
ํฌ๊ธฐ๊ฐ $n$ ์ธ ๋ฐฐ์ด $A$ ๊ฐ ์ฃผ์ด์ก์ ๋, $A$ ์์ $k$ ๋ฒ์งธ๋ก ์์ ์์๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก๋ $A$ ๋ฅผ ์ ๋ ฌํ์ฌ $k$ ๋ฒ์งธ ์๋ฅผ ๊ฐ์ง๊ณ ์ค๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
๋ฐฐ์ด์ ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ๋ค ์ค์์ worst-case๊ฐ $O(n \; logn)$ ์ธ ์๊ณ ๋ฆฌ์ฆ(merge sort, heap sort, ๋ฑ๋ฑ)์ ์ฌ์ฉํ๋ค๋ฉด, ์ดํ $k$ ๋ฒ์งธ ์์์ ์ ๊ทผํ๋ ๊ฒ์ $O(1)$ ์ ์๊ฐ์ด ์์๋๋ฏ๋ก ์ด ์๊ฐ ๋ณต์ก๋๋ $O(n \; log n)$ ์ ๋๋ค.
๋๋ฒ์งธ ๋ฐฉ๋ฒ์ Devide and Conquer ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋์ธ Quick Select ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
๐ง Quick Select
Quick Select๋ Quick Sort์ ์ ์ฌํ ๋ฐฉ๋ฒ์ผ๋ก, ๋ค์๊ณผ ๊ฐ์ ์์๋ก ์ด๋ฃจ์ด์ง๋๋ค.
1. ๋ฐฐ์ด $A$ ์ ์์๋ค ์ค ์๋ฌด๊ฑฐ๋ ํ๋๋ฅผ pivot์ผ๋ก ๊ณจ๋ผ์ค๋๋ค.
2. $A$ ๋ฅผ $A_1$ (A์ ์์๋ค ์ค pivot๋ณด๋ค ์์ ์์๋ค๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฐฐ์ด)๊ณผ
$A_2$ ($A$ ์ ์์๋ค ์ค pivot๋ณด๋ค ํฐ ์์๋ค๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฐฐ์ด)๋ก Partitioning ํฉ๋๋ค.
3. Partitioning ์ดํ์๋ ๋ค์ 3๊ฐ์ง ์ํฉ์ด ๋ฐ์ํฉ๋๋ค.
Case 1 - $k$ ๊ฐ $A_1$ ๋ฐฐ์ด์ ๊ธธ์ด ์ดํ์ธ(์๊ฑฐ๋ ๊ฐ์) ๊ฒฝ์ฐ
๐ ์ด ๊ฒฝ์ฐ์๋ $A_1$ ์์ $k$ ๋ฒ์งธ๋ก ์์ ์์๋ฅผ ์ฐพ๋ subproblem์ ๋ต์ด ์ ๋ต์ด ๋ฉ๋๋ค.
Case 2 - $k$ ๊ฐ $A_1$ ๋ฐฐ์ด์ ๊ธธ์ด + 1์ธ ๊ฒฝ์ฐ
๐ pivot ๊ฐ์ด $k$ ๋ฒ์งธ๋ก ์์ ๊ฐ์ ๋๋ค.
Case 3 - $k$ ๊ฐ $A_1$ ๋ฐฐ์ด์ ๊ธธ์ด + 1๋ณด๋ค ํฐ ๊ฒฝ์ฐ
๐ $A_2$ ์์ $(k - (|A_1| + 1))$ ๋ฒ์งธ๋ก ์์ ์์๋ฅผ ์ฐพ๋ subproblem์ ๋ต์ด ์ ๋ต์ด ๋ฉ๋๋ค.
* ๋ํด์ง๋ 1์ ๊ฐ์ ๋น ์ง๋ pivot์ ๊ฐ์๋ฅผ ํฌํจ์์ผ ์ฃผ๋ ๊ฒ์ ๋๋ค. *
์๊ฐ ๋ณต์ก๋
$T(n)$ ์ size๊ฐ $n$ ์ธ array์์ quickselect๋ฅผ ์ํํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด๋ผ ํ๊ฒ ์ต๋๋ค.
$$T(n) = T(n') + O(n)$$
์ฌ๊ธฐ์ $n'$ ์ Case์ ๋ฐ๋ฅธ $A_1$ ํน์ $A_2$ ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ๋ฉ๋๋ค.
์ต์ ์ ๊ฒฝ์ฐ
$A_1$ ์ ํฌ๊ธฐ๊ฐ ์ธ์ ๋ 0์ด๋ฉฐ, $k$ ๊ฐ 1๋ณด๋ค ํฐ ๊ฒฝ์ฐ์ด๋ฉฐ, ์ด ๊ฒฝ์ฐ์๋ $n' = n - 1$ ์ ๋๋ค.
์ด ๊ฒฝ์ฐ ์๊ฐ ๋ณต์ก๋๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํด์ง๋๋ค.
$$T(n)$$
$$= T(n-1) + O(n)$$
$$= T(n-2) + O(n) + O(n)$$
$$= T(n-3) + O(n) + O(n) + O(n)$$
$$...$$
$$= T(1) + O(n) + O(n) + ... + O(n)$$
$$= O(n^{2})$$
์ฆ ์ต์ ์ ๊ฒฝ์ฐ์๋ ๋ฐฐ์ด์ ์ ๋ ฌํ์ฌ ๋ต์ ๊ตฌํ๋ ๊ฒ๋ณด๋ค ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ฒ ๋ฉ๋๋ค.
๐ง ์ข์ ํผ๋ฒ์ ๊ณ ๋ฅด๊ธฐ
์์์ ์ดํด๋ณธ ์ต์ ์ ์ํฉ์ ํผํ๊ธฐ ์ํด, ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ํตํด pivot์ ๊ณ ๋ฅด๋๋ก ํ๊ฒ ์ต๋๋ค.
1. ๋ฐฐ์ด $A$ ์ ์์๋ค ์ค ํ๋๋ฅผ ๋ฌด์์๋ก ๊ณจ๋ผ์ pivot์ผ๋ก ๋ก๋๋ค.
(๋ฌด์์๊ฐ ์๋ฏธํ๋ ๊ฒ์ ๊ฐ ์์๋ค์ด ์ ํ๋ ํ๋ฅ ์ด ๋ชจ๋ ๋์ผํ๋ค๋ ์๋ฏธ์ ๋๋ค.)
2. ํด๋น pivot์ ํตํด quickSelect๋ฅผ ์งํํฉ๋๋ค.
Case 1 : ์ด๋ Partitioning ์ดํ $A_1$ ํน์ $A_2$ ์ ํฌ๊ธฐ๊ฐ $\frac{3n}{4}$ ์ ๋์ผ๋ฉด, ์๋ก์ด pivot์ ๋ค์ ๋ฌด์์๋ก ์ ํฉ๋๋ค.
Case 2 : ๋ง์ฝ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ ๊ทธ๋๋ก quickSelect๋ฅผ ์งํํฉ๋๋ค.
์ ๋ฐฉ๋ฒ์์ Case 2์ ์ํ๋ pivot์ Good Pivot์ด๋ผ ์ ์ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
ํฌ๊ธฐ๊ฐ $n$ ์ธ ๋ฐฐ์ด $A$ ์๋ Good Pivot์ ์๊ฐ $\frac{n}{2}$ ๊ฐ ์กด์ฌํฉ๋๋ค.
(A์์ $\frac{n}{4}$ ~ $\frac{3n}{4}$ ๋ฒ์งธ๋ก ์์ ๋ชจ๋ ์์๋ค์ด Good Pivot์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.)
๋ฐ๋ผ์ $A$ ์์ Good Pivot์ ๊ณ ๋ฅผ ํ๋ฅ ์ $\frac{1}{2}$ ์ ๋๋ค.
์ฆ ํ๊ท ์ ์ผ๋ก 2๋ฒ์ ์๋๋ง์ Good Pivot์ ๊ณ ๋ฅผ ์ ์์ต๋๋ค.
์๊ฐ๋ณต์ก๋
$T(n)$ ์ ํฌ๊ธฐ๊ฐ $n$ ์ธ ๋ฐฐ์ด์์ Good Pivot์ ํตํด quickselect๋ฅผ ์งํํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ํ๊ท (expected) ์๊ฐ์ด๋ผ ํ๊ฒ ์ต๋๋ค.
Good Pivot์ ๊ณ ๋ฅผ ๋๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ : $O(n)$
ํ๋ฒ pivot์ ๊ณจ๋ผ partitioning ํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ : $O(n)$
Good Pivot์ ๊ณ ๋ฅธ ํ subproblem์ ํฌ๊ธฐ : ์ต๋ $\frac{3n}{4}$
๋ฐ๋ผ์ ํ๊ท ์๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$$T(n) = T(\frac{3n}{4}) + O(n)$$
์ด๋ Master Theorem์์ $a= 1$, $b = \frac{4}{3}$, $d = 1$ ์ธ ๊ฒฝ์ฐ์ ํด๋นํฉ๋๋ค.
$log_{\frac{4}{3}} \; 1 < 1$ ์ด๋ฏ๋ก, ์๊ฐ ๋ณต์ก๋๋ $O(n)$ ์ ๋๋ค.
๐ง quickselect using median of medians
์์ ์ดํด๋ณธ ๋ฐฉ๋ฒ๋ ๊ฒฐ๊ตญ ์ต์ ์ ๊ฒฝ์ฐ์๋ ์๊ฐ ๋ณต์ก๋๊ฐ $O(n \; log \; n)$ ์ ๋๋ค.
์ด๋ฒ์ ์ดํด๋ณผ quickselect using median of medians๋ฅผ ์ฌ์ฉํ๋ฉด, ์ต์ ์ ๊ฒฝ์ฐ์๋ ์๊ฐ ๋ณต์ก๋ $O(n)$ ์ ๋ณด์ฅ๋ฐ์ ์ ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
1. ๋ฐฐ์ด $A$ ์ ํฌ๊ธฐ๊ฐ 25 ์ดํ์ด๋ฉด $A$ ๋ฅผ ์ ๋ ฌํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
(์ด๋ ๋ฐ๋์ 25์ฌ์ผ ํ ํ์๋ ์์ผ๋ฉฐ, ๋ค๋ฅธ ์๋ฅผ ์ง์ ํ์ฌ๋ ๋ฉ๋๋ค.)
2. $A$ ์ ํฌ๊ธฐ๊ฐ 25๋ฅผ ์ด๊ณผํ๋ ๊ฒฝ์ฐ, $A$ ๋ฅผ ํฌ๊ธฐ๊ฐ 5์ธ $\frac{n}{5}$ ๊ฐ์ Subproblem์ผ๋ก ๋๋๋๋ค.
(๋ง์ฐฌ๊ฐ์ง๋ก Subproblem์ ํฌ๊ธฐ๋ ๋ฐ๋์ 5์ผ ํ์๋ ์์ต๋๋ค. ์ดํ 5๊ฐ ์๋ ๊ฒฝ์ฐ๋ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.)
3. 2์์ ๋๋ subArray์ median(์ค์๊ฐ)์ ์ฐพ์ ํ, ์ด๋ค์ ๋ฐฐ์ด $M$ ์ ์ ์ฅํฉ๋๋ค.
( median์ ์ฐพ๋ ๊ณผ์ ์์๋ ์ด๋ ํ ์๊ณ ๋ฆฌ์ฆ(์๋ฅผ๋ค์ด bubble sort ๋ฑ)์ ์ฌ์ฉํ์ฌ๋ ๋ฌด๋ฐฉํฉ๋๋ค. ์ด๋ subArray์ ํฌ๊ธฐ๊ฐ 5๋ก ๊ณ ์ ๋์ด ์์ผ๋ฏ๋ก, $O(1)$ ์๊ฐ์ด ์์๋๊ธฐ ๋๋ฌธ์ ๋๋ค.)
4. ๋ฐฐ์ด $M$ ์ meidan์ quickselect using median of medians( 1, 2, 3 ์ ๊ณผ์ )์ ์ฌ์ฉํ์ฌ ๊ตฌํ ๋ค, ์ด๋ฅผ pivot์ผ๋ก ๋ก๋๋ค.
(์ด๊ณณ์์ quickselect using median of medians ์ ๋ํ ์ฌ๊ท๊ฐ ๋ฐ์ํฉ๋๋ค.)
5. 4์์ ๊ตฌํ pivot์ ๊ฐ์ง๊ณ ์์ quick select์ ๋ง์ฐฌ๊ฐ์ง๋ก partitioning์ ํ ๋ค $A_1$ ํน์ $A_2$ ์ ๋ํ์ฌ quickselect using median of medians๋ฅผ ์ฌ๊ท์ ์ผ๋ก ํธ์ถํ์ฌ ๋ต์ ๋์ถํฉ๋๋ค.
์๋์ฝ๋ ๐
์๊ฐ๋ณต์ก๋ ๐
median of medians๋ก ์งํํ๋ quick select์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ตฌํ๊ธฐ ์ํด, median of medians๊ฐ ์ผ๋ง๋ ์ข์ pivot์ธ๊ฐ๋ฅผ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ ์ํฉ์์ pivot, ์ฆ median of medians๋ ํ๋์ ๋ถ๋ถ์ ๋๋ค.
์ ์ฌ์ง์์ ๋นจ๊ฐ ๋ฐ์ค ์์ ํด๋นํ๋ ์์๋ค์ median of medians๋ณด๋ค ๋ฌด์กฐ๊ฑด ์๊ฑฐ๋ ๊ฐ์ต๋๋ค.
์ฆ median of medians๋ ์ ์ด๋ $\frac{3n}{10} (\frac{3n}{5} \times \frac{1}{2})$ ๊ฐ์ ์์ ๋ณด๋ค๋ ๋ฌด์กฐ๊ฑด ํฌ๊ฑฐ๋ ๊ฐ์ต๋๋ค.
$\frac{3}{5}$ ๊ฐ ์๋ฏธํ๋ ๊ฒ์ 5๊ฐ์ subarray ์ค median์ ์์น์ธ 3์ ์๋ฏธํ๋ฉฐ, $\frac{1}{2}$ ๋ ์ ์ฒด ๊ฐ์๋ค ์ค ์ ๋ฐ์ ์๋ฏธํฉ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ฌ์ง์์ ๋นจ๊ฐ ๋ฐ์ค ์์ ํด๋นํ๋ ์์๋ค์ median of medians๋ณด๋ค ๋ฌด์กฐ๊ฑด ํฌ๊ฑฐ๋ ๊ฐ์ต๋๋ค.
๋ฐ๋ผ์ median of medians๋ ์ ์ด๋ $\frac{3n}{10} (\frac{3n}{5} \times \frac{1}{2})$ ๊ฐ์ ์์ ๋ณด๋ค๋ ๋ฌด์กฐ๊ฑด ์๊ฑฐ๋ ๊ฐ์ต๋๋ค.
๋ฐ๋ผ์ median of medians๋ฅผ ์ ํํ ๊ฒฝ์ฐ, ์ด๋ฅผ ํตํด partitioning๋๋ subproblem์ ํฌ๊ธฐ๋ ์ต๋ $\frac{7n}{10}$ ์ด ๋ฉ๋๋ค.
์ด์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ตฌํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
$T(n)$ ์ํฌ๊ธฐ๊ฐ n์ธ ๋ฐฐ์ด์์ quickselect with median of medians ๋ฅผ ํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์ต์ ์ ๊ฒฝ์ฐ์ ๋ํ ์๊ฐ์ด๋ผ ํ๊ฒ ์ต๋๋ค.
์ด๋ฅผ recursion tree๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
'๐ฅ Computer Science > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ํ (2) - DFS (0) | 2022.09.24 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ํ (1) - ๊ทธ๋ํ์ ๊ธฐ๋ณธ ์ฉ์ด (0) | 2022.09.24 |
[์๊ณ ๋ฆฌ์ฆ] ๋ถํ ์ ๋ณต(Divide and Conquer)๊ณผ Master Theorem (0) | 2022.09.11 |
[์๊ณ ๋ฆฌ์ฆ] ๊ณฑํ๊ธฐ(Multiplication) ์๊ณ ๋ฆฌ์ฆ ($O(n^2)$) (0) | 2022.09.11 |
[์๊ณ ๋ฆฌ์ฆ] ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋น ์ค(Big-Oh) (0) | 2022.09.05 |