Complexity of an Algorithm

Notation and SOTA with Asymptotic

First of all

์šฐ๋ฆฌ๊ฐ€ ํ’€๊ณ , ๊ตฌํ˜„ํ•˜๊ณ , ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์–ด๋–ป๊ฒŒ ์“ฐ๋Š”๊ฒŒ ๊ฐ€์žฅ ํšจ์œจ์ ์ผ๊นŒ์š”? ์ €๋Š” ์ด ์งˆ๋ฌธ์˜ ๋‹ต์„ ์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ๊ณต๊ฐ„ ๋ณต์žก๋„๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ ์ง€๋ฅผ ์•„๋Š”๊ฒƒ์—์„œ ์‹œ์ž‘ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด์š”. ๊ทธ๋ฆฌ๊ณ  ์ด ๋ณต์žก๋„๋ฅผ ์œ„ํ•ด์„œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋‚˜ C++, C# ๋“ฑ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด์— ๋”ฐ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์–ด๋–ป๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š”๊ฒŒ ํšจ์œจ์ ์ธ์ง€ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ์ธก์ • ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

Asymptotic notation

์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๊ณ  ์ด๋ฅผ ์ตœ์ ํ™” ํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์–‘ํ•œ ๊ณ ๋ ค์‚ฌํ•ญ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ปดํ“จํ„ฐ์—์„œ ์—ฐ์‚ฐ ํ•  ๋•Œ์™€ ๋…ธํŠธ๋ถ์—์„œ ์—ฐ์‚ฐ ํ•  ๋•Œ์˜ ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ์žˆ๊ฒ ์ฃ . ์ด๋Ÿฐ ๋ถ€๋ถ„๋“ค ๋•Œ๋ฌธ์— ๊ณ„์‚ฐ ๋ณต์žก์„ฑ์„ ํ‘œํ˜„ ํ•˜๊ธฐ ์œ„ํ•ด ์ปดํ“จํ„ฐ ์„ฑ๋Šฅ์— ๊ด€๊ณ„ ์—†์ด ๋…๋ฆฝ์ธ ๋ฐฉ์‹์œผ๋กœ ํ‘œํ˜„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฑธ ์กฐ๊ธˆ ๋” ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹คํ–‰์‹œ๊ฐ„์—์„œ ํ•„์š”ํ•œ ๊ฐ€์žฅ ํฐ ๋ถ€๋ถ„๋“ค๋งŒ ๊ณ„์‚ฐํ•ด์„œ ์ด๋ฅผ ์†๋„๋กœ ํ‘œ๊ธฐํ•œ๊ฒƒ์„ ์ ๊ทผ์  ํ‘œ๊ธฐ๋ฒ•(Asymptotic notation) ์ด๋ผ๊ณ  ํ•ด์š”.

๊ทธ๋Ÿฌ๋‹ˆ๊นŒ, ์ ๊ทผ์  ํ‘œ๊ธฐ๋ฒ•์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งŒ๋“ค๊ณ  ๊ทธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ž˜ ๋งŒ๋“ค์–ด ์กŒ๋Š”์ง€ ํ‰๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ๊ฑฐ์ฃ . ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฑธ ํ‰๊ฐ€ํ•˜๋Š” ๊ธฐ์ค€์€ ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ ๊ธฐ์ค€์œผ๋กœ ์ˆ˜ํ–‰์‹œ๊ฐ„ ์ด๋‚˜ ์‚ฌ์šฉ ๊ณต๊ฐ„์ด ์–ผ๋งˆ๋‚˜ ์‚ฌ์šฉ๋˜๋Š”์ง€๊ฐ€ ๋˜๋Š”๊ฑฐ๊ตฌ์š”.

์ ๊ทผ์  ํ‘œ๊ธฐ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ ์ €๋Š” ๋น… ์˜ค, ์˜ค๋ฉ”๊ฐ€, ์„ธํƒ€ ์ด 3๊ฐœ๋ฅผ ๋จผ์ € ์ด์•ผ๊ธฐ ํ•ด๋ณผ๊บผ์—์š”.

