Computer Science/Algorithm

[Algorithm] ๋ถ„ํ• ์ •๋ณต(5) - Median of Medians

์ดํƒœํ™ 2022. 10. 4. 10:49

๐Ÿค”๋ถ„ํ• ์ •๋ณต

๋ถ„ํ• ์ •๋ณต์ด๋ž€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•œ ๋’ค ๋ถ„ํ• ๋œ ๋ฌธ์ œ๋“ค์„ ์žฌ๊ท€์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜์—ฌ ํ•ด๋‹น ๋‹ต์„ ์ ์ ˆํ•˜๊ฒŒ ์กฐํ•ฉํ•˜์—ฌ ํฐ ๋ฌธ์ œ์˜ ๋‹ต์„ ์ œ์‹œํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋•Œ ๋ถ„ํ• ๋œ ๋ฌธ์ œ๋“ค์„ ์กฐํ•ฉํ•˜์—ฌ ํฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์„ 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)$์ด ๋ฉ๋‹ˆ๋‹ค.