Computer Science/Algorithm

[Algorithm] ๋ถ„ํ• ์ •๋ณต(1) - Master Theorem๊ณผ ์ผ๋ฐ˜ํ•ด

์ดํƒœํ™ 2022. 9. 28. 11:30

๐Ÿค” Divide And Conquer

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

 

์ด๋•Œ ๋ถ„ํ• ๋œ ๋ฌธ์ œ๋“ค์„ ์กฐํ•ฉํ•˜์—ฌ ํฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์„ Conquer์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ๋ถ„ํ• ์ •๋ณต์„ Master Theorem์˜ ์ผ๋ฐ˜ํ•ด๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

๐Ÿ”Ž Master Theorem

Master Theorem์—์„œ Input Size๊ฐ€ $n$์ผ๋•Œ ๋ถ„ํ• ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ผ๋ฐ˜์ ์ธ ํŒจํ„ด์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

 

์ƒ์ˆ˜ $a > 0, b > 1, d ≥ 0$์— ๋Œ€ํ•˜์—ฌ

1. ๋ฌธ์ œ๋ฅผ size๊ฐ€ $\frac{n}{b}$์ธ $a$๊ฐœ์˜ subproblem์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค. (recursively ํ•˜๊ฒŒ)

2. ๊ฐ๊ฐ์˜ subproblem์„ ํ•ด๊ฒฐํ•œ ๋’ค, $O(n^d) ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•˜์—ฌ subproblem์˜ ๋‹ต์„ mergeํ•œ๋‹ค.

 

 

 

์ด์™€ ๊ฐ™์€ ๊ฒฝ์šฐ $T(n)$์ด ๋ฌธ์ œ๋ฅผ ํ•˜๊ฒฐํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์‹œ๊ฐ„๋ณต์žก๋„๋ผ๊ณ  ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‹์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

$$T(n) = aT(\frac{n}{b}) + O(n^d)$$

 

ํ•ด๋‹น ์‹์„ ํ†ตํ•ด ์ผ๋ฐ˜ํ•ด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ผ๋ฐ˜ํ•ด๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

 

 

๊ทธ๋ฆผ๊ณผ ์‹์˜ ํ’€์ด๋ฅผ ํ†ตํ•ด ์œ„๋ฅผ ์ฆ๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

์œ„์˜ ๊ทธ๋ฆผ์„ ํ†ตํ•ด ๊ฐ ๋…ธ๋“œ์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ œ๋Š” $a$๊ฐœ์˜ subproblem๋“ค๋กœ ์ชผ๊ฐœ์ง€๋ฉฐ ๋ฌธ์ œ์˜ ํฌ๊ธฐ๋Š” $\frac{1}{b}$๋ฐฐ ์”ฉ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ ์œ„์˜ ํŠธ๋ฆฌ์˜ ๋†’์ด๋Š” $log_bn$์ด ๋ฉ๋‹ˆ๋‹ค.

 

๋˜ํ•œ k๋ฒˆ์งธ level์˜ ๋…ธ๋“œ ์ˆ˜๋Š” ์ตœ๋Œ€ $a^k$๊ฐœ์ด๊ณ , ๊ฐ๊ฐ์˜ ๋…ธ๋“œ์— ํ•ด๋‹นํ•˜๋Š” subproblem์˜ ํฌ๊ธฐ๋Š” $\frac{n}{b^k}$๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

 

ํ•ด๋‹น ์‹์˜ ํ’€์ด๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

์œ„์™€ ๊ฐ™์ด ์‹์„ ์ •๋ฆฌํ–ˆ์„ ๋•Œ ์‹์ด ๋“ฑ๋น„์ˆ˜์—ด์˜ ํ˜•ํƒœ๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฒฐ๊ตญ ๊ณต๋น„์ธ $\frac{a}{b^d}$์˜ ๊ฐ’์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ฅผ ํ†ตํ•ด $T(n)$์˜ ์ผ๋ฐ˜ํ•ด๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ๊ณผ์ •์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

์œ„์˜ ์ผ๋ฐ˜ํ•ด๋ฅผ ํ†ตํ•ด ์•ž์—์„œ ๋‹ค๋ฃฌ Merge Sort์˜ ์ผ๋ฐ˜ํ•ด๋ฅผ ๋ฐ”๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Merge Sort์˜ ๊ฒฝ์šฐ ๊ธฐ์กด ๋ฌธ์ œ์˜ ํฌ๊ธฐ๋ฅผ $\frac{1}{2}$๋ฐฐ์˜ ํฌ๊ธฐ์ธ 2๊ฐœ์˜ subproblem์„ ๋ถ„ํ• ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค..

 

์ฆ‰ $a = 2, b = 2$์ด๋ฉฐ ์•ž์—์„œ subproblem์„ ๋ณ‘ํ•ฉํ•˜๋Š” ๋ฐ์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ $O(n)$์ด๋ผ๊ณ  ์ •์˜ ํ–ˆ์œผ๋ฏ€๋กœ $d = 1$๋Š” ์ด๋ผ๋Š” ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ฅผ Master Theorem์— ๋Œ€์ž…ํ•˜๋ฉด $T(n) = 2T(\frac{n}{2}) + O(n)$์˜ ์ผ๋ฐ˜ํ•ด $(n) = O(nlogn)$์ด ๋จ์„ ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.($d = log_ba$์˜ ๊ฒฝ์šฐ์— ํ•ด๋‹นํ•˜๋ฏ€๋กœ)