Basic notation operation

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํšจ์œจ์„ฑ์„ ๊ณ„์‚ฐ ํ• ๋•Œ๋Š” ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜ n ์ด ์ฃผ์–ด์กŒ์„ ๋•Œ ํ•„์š”ํ•œ ๊ธฐ๋ณธ ์—ฐ์‚ฐ ํšŸ์ˆ˜๋กœ ํ‘œํ˜„ ํ•ด์š”. ๊ทธ๋ฆฌ๊ณ  ์ ๊ทผ ํ‘œ๊ธฐ๋ฒ•์—์„  ๋กœ์ง์„ ๋‹จ์ˆœํ™” ํ•ด์„œ ์ตœ๊ณ ์ฐจํ•ญ์˜ ์ฐจ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‚ผ์•„์š”. ์˜ˆ๋ฅผ ๋“ค์–ด n2+n+9n^2+n+9 ์˜ ๊ณ„์‚ฐ ๋ณต์žก์„ฑ์„ ๊ฐ€์ง„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด ๊ทธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ณ„์‚ฐ๋ณต์žก๋„๋Š” **** n2n^2 ์ด ๋˜๋Š”๊ฑฐ์ฃ . ์ด๋ ‡๊ฒŒ ํ•ด์„œ ๊ตฌํ•œ ๊ณ„์‚ฐ๋ณต์žก๋„๋กœ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„œ๋กœ ๋น„๊ตํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€๋กœ, ์ž…๋ ฅ ํฌ๊ธฐ (๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜)์— ๋”ฐ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹คํ–‰ ์‹œ๊ฐ„์„ ํ‘œํ˜„ํ•  ๋•Œ ์ ๊ทผ์  ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ž์ฃผ ๋ณด๊ฒŒ ๋˜๋Š” ํ•จ์ˆ˜์˜ ํ‘œํ˜„์‹์€ ์œ„์™€ ๊ฐ™์•„์š”.

State of the art

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

SOTA๋Š” AI๋‚˜ ๋”ฅ๋Ÿฌ๋‹ ๋ถ„์•ผ์—์„œ ์ฃผ๋กœ ์“ฐ๋Š” ์šฉ์–ด๋ผ๊ณ  ์•Œ๊ณ  ์žˆ์–ด์š”. ๊ทธ๋ ‡์ง€๋งŒ ์œ ์šฉํ•œ ํ‘œํ˜„์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด์„œ ์ฐธ๊ณ ์‚ฌํ•ญ์œผ๋กœ ๋„ฃ์–ด๋ณด์•˜์–ด์š”.

Asymptotic tighter bound (Theta Notation)

์ƒˆ๋กœ ๋งŒ๋“  ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด "์•„๋ฌด๋ฆฌ ๋‚˜์˜๊ฑฐ๋‚˜ ์ข‹๋”๋ผ๋„ n0n_0 ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฅธ์ชฝ์˜ ์ˆ˜์น˜๋Š” ๊ธฐ์กด์— ์กด์žฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์†๋„์•ˆ์— ์žˆ๋‹ค" ๋ผ๋Š” ๋œป์ด์—์š”. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ, ์œ„ ๊ทธ๋ฆผ์—์„œ์ฒ˜๋Ÿผ c1g(n)c_1g(n)๊ณผ c2g(n)c_2g(n)์˜ ์‚ฌ์ด์— f(n)์ด ์žˆ๋‹ค๋Š” ๋ง์€ ๊ธฐ์กด์— ์กด์žฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ ๊ทผ์  ์ƒํ•œ์„ (Big-O Nation)์™€ ์ ๊ทผ์  ํ•˜ํ•œ์„ (Omega Notation) ์†๋„ ์‚ฌ์ด์— ์žˆ๋‹ค๋Š” ๋ง์ด์ฃ .

Asymptotic lower bound (Omega Notation)

