Complexity of an Algorithm
Notation and SOTA with Asymptotic
First of all
์ฐ๋ฆฌ๊ฐ ํ๊ณ , ๊ตฌํํ๊ณ , ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ป๊ฒ ์ฐ๋๊ฒ ๊ฐ์ฅ ํจ์จ์ ์ผ๊น์? ์ ๋ ์ด ์ง๋ฌธ์ ๋ต์ ์๊ฐ ๋ณต์ก๋์ ๊ณต๊ฐ ๋ณต์ก๋๊ฐ ์ด๋ป๊ฒ ๋ ์ง๋ฅผ ์๋๊ฒ์์ ์์ํ๋ค๊ณ ์๊ฐํด์. ๊ทธ๋ฆฌ๊ณ ์ด ๋ณต์ก๋๋ฅผ ์ํด์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ C++, C# ๋ฑ ์ฌ์ฉํ๋ ์ธ์ด์ ๋ฐ๋ผ ์๊ณ ๋ฆฌ์ฆ์ด ์ด๋ป๊ฒ ๋ณํํ๋๊ฒ ํจ์จ์ ์ธ์ง ์์์ผ ํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์๊ฐ ๋ณต์ก๋๋ ์ด๋ค ๊ธฐ์ค์ผ๋ก, ๊ทธ๋ฆฌ๊ณ ์ด๋ป๊ฒ ์ธก์ ํ ์ ์์๊น์?
Asymptotic notation
์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๊ณ ์ด๋ฅผ ์ต์ ํ ํ๋ ๊ฒ์ ๋ค์ํ ๊ณ ๋ ค์ฌํญ์ด ์กด์ฌํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ์๊ณ ๋ฆฌ์ฆ์ ์ปดํจํฐ์์ ์ฐ์ฐ ํ ๋์ ๋ ธํธ๋ถ์์ ์ฐ์ฐ ํ ๋์ ์ฑ๋ฅ ์ฐจ์ด๊ฐ ์๊ฒ ์ฃ . ์ด๋ฐ ๋ถ๋ถ๋ค ๋๋ฌธ์ ๊ณ์ฐ ๋ณต์ก์ฑ์ ํํ ํ๊ธฐ ์ํด ์ปดํจํฐ ์ฑ๋ฅ์ ๊ด๊ณ ์์ด ๋ ๋ฆฝ์ธ ๋ฐฉ์์ผ๋ก ํํํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๊ฑธ ์กฐ๊ธ ๋ ์ฝ๊ฒ ํ๊ธฐ ์ํด ์๊ณ ๋ฆฌ์ฆ ์คํ์๊ฐ์์ ํ์ํ ๊ฐ์ฅ ํฐ ๋ถ๋ถ๋ค๋ง ๊ณ์ฐํด์ ์ด๋ฅผ ์๋๋ก ํ๊ธฐํ๊ฒ์ ์ ๊ทผ์ ํ๊ธฐ๋ฒ(Asymptotic notation) ์ด๋ผ๊ณ ํด์.
๊ทธ๋ฌ๋๊น, ์ ๊ทผ์ ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ง๋ค๊ณ ๊ทธ ์๊ณ ๋ฆฌ์ฆ์ด ์ ๋ง๋ค์ด ์ก๋์ง ํ๊ฐํ๋ ๋ฐฉ๋ฒ์ธ๊ฑฐ์ฃ . ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฑธ ํ๊ฐํ๋ ๊ธฐ์ค์ ์ฃผ์ด์ง ๋ฐ์ดํฐ ๊ธฐ์ค์ผ๋ก ์ํ์๊ฐ ์ด๋ ์ฌ์ฉ ๊ณต๊ฐ์ด ์ผ๋ง๋ ์ฌ์ฉ๋๋์ง๊ฐ ๋๋๊ฑฐ๊ตฌ์.
์ ๊ทผ์ ํ๊ธฐ๋ฒ์๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ง๋ง ์ ๋ ๋น ์ค, ์ค๋ฉ๊ฐ, ์ธํ ์ด 3๊ฐ๋ฅผ ๋จผ์ ์ด์ผ๊ธฐ ํด๋ณผ๊บผ์์.
Basic notation operation
์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ๊ณ์ฐ ํ ๋๋ ๋ฐ์ดํฐ ๊ฐ์ n ์ด ์ฃผ์ด์ก์ ๋ ํ์ํ ๊ธฐ๋ณธ ์ฐ์ฐ ํ์๋ก ํํ ํด์. ๊ทธ๋ฆฌ๊ณ ์ ๊ทผ ํ๊ธฐ๋ฒ์์ ๋ก์ง์ ๋จ์ํ ํด์ ์ต๊ณ ์ฐจํญ์ ์ฐจ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์์. ์๋ฅผ ๋ค์ด ์ ๊ณ์ฐ ๋ณต์ก์ฑ์ ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ์ด ์๋ค๊ณ ํ๋ค๋ฉด ๊ทธ ์๊ณ ๋ฆฌ์ฆ์ ๊ณ์ฐ๋ณต์ก๋๋ **** ์ด ๋๋๊ฑฐ์ฃ . ์ด๋ ๊ฒ ํด์ ๊ตฌํ ๊ณ์ฐ๋ณต์ก๋๋ก ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ ์๊ณ ๋ฆฌ์ฆ์ ์๋ก ๋น๊ตํ๊ฒ ๋ฉ๋๋ค.

