๋ฐ๋ถ€์žฅ 2025. 4. 5. 21:12

์™œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ถ„์„ํ•ด์•ผ ํ• ๊นŒ?

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

๐Ÿ“„ ์›๋ฌธ

In general, a time complexity analysis of an algorithm is the determination of how
many times the basic operation is done for each value of the input size.


โœ… ํ•ด์„

์ผ๋ฐ˜์ ์œผ๋กœ, ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ ๋ถ„์„์ด๋ž€
์ž…๋ ฅ ํฌ๊ธฐ์˜ ๊ฐ ๊ฐ’์— ๋Œ€ํ•ด ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ด ๋ช‡ ๋ฒˆ ์ˆ˜ํ–‰๋˜๋Š”์ง€๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.


๋ถ„์„์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ

๊ตฌ์„ฑ์š”์†Œ ์˜๋ฏธ
์ž…๋ ฅ ํฌ๊ธฐ(input size) ๋ฌธ์ œ์˜ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋ƒ„ (ex: ๋ฐฐ์—ด์˜ ๊ธธ์ด n)
๊ธฐ๋ณธ ์—ฐ์‚ฐ(basic operation) ๋ถ„์„ ๋Œ€์ƒ์ด ๋˜๋Š” ๋ฐ˜๋ณต ์—ฐ์‚ฐ (ex: ๋น„๊ต, ๋ง์…ˆ ๋“ฑ)
T(n) ์ž…๋ ฅ ํฌ๊ธฐ๊ฐ€ n์ผ ๋•Œ ๊ธฐ๋ณธ ์—ฐ์‚ฐ์˜ ์‹คํ–‰ ํšŸ์ˆ˜

์ž…๋ ฅ ํฌ๊ธฐ ์˜ˆ์‹œ

  • ๋ฐฐ์—ด์˜ ํ•ฉ ๊ณ„์‚ฐ: ์ž…๋ ฅ ํฌ๊ธฐ = ์›์†Œ ๊ฐœ์ˆ˜ n
  • ํ–‰๋ ฌ ๊ณฑ์…ˆ: ์ž…๋ ฅ ํฌ๊ธฐ = ํ–‰๋ ฌ ํฌ๊ธฐ n × n → ๊ทธ๋ƒฅ n์œผ๋กœ ์‚ฌ์šฉ
  • ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜ ๊ณ„์‚ฐ: ์ž…๋ ฅ์€ n, ํ•˜์ง€๋งŒ ์ž…๋ ฅ ํฌ๊ธฐ๋Š” logโ‚‚n์ด ๋  ์ˆ˜๋„ ์žˆ์Œ (์ •์ˆ˜์˜ ๋น„ํŠธ ์ˆ˜)

์‹œ๊ฐ„๋ณต์žก๋„ ์ข…๋ฅ˜

ํ‘œ๊ธฐ ์˜๋ฏธ
T(n) ๋ชจ๋“  ์ž…๋ ฅ์— ๋Œ€ํ•ด ํ•ญ์ƒ ๊ฐ™์€ ์—ฐ์‚ฐ ํšŸ์ˆ˜ → “every-case
W(n) ๊ฐ€์žฅ ๋งŽ์€ ์—ฐ์‚ฐ → “์ตœ์•…(worst-case)
A(n) ํ‰๊ท ์ ์ธ ์—ฐ์‚ฐ → “ํ‰๊ท (average-case)
B(n) ๊ฐ€์žฅ ์ ์€ ์—ฐ์‚ฐ → “์ตœ์„ (best-case)

๐Ÿ” ์˜ˆ์‹œ ๋ถ„์„๋“ค


๐Ÿ”น [์˜ˆ์ œ] Algorithm 1.2 – Add Array Members

sum ← 0  
for i = 1 to n  
  sum ← sum + S[i]

 

  • ์ž…๋ ฅ ํฌ๊ธฐ: n
  • ๊ธฐ๋ณธ ์—ฐ์‚ฐ: ๋ง์…ˆ 1๋ฒˆ
  • ๋ฐ˜๋ณต ํšŸ์ˆ˜: n๋ฒˆ
  • T(n) = n

๐Ÿ”น [์˜ˆ์ œ] Algorithm 1.3 – Exchange Sort

for i = 1 to n-1  
  for j = i+1 to n  
    if S[j] < S[i] then exchange

 

 

  • ๋น„๊ต ํšŸ์ˆ˜ ์ดํ•ฉ:(n−1)+(n−2)+...+1=n(n−1)2
  • T(n) = O(n²)

๐Ÿ”น [์˜ˆ์ œ] Algorithm 1.1 – Sequential Search

  • x๊ฐ€ ๋งจ ์•ž์— ์žˆ์œผ๋ฉด 1๋ฒˆ, ์—†์œผ๋ฉด n๋ฒˆ → ์ž…๋ ฅ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง
  • ๋”ฐ๋ผ์„œ T(n) ์—†์Œ, ๋Œ€์‹ :
๋ถ„์„ ๊ฒฐ๊ณผ
W(n) n (x๊ฐ€ ๋งˆ์ง€๋ง‰ or ์—†์Œ)
B(n) 1 (x๊ฐ€ ์ฒซ ๋ฒˆ์งธ ์›์†Œ)
A(n)

โš ๏ธ ํ‰๊ท  ๋ถ„์„ ์‹œ ์ฃผ์˜

  • ํ‰๊ท  = ๋Œ€ํ‘œ๊ฐ’์ด ์•„๋‹ˆ๋‹ค
    ์˜ˆ: ์‘๊ธ‰ ์‹œ์Šคํ…œ์ฒ˜๋Ÿผ ๋‹จ ํ•œ ๋ฒˆ์˜ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ๋„ ์œ„ํ—˜
  • ๊ทธ๋ž˜์„œ ์‹ค์ „์—์„œ๋Š” ํ‰๊ท ๋ณด๋‹ค ์ตœ์•… ๋ถ„์„(W(n))์ด ๋” ์ค‘์š”!!

ํ‚ค์›Œ๋“œ ์ •๋ฆฌ

์šฉ์–ด ๋œป
T(n) ๋ชจ๋“  ์ž…๋ ฅ์—์„œ ํ•ญ์ƒ ๊ฐ™์€ ์—ฐ์‚ฐ ํšŸ์ˆ˜
W(n) ์ตœ์•…์˜ ๊ฒฝ์šฐ ์—ฐ์‚ฐ ํšŸ์ˆ˜
A(n) ์ž…๋ ฅ์˜ ๋ถ„ํฌ๋ฅผ ๊ณ ๋ คํ•œ ํ‰๊ท  ์—ฐ์‚ฐ ํšŸ์ˆ˜
B(n) ์ตœ์„ ์˜ ๊ฒฝ์šฐ ์—ฐ์‚ฐ ํšŸ์ˆ˜
๊ธฐ๋ณธ ์—ฐ์‚ฐ ๋น„๊ต, ๋ง์…ˆ ๋“ฑ ๋ฐ˜๋ณต๋˜๋Š” ์—ฐ์‚ฐ (๋ถ„์„ ๋Œ€์ƒ)
์ž…๋ ฅ ํฌ๊ธฐ ๋ฌธ์ œ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘ (ex: ๋ฐฐ์—ด ํฌ๊ธฐ)