๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“š ์ „๊ณต ๊ณต๋ถ€/์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ•ด์„ ๋ฐ ์„ค๊ณ„

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ •๋ ฌ์˜ ์ตœ์ ์„ฑ

์ •๋ ฌ์˜ ์ตœ์ ์„ฑ

์•ž์—์„œ ์šฐ๋ฆฌ๋Š” ์—ฐ์†ํ•œ ๋‘ ์›์†Œ๋ฅผ ๋น„๊ตํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด, O(n2) ๋ณด๋‹ค ์ข‹์€ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์–ป์„ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์˜€๋‹ค. ๊ทธ ๋‹ค์Œ์— ๋ฐฐ์šด ์ •๋ ฌ ๋ฐฉ์‹์ธ ํ€ต์ •๋ ฌ, ๋ณ‘ํ•ฉ์ •๋ ฌ, ํž™์ •๋ ฌ ์—์„œ๋Š” ๋ฉ€๋ฆฌ ๋–จ์–ด์ง„ ๋‘ ์›์†Œ๋ฅผ ๋น„๊ตํ•˜์—ฌ ๊ตํ™˜ํ•จ์œผ๋กœ์จ ์ด๋ณด๋‹ค ๋น ๋ฅธ ์‹œ๊ฐ„ ๋ณต์žก๋„์ธ O(n log n) ์‹œ๊ฐ„์„ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด์ œ ์šฐ๋ฆฌ๊ฐ€ ๋‹ค์‹œ ๋น„์Šทํ•œ ์งˆ๋ฌธ์„ ํ•ด๋ณด์ž. O(n log n)๋ณด๋‹ค ๋” ๋น ๋ฅด๊ฒŒ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒ ๋Š”๊ฐ€?

 

์ •๋ฆฌ.

๋‘ ์›์†Œ๋ฅผ ๋น„๊ตํ•˜์—ฌ ๊ตํ™˜ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ๋Š” O(n log n)๋ณด๋‹ค ๋” ๋น ๋ฅด๊ฒŒ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค.

 

์ฆ๋ช….

์˜์‚ฌ ๊ฒฐ์ • ํŠธ๋ฆฌ(decision tree)๋Š” ์–ด๋–ค ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ ํŒ๋‹จ์„ ๋‚ด๋ฆฌ๋Š” ๊ณผ์ •์„ ํŠธ๋ฆฌ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด๋‹ค. ๋ฃจํŠธ๋Š” ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด์„œ ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” ์ง€์ ์ด๋‹ค. ๋ฃจํŠธ๋ฅผ ํฌํ•จํ•œ ์ค‘๊ฐ„ ๋…ธ๋“œ๋“ค์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์—์„œ ๋งŒ๋‚˜๋Š” ์„ ํƒ์ด๋‹ค. ์ด ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์ž์‹๋“ค ์ค‘ ํ•˜๋‚˜๋กœ ์ด๋™ํ•œ๋‹ค. ํŒ๋‹จ์ด ๋๋‚˜๊ณ  ๊ฒฐ๋ก ์ด ๋‚˜๋ฉด ๋” ์ด์ƒ ๊ฒฐ์ •ํ•  ๊ฒƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌํ”„ ๋…ธ๋“œ์— ํ•ด๋‹นํ•œ๋‹ค.

 

์•„๋ž˜ ๊ทธ๋ฆผ์€ ์„œ๋กœ ๋‹ค๋ฅธ ์„ธ ์ˆ˜ x1, x2, x3์„ ์ •๋ ฌํ•˜๋Š” ๊ณผ์ •์„ ์˜์‚ฌ๊ฒฐ์ •ํŠธ๋ฆฌ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด๋‹ค. ์ผ๋‹จ ๋‘ ์ˆ˜๋ฅผ ๊ณจ๋ผ์„œ ๋น„๊ตํ•ด์•ผ ํ•˜๋ฏ€๋กœ x1, x2๋ฅผ ๋น„๊ตํ•œ๋‹ค๊ณ  ์น˜์ž. ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ์ด์— ํ•ด๋‹นํ•œ๋‹ค. ์ด ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ, x1 < x2๋ผ๋ฉด x2์™€ x3์„ ๋น„๊ตํ•˜์ž. (์™ผ์ชฝ ์ž์‹) ๋งŒ์•ฝ x2 < x3์ด๋ผ๋ฉด, ๋‘ ๊ฒฐ๊ณผ๋กœ๋ถ€ํ„ฐ x1 < x2 < x3์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ ๊ทธ๋ ‡์ง€ ์•Š๊ณ  x2 > x3์ด๋ผ๋ฉด, x2๊ฐ€ ๊ฐ€์žฅ ํฐ ์ˆ˜์ž„์€ ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ x1๊ณผ x3์˜ ๋Œ€์†Œ ๊ด€๊ณ„๋Š” ์•„์ง ์•Œ ์ˆ˜ ์—†๋‹ค. ๋”ฐ๋ผ์„œ x1๊ณผ x3์„ ๋น„๊ตํ•˜๋ฉด, ๊ทธ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ x1 < x3 < x2์ธ์ง€, x3 < x1 < x2์ธ์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