์ถ๊ฐ๋ก, ์ ๋ ฅ ํฌ๊ธฐ (๋ฐ์ดํฐ ๊ฐ์)์ ๋ฐ๋ผ ์๊ณ ๋ฆฌ์ฆ ์คํ ์๊ฐ์ ํํํ ๋ ์ ๊ทผ์ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค๋ฉด ์์ฃผ ๋ณด๊ฒ ๋๋ ํจ์์ ํํ์์ ์์ ๊ฐ์์.
State of the art
์๊ณ ๋ฆฌ์ฆ์ ์ธ์ ๋ ๋ค์ํ ์ด์ ๋ก ๋ณ๊ฒฝ๋๊ณ ๊ฐ์ ๋ผ์. ๋ณดํต์ ํ๊ฒฝ์ด ๋ฐ๋๊ฑฐ๋ ์ ํ๋๋ฅผ ์ฌ๋ คํ ํ์๊ฐ ์์ ๋ ๊ฐ์ ์์ ์ ์งํํ์ฃ . ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๊ฒํ ์ ์๊ณ ๋ฆฌ์ฆ์ด ๊ธฐ์กด ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ๋ณด๋ค ๊ฐ์ ๋๋ค๋ฉด ์ด๋ฅผ ํ์ฌ ์ต๊ณ ์์ค(SOTA) ๋ผ๊ณ ํฉ๋๋ค.
SOTA๋ AI๋ ๋ฅ๋ฌ๋ ๋ถ์ผ์์ ์ฃผ๋ก ์ฐ๋ ์ฉ์ด๋ผ๊ณ ์๊ณ ์์ด์. ๊ทธ๋ ์ง๋ง ์ ์ฉํ ํํ์ด๋ผ๊ณ ์๊ฐํด์ ์ฐธ๊ณ ์ฌํญ์ผ๋ก ๋ฃ์ด๋ณด์์ด์.
Asymptotic tighter bound (Theta Notation)

์๋ก ๋ง๋ ์๊ณ ๋ฆฌ์ฆ์ด "์๋ฌด๋ฆฌ ๋์๊ฑฐ๋ ์ข๋๋ผ๋ ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฅธ์ชฝ์ ์์น๋ ๊ธฐ์กด์ ์กด์ฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๋์์ ์๋ค" ๋ผ๋ ๋ป์ด์์. ๊ทธ๋ฌ๋๊น, ์ ๊ทธ๋ฆผ์์์ฒ๋ผ ๊ณผ ์ ์ฌ์ด์ f(n)์ด ์๋ค๋ ๋ง์ ๊ธฐ์กด์ ์กด์ฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ๊ทผ์ ์ํ์ (Big-O Nation)์ ์ ๊ทผ์ ํํ์ (Omega Notation) ์๋ ์ฌ์ด์ ์๋ค๋ ๋ง์ด์ฃ .
Asymptotic lower bound (Omega Notation)

์ค๋ฉ๊ฐ ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ด "์ต์ํ ๊ธฐ์กด์ ๋น๊ตํ๋ ์๋์๊ณผ ๊ฐ๊ฑฐ๋ ํน์ ์ข์ง ์๋ค" ๋ฅผ ์๋ฏธํด์. ์ฆ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ๋ง๋ค์์ ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ณ์ฐ ๋ณต์ก๋๊ฐ ์ด๋ผ๋ฉด ์๋ฌด๋ฆฌ ๋นจ๋ผ๋ ์ ๋์ง ๋ชปํ๊ฑฐ๋ ๋ ๋๋ฆฌ๋ค๋ ๋ง์ด์ฃ .
Asymptotic upper bound (Big-O Notation)
๋น ์ค ํ๊ธฐ๋ฒ์ ํ ์ค๋ก ๋งํ๋ฉด "์๋ฌด๋ฆฌ ๋๋น ๋ ์ด์ ๋ ์๋๊ฐ ์์๋๋ค." ๋ผ๊ณ ํ ์ ์์ด์.
์๊ณ ๋ฆฌ์ฆ ์ํ ์๊ฐ์ ๋งค๋ฒ ์ํํ ๋๋ง๋ค ๋ฐ์ด๋ ํ๋์จ์ด์ ์ฐจ์ด๋ก ์ธํด ๋ณ๋์ด ๋ฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ ์๊ณ ๋ฆฌ์ฆ ์ํ ์ค ๋ฐฑ๋ฒ์ค์ ํ๋ฒ ๋์จ ์๋๋ก ํ๊ธฐ ํ๋ค๋ฉด ๊ฐ๊ด์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์๋๊ฐ ๋ ์ ์๊ฒ ์ฃ ?
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ "์ ๊ฐ ๋ง๋ ์๊ณ ๋ฆฌ์ฆ์ ์๋ฌด๋ฆฌ ๋๋ ค๋ ์ด๋งํผ์ ๋์์!" ๋ผ๊ณ ๋งํ๋๊ฒ์ด ๊ฐ์ฅ ํธํ๊ฑฐ์ฃ . ๊ทธ๋์ ์๊ณ ๋ฆฌ์ฆ ํ๊ธฐ๋ฒ์ค์ ๊ฐ์ฅ ๋ง์ด ์ฐ์ ๋๋ค.

Data Structures Table
์ด๊ฑด ์ผ๋ฐ์ ์ผ๋ก ๊ตฌํํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ค์ ์๋๋ฅผ ํ๋ก ์ ๋ฆฌํด๋ ๊ฒ์ด์์. ๋ง์ฝ ์์๋ก ์๋ก ๊ตฌํํด์ผ ํ๋ค๋ฉด ์ด ํ๋ฅผ ์ฐธ๊ณ ํด์ ์ต์ํ ์ด์ ๋ ์๋๋ ๋์ค๋๋ก ๊ตฌํํ๋ ๊ฒ์ด ์ข์์.
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