JiwonDev

์•Œ๊ณ ๋ฆฌ์ฆ˜

by JiwonDev

ใ…‡2020.12.21 ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” ์‹œ์ž‘.

# ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋ญ์ฃ 

* ์ตœ์ดˆ๋กœ ์‚ฌ์น™์—ฐ์‚ฐ์„ ๋งŒ๋“  ์ˆ˜ํ•™์ž์˜ ๋ผํ‹ด์–ด ์ด๋ฆ„(algorismus) ์—์„œ ์œ ๋ž˜๋˜์—ˆ๋‹ค. ์ฐธ๊ณ ๋กœ ๋ฐœ์Œ์ด๋‚˜ ํ‘œ๊ธฐ๋‚˜ ์•Œ๊ณ ๋ฆฌ๋“ฌ์ด ๋งž๋Š” ํ‘œํ˜„์ด๋‚˜ ํ•œ๊ตญ์—์„  ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋งŽ์ด ๋ถˆ๋ฆฐ๋‹ค.

 

์–ด๋– ํ•œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ๊ทธ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค.

์‚ฌ์‹ค Algorithm์€ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•œ ์ž‘์€ procedure(์ง„ํ–‰์ ˆ์ฐจ)๋ฅผ ์˜๋ฏธํ–ˆ์—ˆ๋‹ค. ์ปดํ“จํ„ฐ๊ฐ€ ๋“ฑ์žฅํ•˜๊ธฐ ์ด์ „๋ถ€ํ„ฐ๋„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๋Š” ๋‹จ์–ด๋Š” ์ž์ฃผ ์‚ฌ์šฉ๋˜์—ˆ์œผ๋ฉฐ ์ปดํ“จํ„ฐ์˜ ๋“ฑ์žฅ๊ณผ ํ•จ๊ป˜ ์—ฌ๋Ÿฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ธ‰์†๋„๋กœ ๋ฐœ์ „ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

์Œ๋ฃŒ์ˆ˜ ๊ตฌ๋งค ์•Œ๊ณ ๋ฆฌ์ฆ˜ = ์Œ๋ฃŒ์ˆ˜๋ฅผ ๊ตฌ๋งคํ•˜๋Š” procedure(์ง„ํ–‰์ ˆ์ฐจ)

 

'์•Œ๊ณ ๋ฆฌ์ฆ˜'์€ ์ˆ˜ํ•™์ž, ๊ฐœ๋ฐœ์ž๋“ค๋งŒ ์“ฐ๋Š” ๊ณตํ•™ ์šฉ์–ด๊ฐ€ ์•„๋‹ˆ๋ผ ์šฐ๋ฆฌ ์ผ์ƒ์ƒํ™œ์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์š”๋ฆฌ๋ฅผ ํ•˜๋Š”๋ฐ ๋ฌด์—‡๋ถ€ํ„ฐ ํ•˜๋Š”๊ฒŒ ํšจ์œจ์ ์ผ์ง€, ๊ธธ์„ ์žƒ์—ˆ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ๋„ ์ „๋ถ€ ๊ทธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ด๋‹ค.


# ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ

์–ด๋– ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งŒ๋“ค์—ˆ์„ ๋•Œ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

๊ทธ ์ค‘ ๊ฐ€์žฅ ์‰ฝ๊ฒŒ ๊ณ„์‚ฐ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์‚ฌ์šฉํ•˜๋Š” ์‹œ๊ฐ„๊ณผ ๊ณต๊ฐ„์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

  1. ๊ณต๊ฐ„ - ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์–ผ๋งˆ๋‚˜ ์ ๊ฒŒ ์“ฐ๋Š”๊ฐ€?
  2. ์‹œ๊ฐ„ - ๊ณ„์‚ฐ ์‹œ๊ฐ„์ด ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฌ๋Š”๊ฐ€?

 

์ •๋„๊ฐ€ ๋˜๊ฒ ๋‹ค. ์‚ฌ์‹ค 2000๋…„๋Œ€ ์ „ ๋งŒํ•ด๋„ ์ปดํ“จํ„ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋„‰๋„‰ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋“œ์ฝ”๋”ฉ์„ ํ•ด์„œ๋ผ๋„ ๊ณต๊ฐ„์„ ์–ด๋–ป๊ฒŒ๋“  ํ™•๋ณดํ–ˆ๋˜ ์‹œ์ ˆ์ด ์žˆ์—ˆ๋‹ค. ์ง€๊ธˆ์€ ๋„˜์ณ๋‚˜๋Š”๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ์ด๊ธฐ์— ์–ด๋งˆ์–ด๋งˆํ•˜๊ฒŒ ํฐ ๋Œ€ํ˜• ํ”„๋กœ๊ทธ๋žจ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๋ณดํ†ต ๊ณต๊ฐ„๋ณด๋‹ค๋Š” ์‹œ๊ฐ„ ํšจ์œจ์„ ๋” ์ค‘์š”ํ•˜๊ฒŒ ๋ณธ๋‹ค.

 

