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
μ΄κ±΄ μΌλ°μ μΌλ‘ ꡬννλ λ°μ΄ν° ꡬ쑰λ€μ μλλ₯Ό νλ‘ μ 리ν΄λ κ²μ΄μμ. λ§μ½ μμλ‘ μλ‘ κ΅¬νν΄μΌ νλ€λ©΄ μ΄ νλ₯Ό μ°Έκ³ ν΄μ μ΅μν μ΄μ λ μλλ λμ€λλ‘ κ΅¬ννλ κ²μ΄ μ’μμ.
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