์˜ค๋ฉ”๊ฐ€ ํ‘œ๊ธฐ๋ฒ•์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด "์ตœ์†Œํ•œ ๊ธฐ์กด์˜ ๋น„๊ตํ•˜๋Š” ์†๋„์™€๊ณผ ๊ฐ™๊ฑฐ๋‚˜ ํ˜น์€ ์ข‹์ง€ ์•Š๋‹ค" ๋ฅผ ์˜๋ฏธํ•ด์š”. ์ฆ‰ ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งŒ๋“ค์—ˆ์„ ๋•Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ณ„์‚ฐ ๋ณต์žก๋„๊ฐ€ n2n^2 ์ด๋ผ๋ฉด ์•„๋ฌด๋ฆฌ ๋นจ๋ผ๋„ n2n^2์„ ๋„˜์ง€ ๋ชปํ•˜๊ฑฐ๋‚˜ ๋” ๋А๋ฆฌ๋‹ค๋Š” ๋ง์ด์ฃ .

Asymptotic upper bound (Big-O Notation)

๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์€ ํ•œ ์ค„๋กœ ๋งํ•˜๋ฉด "์•„๋ฌด๋ฆฌ ๋‚˜๋น ๋„ ์ด์ •๋„ ์†๋„๊ฐ€ ์†Œ์š”๋œ๋‹ค." ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์–ด์š”.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์€ ๋งค๋ฒˆ ์ˆ˜ํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐ์ด๋‚˜ ํ•˜๋“œ์›จ์–ด์˜ ์ฐจ์ด๋กœ ์ธํ•ด ๋ณ€๋™์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜ํ–‰ ์ค‘ ๋ฐฑ๋ฒˆ์ค‘์— ํ•œ๋ฒˆ ๋‚˜์˜จ ์†๋„๋กœ ํ‘œ๊ธฐ ํ•œ๋‹ค๋ฉด ๊ฐ๊ด€์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์†๋„๊ฐ€ ๋  ์ˆ˜ ์—†๊ฒ ์ฃ ?

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— "์ œ๊ฐ€ ๋งŒ๋“  ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์•„๋ฌด๋ฆฌ ๋А๋ ค๋„ ์ด๋งŒํผ์€ ๋‚˜์™€์š”!" ๋ผ๊ณ  ๋งํ•˜๋Š”๊ฒƒ์ด ๊ฐ€์žฅ ํŽธํ•œ๊ฑฐ์ฃ . ๊ทธ๋ž˜์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ‘œ๊ธฐ๋ฒ•์ค‘์— ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ž…๋‹ˆ๋‹ค.

Big-O Notation Graph

Data Structures Table

์ด๊ฑด ์ผ๋ฐ˜์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋“ค์˜ ์†๋„๋ฅผ ํ‘œ๋กœ ์ •๋ฆฌํ•ด๋‘” ๊ฒƒ์ด์—์š”. ๋งŒ์•ฝ ์ž„์˜๋กœ ์ƒˆ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์ด ํ‘œ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ์ตœ์†Œํ•œ ์ด์ •๋„ ์†๋„๋Š” ๋‚˜์˜ค๋„๋ก ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์•„์š”.

Data Structures
Average Case
Worst Case

Search

Insert

Delete

Search

Insert

Delete

Array

O(n)

N/A

N/A

O(n)

N/A

N/A

Sorted Array

O(log n)

O(n)

O(n)

O(log n)

O(n)

O(n)

Linked List

O(n)

O(1)

O(1)

O(n)

O(1)

O(1)

Doubly Linked List

O(n)

O(1)

O(1)

O(n)

O(1)

O(1)

Stack

O(n)

O(1)

O(1)

O(n)

O(1)

O(1)

Hash table

O(1)

O(1)

O(1)

O(n)

O(n)

O(n)

Binary Search Tree

O(log n)

O(log n)

O(log n)

O(n)

O(n)

O(n)

B-Tree

O(log n)

O(log n)

O(log n)

O(log n)

O(log n)

O(log n)

Red-Black tree

O(log n)

O(log n)

O(log n)

O(log n)

O(log n)

O(log n)

AVL Tree

O(log n)

O(log n)

O(log n)

O(log n)

O(log n)

O(log n)

Reference

Last updated