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

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ค๊ณ„์™€ ๋ถ„์„ - ์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ์ ๊ทผ์„ฑ๋Šฅ

by Leica 2020. 3. 11.
๋ฐ˜์‘ํ˜•

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ค๊ณ„์™€ ๋ถ„์„ - ์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ์ ๊ทผ์„ฑ๋Šฅ

1. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„ ๊ธฐ๋ฒ•

์ฃผ์–ด์ง„ ๋ฌธ์ œ, ์†์„ฑ, ์กฐ๊ฑด ๋“ฑ์— ๋”ฐ๋ผ ๋งค์šฐ ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ผ๋ฐ˜์ ์ด๊ณ  ๋ฒ”์šฉ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„ ๊ธฐ๋ฒ•์€ ์กด์žฌํ•˜์ง€ ์•Š์ง€๋งŒ ๊ทธ ์ค‘ ๋Œ€ํ‘œ์ ์ธ ์„ค๊ณ„ ๊ธฐ๋ฒ• ์„ธ ๊ฐ€์ง€๋ฅผ ๊ผฝ์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

  • ๋ถ„ํ•  ์ •๋ณต ๋ฐฉ๋ฒ•(Divide-and-Conquer)
  • ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ•(Dynamic Programming)
  • ์š•์‹ฌ์Ÿ์ด ๋ฐฉ๋ฒ•(Greedy)

๋”ฐ๋ผ์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ณต๋ถ€ํ•˜๋ฉฐ ์œ„ ์„ธ ๊ฐ€์ง€ ์„ค๊ณ„ ๊ธฐ๋ฒ•์€ ๊ผญ ์•Œ์•„๋‘ฌ์•ผ ํ• ๊ฒƒ์ด๋‹ค.

 

2. ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํšจ์œจ์„ฑ ๋ถ„์„

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํšจ์œจ์„ฑ ๋ถ„์„์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์–‘๊ณผ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

  • ๋ฉ”๋ชจ๋ฆฌ ์–‘ → ๊ณต๊ฐ„ ๋ณต์žก๋„(Space Complexity) = ์ •์  ๊ณต๊ฐ„ + ๋™์  ๊ณต๊ฐ„
  • ์ˆ˜ํ–‰ ์‹œ๊ฐ„ → ์‹œ๊ฐ„ ๋ณต์žก๋„(Time Complexity)

 

3. ์‹œ๊ฐ„ ๋ณต์žก๋„

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„์—๋Š” ์ž…๋ ฅ ํฌ๊ธฐ(์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ)์™€ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์ƒํƒœ(์ •๋ ฌ ์—ฌ๋ถ€ ๋“ฑ) ์ด ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ตœ์•…์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ์ž…๋ ฅ ํฌ๊ธฐ n์˜ ํ•จ์ˆ˜๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

๋‹ค์Œ ์˜ˆ๋ฅผ ๋ณด์ž. ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํ•ฉ๊ณ„์™€ ํ‰๊ท ์„ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

 

๋จผ์ € ์ž…๋ ฅ ํฌ๊ธฐ๊ฐ€ n์ผ ๋•Œ ๊ฐ ์—ฐ์‚ฐ์˜ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค. (1, 1, n+1, n, n, 1, 1)

์—ฐ์‚ฐ ํšŸ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋”ํ•˜๋ฉด f(n) = 3n+5์ด๋ฉฐ ์ ๊ทผ ์„ฑ๋Šฅ์˜ big-oh ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ O(n)์œผ๋กœ ํ‘œ๊ธฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

4. ์ ๊ทผ์„ฑ๋Šฅ์˜ ํ‘œ๊ธฐ๋ฒ•

์ ๊ทผ์„ฑ๋Šฅ์€ ์ž…๋ ฅ ํฌ๊ธฐ n์ด ๋ฌดํ•œ๋Œ€๋กœ ์ปค์ง์— ๋”ฐ๋ผ ๊ฒฐ์ •๋˜๋Š” ์„ฑ๋Šฅ์ด๋‹ค.

