Data Structure
𧩠[Data Structure] λ‘κ·Έ μκ°(logarithmic time)μ΄λ?
π Intro.
-
λ‘κ·Έ μκ°(logarithmic time)μ μκ° λ³΅μ‘λλ₯Ό λΆμν λ μ¬μ©νλ μ©μ΄λ‘, μ΄λ€ μκ³ λ¦¬μ¦μ΄λ μ°μ°μ΄ μνλ λ μ
λ ₯ ν¬κΈ°(N)μ λ°λΌ μμ
μκ°μ΄ μ
λ ₯ ν¬κΈ°μ λ‘κ·Έ κ°μ λΉλ‘νλ κ²½μ°λ₯Ό μλ―Έν©λλ€.
β
1οΈβ£ λ‘κ·Έ μκ°μ μ μ.
-
λ‘κ·Έ μκ°μ μ
λ ₯ ν¬κΈ° Nμ΄ μ¦κ°νλλΌλ μ°μ° μκ° μ¦κ°κ° λ§€μ° λλ¦° κ²½μ°λ₯Ό λνλ
λλ€.
- μκ° λ³΅μ‘λλ₯Ό ννν λ O(log N)μΌλ‘ λνλ
λλ€.
β
2οΈβ£ λ‘κ·Έ μκ°μ μλ―Έ.
- λ§μ½ μ
λ ₯ ν¬κΈ° Nμ΄ 2λ°°λ‘ λμ΄λλ, μ°μ° μκ°μ 1ν μ λλ§ μΆκ°λλ λ°©μμΌλ‘ μ¦κ°ν©λλ€.
- μ΄λ λ‘κ·Έ(logarithm)μ μ±μ§μ κΈ°μΈνλ©°, ν¨μ¨μ μΈ μκ³ λ¦¬μ¦μ νΉμ§μ
λλ€.
β
3οΈβ£ λ‘κ·Έ μκ°μ μμ.
1οΈβ£ μ΄μ§ νμ(Binary Search) - O(log N)
-
μ΄μ§ νμμ μ λ ¬λ λ°°μ΄μμ νΉμ κ°μ μ°Ύμ λ μ¬μ©λ©λλ€.
- λ°°μ΄μ μ λ°μΌλ‘ λλλ λ°©μμΌλ‘ νμνλ―λ‘, μ
λ ₯ ν¬κΈ° Nμ λν΄ μκ° λ³΅μ‘λλ O(log N)μ
λλ€.
π2οΈβ£ μμ.
- λ°°μ΄ ν¬κΈ°: N = 16
- λΉκ΅ νμ:
- 첫 λ²μ§Έ λΉκ΅ β ν¬κΈ° 16 β 8λ‘ μ€μ΄λ¦.
- λ λ²μ§Έ λΉκ΅ β ν¬κΈ° 8 β 4.
- μΈ λ²μ§Έ λΉκ΅ β ν¬κΈ° 4 β 2.
- λ€ λ²μ§Έ λΉκ΅ β ν¬κΈ° 2 β 1μμ μ’
λ£.
- μ΄ λΉκ΅ νμ: logβ(16) = 4
3οΈβ£ B-Treeμ B+ Tree κ²μ - O(log N)
-
B-Treeμ B+ Treeλ λ°μ΄ν°λ² μ΄μ€μ νμΌ μμ€ν
μμ μ¬μ©λλ ν¨μ¨μ μΈ λ°μ΄ν° ꡬ쑰μ
λλ€.
- νΈλ¦¬μ λμ΄κ° logμ λΉλ‘νλ―λ‘, κ²μκ³Ό μ½μ
/μμ μ°μ° λͺ¨λ O(log N)μ μκ° λ³΅μ‘λλ₯Ό κ°μ§λλ€.
π4οΈβ£ μμ.
- λ°μ΄ν° κ°μ: N = 1,000
- B+ Treeμμ μ΅λ 100κ°μ μμμ κ°μ§λ€λ©΄, νΈλ¦¬μ λμ΄λ logββ(1,000) = 3
- κ²μ μκ°μ 3λ¨κ³λ§μ μνλ λ°μ΄ν°λ₯Ό μ°Ύμ μ μμ΅λλ€.
4οΈβ£ μ΄λ²€νΈ μ²λ¦¬μ λΆν μ 볡 μκ³ λ¦¬μ¦.
-
Merge Sortμ κ°μ λΆν μ 볡 μκ³ λ¦¬μ¦μμλ λ‘κ·Έ μκ°μ΄ λνλ©λλ€.
- λ¬Έμ λ₯Ό μ λ°μΌλ‘ λλμ΄ μ¬κ·μ μΌλ‘ μ²λ¦¬νλ―λ‘, κΉμ΄λ log Nμ λΉλ‘ν©λλ€.
- λ³ν© κ³Όμ μ μκ°μ O(N), λ°λΌμ μ 체 μκ° λ³΅μ‘λλ O(N log N)μ
λλ€.
β
4οΈβ£ λ‘κ·Έ μκ°μ νΉμ§.
1οΈβ£ ν¨μ¨μ±:
- λ‘κ·Έ μκ° λ³΅μ‘λλ λκ·λͺ¨ λ°μ΄ν°λ₯Ό μ²λ¦¬ν λ λ§€μ° ν¨μ¨μ μ
λλ€.
- λ°μ΄ν° ν¬κΈ° Nμ΄ κΈ°νκΈμμ μΌλ‘ μ¦κ°νλλΌλ, μμ
μκ°μ λλ¦¬κ² μ¦κ°ν©λλ€.
2οΈβ£ μ μ© μ¬λ‘:
-
κ²μ μκ³ λ¦¬μ¦ : μ΄μ§ νμ(Binary Search), B-Tree, AVL Tree, Hash Table λ±.
-
μ λ ¬ μκ³ λ¦¬μ¦ : Merge Sort, Heap Sort λ±.
-
νμΌ μμ€ν
λ° λ°μ΄ν°λ² μ΄μ€ : μΈλ±μ€ κ²μ(B+ Tree).
3οΈβ£ κΈ°λ³Έ μν:
- λ‘κ·Έ μκ°μ logβ(N) λλ logββ(N) κ°μ μνμ λ‘κ·Έ ν¨μμ μ±μ§μ κΈ°μ΄ν©λλ€.
π5οΈβ£ μ 리
-
λ‘κ·Έ μκ°(logarithmic time)μ O(log N)μ μκ° λ³΅μ‘λλ₯Ό μλ―Ένλ©°, λ°μ΄ν° ν¬κΈ°κ° μ¦κ°ν΄λ μ°μ° μκ°μ΄ λλ¦¬κ² μ¦κ°ν©λλ€.
- μ΄λ μ΄μ§ νμ, νΈλ¦¬ κΈ°λ° κ΅¬μ‘°, λΆν μ 볡 μκ³ λ¦¬μ¦ λ±μμ λνλλ ν¨μ¨μ μΈ μκ° λ³΅μ‘λμ
λλ€.