3๊ฐœ์˜ ์ˆ˜๋ฅผ ์ •๋ ฌํ•˜๋Š” ๊ฐ€์ง“์ˆ˜๋Š” 6๊ฐœ๊ฐ€ ์žˆ๊ณ , 6๊ฐœ์˜ ๋ฆฌํ”„๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์— ๋Œ€์‘ํ•จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด, ์ด ํŠธ๋ฆฌ์˜ ๋†’์ด, ์ฆ‰ ๋ฃจํŠธ์—์„œ ๊ฐ€์žฅ ๋จผ ๋ฆฌํ”„๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ์ตœ์•…์˜ ๊ฒฝ์šฐ์˜ ๋น„๊ต ํšŸ์ˆ˜์— ๋Œ€์‘ํ•จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

์ด ๋†’์ด๋ฅผ h๋ผ๊ณ  ํ•˜์ž.

๋†’์ด๊ฐ€ h์ธ ์ด์ง„ ํŠธ๋ฆฌ์˜ ๋ฆฌํ”„ ์ตœ๋Œ€ ๊ฐฏ์ˆ˜๋Š” 2^h์ด๋‹ค.

 

n๊ฐœ์˜ ์ˆ˜๋ฅผ ์ •๋ ฌํ–ˆ์„ ๋•Œ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜ (= ์˜์‚ฌ ๊ฒฐ์ • ํŠธ๋ฆฌ์˜ ๋ฆฌํ”„์˜ ๊ฐœ์ˆ˜)๋Š” n!์ด๊ณ , 2^h ≥ n! ์ด ์„ฑ๋ฆฝํ•œ๋‹ค.

์–‘๋ณ€์— ๋ฐ‘์ด 2์ธ ๋กœ๊ทธ๋ฅผ ์ทจํ•˜๋ฉด ๋ถ€๋“ฑํ˜ธ์˜ ๋ฐฉํ–ฅ์ด ๋ฐ”๋€Œ์ง€ ์•Š์œผ๋ฏ€๋กœ h ≥ log (n!).

 

log (n!) = log n + log (n-1) + ... + log (n/2) + ... + log 1 ≥ log n + log (n-1) + ... + log (n/2)

≥ log (n/2) + log (n/2) + ... log (n/2) (→ n/2๋ฒˆ๋งŒํผ)

= (n/2)* log(n/2)

= 1⁄2 n(log n - log 2) = 1⁄2 n log n - 1⁄2 log 2

 

1⁄2 log 2์€ n์ด 2๋ณด๋‹ค ํฌ๋ฉด 1⁄4 n log n ๋ณด๋‹ค ํ™•์‹คํžˆ ์ž‘์„ ๊ฒƒ์ด๋ฏ€๋กœ,

h = log(n!) ≥ 1⁄2 n log n - 1⁄2 log 2 ≥ 1⁄4 n log n

์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์˜์‚ฌ ๊ฒฐ์ • ํŠธ๋ฆฌ์˜ ๋†’์ด๋Š” n log n์˜ ์ƒ์ˆ˜๋ฐฐ๋ณด๋‹ค ํ•ญ์ƒ ๊ฐ™๊ฑฐ๋‚˜ ํฌ๋‹ค. ( O(n log n) )

 

 

 

์ถœ์ฒ˜ : ํ•œ๊ตญํ•ญ๊ณต๋Œ€ํ•™๊ต ใ…‡ใ…‡ใ…‚๊ต์ˆ˜๋‹˜ ๊ฐ•์˜์ž๋ฃŒ