์ˆ˜ํ–‰ ์‹œ๊ฐ„์˜ ๋‹คํ•ญ์‹ ํ•จ์ˆ˜์—์„œ ์ตœ๊ณ ์ฐจํ•ญ๋งŒ์„ ๊ณ„์ˆ˜ ์—†์ด ์ทจํ•ด์„œ ํ‘œํ˜„ํ•œ๋‹ค.

์ ๊ทผ์„ฑ๋Šฅ์€ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์˜ ์–ด๋ฆผ๊ฐ’์ด๊ณ  ์ˆ˜ํ–‰ ์‹œ๊ฐ„์˜ ์ฆ๊ฐ€ ์ถ”์„ธ ํŒŒ์•…์ด ์šฉ์ดํ•˜๋ฉฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์šฐ์—ด์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ ๊ทผ์„ฑ๋Šฅ์˜ ํ‘œ๊ธฐ๋ฒ•์€ ํฌ๊ฒŒ big-oh, big-omega, big-theta ์„ธ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

 

(1) Big-Oh - ์ ๊ทผ์  ์ƒํ•œ

์–‘์˜ ์ƒ์ˆ˜ c์™€ n0๊ฐ€ ์กด์žฌํ•˜์—ฌ ๋ชจ๋“  n≥n0์— ๋Œ€ํ•ด f(n)≤c·g(n)์ด๋ฉด f(n)=O(g(n))์ด๋‹ค.

 

์‰ฝ๊ฒŒ ๋งํ•ด ์ž…๋ ฅ ํฌ๊ธฐ๊ฐ€ n0๋ฅผ ๋„˜์–ด์„œ๋ฉด f(n)์€ ํ•ญ์ƒ c·g(n)๋ณด๋‹ค ์ˆ˜ํ–‰์‹œ๊ฐ„์ด ์ž‘๋‹ค๋Š” ์˜๋ฏธ์ด๊ณ  O(g(n))์€ f(n)์˜ ์ตœ์•…์˜ ์ˆ˜ํ–‰์‹œ๊ฐ„์ด๋‹ค.

 

(2) Big-Omega - ์ ๊ทผ์  ํ•˜ํ•œ

์–‘์˜ ์ƒ์ˆ˜ c์™€ n0๊ฐ€ ์กด์žฌํ•˜์—ฌ ๋ชจ๋“  n≥n0์— ๋Œ€ํ•ด f(n)≥c·g(n)์ด๋ฉด f(n)=Ω(g(n))์ด๋‹ค.

 

 

์‰ฝ๊ฒŒ ๋งํ•ด ์ž…๋ ฅ ํฌ๊ธฐ๊ฐ€ n0๋ฅผ ๋„˜์–ด์„œ๋ฉด f(n)์€ ํ•ญ์ƒ c·g(n)๋ณด๋‹ค ์ˆ˜ํ–‰์‹œ๊ฐ„์ด ํฌ๋‹ค๋Š” ์˜๋ฏธ์ด๊ณ  Ω(g(n))์€ f(n)์˜ ์ตœ์„ ์˜ ์ˆ˜ํ–‰์‹œ๊ฐ„์ด๋‹ค.

 

(3) Big-Theta - ์ ๊ทผ์  ์ƒํ•˜ํ•œ

์–‘์˜ ์ƒ์ˆ˜ c1, c2์™€ n0๊ฐ€ ์กด์žฌํ•˜์—ฌ ๋ชจ๋“  n≥n0์— ๋Œ€ํ•ด c1·g(n)≤f(n)≤c2·g(n)์ด๋ฉด f(n)=Θ(g(n))์ด๋‹ค.

 

 

Big-theta๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ˆ˜ํ–‰์‹œ๊ฐ„์„ ๋” ์—„๋ฐ€ํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๋Š” ํ‘œ๊ธฐ๋ฒ•์ด๋‹ค.

 