ํ•˜์ง€๋งŒ ์ปดํ“จํ„ฐ๋งˆ๋‹ค, ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ์‹คํ–‰์‹œ๊ฐ„์€ ๋‹ค๋ฅด๊ฒŒ ์ธก์ •๋  ๊ฒƒ์ด๋‹ค. ๋‹น์—ฐํ•˜๊ฒŒ๋„ ์ •๋ง ๋”๋Ÿฝ๊ฒŒ ๋Š๋ฆฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋Œ€๋ถ€๋ถ„์˜ ์ƒํ™ฉ์—์„œ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์กด์žฌํ•œ๋‹ค. ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ์ธก์ •ํ•˜๊ณ  ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์„๊นŒ?


# Big-O ํ‘œ๊ธฐ๋ฒ•

ํ•ด๋‹น ์ž๋ฃŒ๊ตฌ์กฐ(์•Œ๊ณ ๋ฆฌ์ฆ˜)์˜ ๋Œ€๋žต์ ์ธ ์‹œ๊ฐ„ ์„ฑ๋Šฅ์„ ์•Œ์•„๋ณด๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ๋ณต์žก๋„(=์„ฑ๋Šฅ)์˜ ‘์ฆ๊ฐ€์œจ’์„ ๋ณธ๋‹ค๋Š” ๋ง์ด๋‹ค.

 

์ž๋ฃŒ๊ตฌ์กฐ๋‚˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ์„ ๋•Œ ๋Œ€๋žต์ ์ธ '์ž‘๋™ํ•˜๋Š” ์‹œ๊ฐ„' ์„ฑ๋Šฅ์„ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. 3๊ฐœ๊ฐ€ ์ฆ๊ฐ€ํ–ˆ์„ ๋•Œ 3์ดˆ๊ฐ€ ๋”๊ฑธ๋ฆฐ๋‹ค๋ฉด $O(n)$, ๊ทธ์˜ ์ œ๊ณฑ์ธ $3^2 = 9$์ดˆ๊ฐ€ ๊ฑธ๋ฆฐ๋‹ค๋ฉด $O(n^2)$ ์ด๋Ÿฐ์‹์œผ๋กœ ํ‘œ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

๋ฌผ๋ก  f(n)+100,000 ๊ฐ™์€ ์—ฐ์‚ฐ์„ ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด, ์ด๋ ‡๊ฒŒ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ‹€๋ฆฐ๊ฒŒ ์•„๋‹Œ๊ฐ€ ์‹ถ์„ ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ ํ˜„๋Œ€์˜ ์ปดํ“จํ„ฐ CPU๋Š” ์ดˆ๋‹น ์–ต๋‹จ์œ„๋กœ ์—ฐ์‚ฐ์„ ํ•œ๋‹ค. ์ฆ‰ ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ์–ด๋งˆ์–ด๋งˆํ•˜๊ฒŒ ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์ˆ˜๊ฐ’(100,000)์€ ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฆ„์ด Big-O (ํฐ ์ฐจ์ˆ˜๋งŒ ๊ธฐ๋กํ•œ๋‹ค๋Š” ์˜๋ฏธ)

 

๋ฌผ๋ก  ์‹ค์ œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ์ธก์ • ํ• ๋•Œ๋Š” ๊ทธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ตœ์•…, ํ‰๊ท , ์ตœ๊ณ  ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜๊ณ  ์—ฐ์‚ฐ ์„ฑ๋Šฅ์„ ์ˆ˜์‹์œผ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. (ex ๋ฐ”๋‘‘, ์ฒด์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜) ํ•˜์ง€๋งŒ ์ง€๊ธˆ ์‹œ์ ์—์„œ๋Š” ๊ทธ ์ •๋„๋กœ ๋”ฐ์งˆ ํ•„์š”๋Š” ์—†์œผ๋‹ˆ ๊ถ๊ธˆํ•˜๋ฉด ํ•ด๋‹น ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.

 

## O(log n) ์€ ์–ด๋–ป๊ฒŒ ๋‚˜์˜ค๋Š”๊ฑฐ์ฃ ?

์ด์ง„ ํƒ์ƒ‰์ฒ˜๋Ÿผ ์—ฐ์‚ฐ์„ 1ํšŒ ํ• ๋•Œ๋งˆ๋‹ค ์—ฐ์‚ฐํšŸ์ˆ˜๊ฐ€ ์ œ๊ณฑ์œผ๋กœ ์ค„์–ด๋“ค๋ฉด log(n) ๋ณต์žก๋„๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด 3000ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ง„ ์ฑ…์—์„œ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ํŽ˜์ด์ง€๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ƒ๊ฐํ•ด๋ณด์ž.

์ฑ…์„ ํŽผ์น  ๋•Œ ๋งˆ๋‹ค ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ์œ„์น˜๋ฅผ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ณ„์†ํ•ด์„œ ๋ฐ˜์„ ๋‚˜๋ˆ  ์ฐพ์œผ๋ฉด ํƒ์ƒ‰ํ•  ๋ฒ”์œ„๊ฐ€

(ํŽ˜์ด์ง€ ์ˆ˜)$  * \frac{1}{2}$ ๋งŒํผ ์ค„์–ด๋“ ๋‹ค. ์ด๋ฅผ ์ˆ˜์‹์œผ๋กœ n์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ์‹œ๊ฐ„์ด $O(log_2 n)$์œผ๋กœ ๋ณ€ํ•˜๊ฒŒ ๋œ๋‹ค.

 

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

JiwonDev

JiwonDev

ํ™œ๋™ํ•˜๊ธฐ