๋‹ค์Œ์€ f(n)๊ณผ g(n)์ด ์ฃผ์–ด์กŒ์„๋•Œ f(n)์„ ์„ธ ๊ฐ€์ง€ ์ ๊ทผ์  ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด๋‹ค.

 

 

(4) ์ฃผ์š” O-ํ‘œ๊ธฐ ๊ฐ„์˜ ์—ฐ์‚ฐ ์‹œ๊ฐ„์˜ ํฌ๊ธฐ ๊ด€๊ณ„

 

5. ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ตฌํ•˜๋Š” ์‹ค์šฉ์ ์ธ ์ ‘๊ทผ ๋ฐฉ๋ฒ•

์ง€๊ธˆ๊นŒ์ง€ ๋‹ค๋ฃฌ ๋‚ด์šฉ์— ์˜ํ•˜๋ฉด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ์ˆ˜ํ–‰ ์‹œ๊ฐ„ f(n)์„ ๊ตฌํ•œ ํ›„ f(n)=O(g(n))์„ ๋งŒ์กฑํ•˜๋Š” ์ตœ์†Œ ์ฐจ์ˆ˜์˜ ํ•จ์ˆ˜ g(n)์„ ์ฐพ์•„์•ผ ํ•˜์ง€๋งŒ ์‹ค์šฉ์ ์ธ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ฃจํ”„ ๋ฐ˜๋ณต ํšŸ์ˆ˜๋งŒ ์กฐ์‚ฌํ•ด์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ์ทจํ•˜๊ณ  g(n)์€ ์ตœ๊ณ  ์ฐจ์ˆ˜์— ์˜์กดํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์ขŒ์ธก ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ while๋ฌธ์ด n๋ฒˆ ๋ฐ˜๋ณต๋˜๋ฏ€๋กœ O(n), ์šฐ์ธก ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ for๋ฌธ์ด n๋ฒˆ, ๊ทธ ์•ˆ์—์„œ ๋‹ค์‹œ n๋ฒˆ ๋ฐ˜๋ณต๋˜๋ฏ€๋กœ n*n = n^2 = O(n^2)์ด๋‹ค.

 

6. ์ˆœํ™˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ - ์ ํ™”์‹๊ณผ ํ์‡„ํ˜•

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

 

์ด์ง„ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ ํ™”์‹ ์œ ๋„

 

์ ํ™”์‹์˜ ํ์‡„ํ˜• ๊ตฌํ•˜๊ธฐ

 

๋งค๋ฒˆ ์ ํ™”์‹์„ ์œ ๋„ํ•˜๊ณ  ํ์‡„ํ˜•์„ ๊ตฌํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ๊ธฐ๋ณธ ์ ํ™”์‹๊ณผ ํ์‡„ํ˜•์ด ์กด์žฌํ•˜๋ฏ€๋กœ ์ด๋ฅผ ์•”๊ธฐํ•˜๋Š”๊ฒŒ ๋‚ซ๋‹ค.

 

๊ธฐ๋ณธ ์ ํ™”์‹๊ณผ ํ์‡„ํ˜•

ํŠนํžˆ (2), (3), (6)์€ ๊ฐ๊ฐ ํ€ต ์ •๋ ฌ, ์ด์ง„ ํƒ์ƒ‰, ํ•ฉ๋ณ‘ ์ •๋ ฌ์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด๋ฏ€๋กœ ํ•„์ˆ˜์ ์œผ๋กœ ์•”๊ธฐํ•˜์ž. ๋‚˜๋จธ์ง€ (1), (4), (5)๋Š” ๋ชจ๋‘ Θ(n)์ด๋ฏ€๋กœ ์•”๊ธฐํ•˜๊ธฐ ์‰ฝ๋‹ค.

 

References

ํ•œ๊ตญ๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐ๊ณผํ•™๊ณผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ•์˜

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€