Database (λ°μ΄ν°λ² μ΄μ€)
B+ νΈλ¦¬
9taetae9
2024. 6. 12. 09:32
728x90
B+-νΈλ¦¬μ μ₯μ λ° λ¨μ
μ₯μ :
- μλ μ¬μ‘°μ§ν: B+-νΈλ¦¬λ μ½μ λ° μμ μμ μ΄ λ°μν λλ§λ€ μμ μ§μμ λ³κ²½μΌλ‘ μλμΌλ‘ μ¬μ‘°μ§νλλ€. μ΄λ λ°μ΄ν°λ² μ΄μ€κ° κ³μν΄μ ν¨μ¨μ μΌλ‘ μλνλλ‘ λμμ€λ€.
λ¨μ :
- μ€λ²ν€λ: μ½μ λ° μμ μ μΆκ°μ μΈ μ€λ²ν€λκ° λ°μνλ©°, νΈλ¦¬ ꡬ쑰λ₯Ό μ μ§νκΈ° μν΄ κ³΅κ°μ μΈ μ€λ²ν€λλ μ‘΄μ¬νλ€.
B+-νΈλ¦¬μ ꡬ쑰 λ° νΉμ±
- κ· ν νΈλ¦¬: 루νΈμμ 리ν λ ΈλκΉμ§μ λͺ¨λ κ²½λ‘μ κΈΈμ΄κ° λμΌ
- μμ μ μ ν: 루νΈλ 리νκ° μλ κ° λ Έλλ μ΅μ ⌈n/2⌉μμ μ΅λ nκ°μ μμμ κ°μ§
- 리ν λ Έλμ κ° μ μ ν: 리ν λ Έλλ μ΅μ ⌈(n–1)/2⌉μμ μ΅λ (n–1)κ°μ κ°μ κ°μ§
- 루νΈμ νΉμ κ²½μ°: 루νΈκ° 리νκ° μλ κ²½μ° μ΅μ 2κ°μ μμμ κ°μ ΈμΌνκ³ λ£¨νΈκ° 리νμΈ κ²½μ° μ΅μ 0κ°μμ μ΅λ (n–1)κ°μ κ° κ°μ§
B+-νΈλ¦¬ λ Έλμ ꡬ쑰
- μΌλ°μ μΈ λ
Έλ: [P1, K1, P2, K2, ..., Pn-1, Kn-1, Pn]μ ννλ‘ κ΅¬μ±
- K1, K2, ..., Kn-1: νμ ν€ κ°λ€
- P1, P2, ..., Pn: μμ λ Έλλ‘μ ν¬μΈν° (λΉλ¦¬ν λ Έλμ κ²½μ°) λλ λ μ½λλ λ μ½λ λ²ν·μΌλ‘μ ν¬μΈν° (리ν λ Έλμ κ²½μ°)
- λ
Έλ λ΄ ν€ κ°μ μμ: κ° λ
Έλ λ΄μ νμ ν€ κ°λ€μ K1 < K2 < ... < Kn–1μ μμλ‘ μ λ ¬λμ΄ μμ
- μ€λ³΅λ ν€ κ°μ΄ μλ€κ³ κ°μ
B+-νΈλ¦¬μ 리ν λ Έλ
- 리ν λ
Έλμ νΉμ±:
- Piλ νμ ν€ κ° Kiλ₯Ό κ°μ§ λ μ½λλ‘μ ν¬μΈν°μ΄λ€.
- Liμ Ljκ° λ¦¬ν λ Έλμ΄κ³ i < jλΌλ©΄, Liμ νμ ν€ κ°λ€μ Ljμ νμ ν€ κ°λ€λ³΄λ€ μκ±°λ κ°λ€.
- Pnμ λ€μ 리ν λ Έλ(νμ λ Έλ)λ‘μ ν¬μΈν°μ΄λ€.
B+-νΈλ¦¬μ λΉλ¦¬ν λ Έλ
- λΉλ¦¬ν λ
Έλλ€μ 리ν λ
Έλμ λν λ€λ¨κ³ ν¬μ μΈλ±μ€λ₯Ό νμ±νλ€.
- λΉλ¦¬ν λ Έλμ νν: [P1, K1, P2, K2, ..., Pn-1, Kn-1, Pn]
- P1μ΄ κ°λ¦¬ν€λ μλΈνΈλ¦¬μ λͺ¨λ νμ ν€ κ°μ K1λ³΄λ€ μλ€.
- 2 ≤ i ≤ n – 1μΈ κ²½μ°, Piκ° κ°λ¦¬ν€λ μλΈνΈλ¦¬μ λͺ¨λ νμ ν€ κ°μ Ki–1λ³΄λ€ ν¬κ±°λ κ°κ³ Kiλ³΄λ€ μλ€.
- Pnμ΄ κ°λ¦¬ν€λ μλΈνΈλ¦¬μ λͺ¨λ νμ ν€ κ°μ Kn–1λ³΄λ€ ν¬κ±°λ κ°λ€.
B+-νΈλ¦¬μ μ (n=6)
- 리ν λ Έλλ μ΅μ 3κ°μμ μ΅λ 5κ°μ κ°μ κ°μ§λ€. (⌈(n–1)/2⌉ ~ (n–1))
- λΉλ¦¬ν λ Έλ(λ£¨νΈ μ μΈ)λ μ΅μ 3κ°μμ μ΅λ 6κ°μ μμμ κ°μ§λ€. (⌈n/2⌉ ~ n)
- 루νΈλ μ΅μ 2κ°μ μμμ κ°μ§λ€.
B+-νΈλ¦¬μ μ½μ λ° μμ ν¨μ¨μ±
- ν¬μ μΈλ±μ€: λΉλ¦¬ν λ Έλλ ν¬μ μΈλ±μ€λ₯Ό νμ±νκ³ , 리ν λ Έλλ λ°μ§ μΈλ±μ€λ₯Ό νμ±νλ€.
- μ½μ λ° μμ ν¨μ¨μ±: μ½μ λ° μμ μμ μ μΈλ±μ€λ₯Ό μ¬κ΅¬μ±ν¨μΌλ‘μ¨ ν¨μ¨μ μΌλ‘ μ²λ¦¬λλ€. νΈλ¦¬ ꡬ쑰μ μ‘°μ μ λ‘κ·Έ μκ° λ΄μ μνλλ€.
B+-νΈλ¦¬μ λμ΄
- B+-νΈλ¦¬λ μλμ μΌλ‘ μ μ μμ λ 벨μ κ°μ§λ€.
- λ£¨νΈ μλ λ 벨μλ μ΅μ 2*⌈(n-1)/2⌉ κ°μ κ°μ΄ μλ€. => 루νΈλ μ΅μ 2κ°μ μμμ κ°μ§κ³ 리ν λ Έλλ μ΅μ ⌈(n–1)/2⌉κ°μ κ°μ§κΈ° λλ¬Έ.
- κ·Έ λ€μ λ 벨μλ μ΅μ 2*⌈n/2⌉ * ⌈(n-1)/2⌉ κ°μ κ°μ΄ μλ€. => λΉλ¦¬ν λ Έλ(λ£¨νΈ μ μΈ)λ μ΅μ ⌈n/2⌉κ°μ μμμ κ°μ§κΈ° λλ¬Έ
- νμΌμ Kκ°μ νμ ν€ κ°μ΄ μλ κ²½μ°, νΈλ¦¬μ λμ΄λ μ΅λ ⌈log⌈n/2⌉(K)⌉μ΄λ€.
- λ
Έλλ μΌλ°μ μΌλ‘ λμ€ν¬ λΈλ‘κ³Ό λμΌν ν¬κΈ°(4K λλ 8K)μ΄λ€.
- nμ μΌλ°μ μΌλ‘ μ½ 100μ΄λ€ (μΈλ±μ€ νλͺ© λΉ 40λ°μ΄νΈ)
- 100λ§ κ°μ νμ ν€ κ°κ³Ό n=100μΌ κ²½μ°, μ΅λ ⌈log50(1,000,000)⌉=4κ°μ λ Έλλ₯Ό μ‘°ννλ€.
- λ°λ©΄, κ· ν μ΄μ§ νΈλ¦¬μμλ 100λ§ κ°μ νμ ν€ κ°μ λν΄ μ½ 20κ°μ λ Έλλ₯Ό μ‘°νν΄μΌ νλ€.
B+-νΈλ¦¬μμμ μ§μ
- νΉμ νμ ν€ κ° Vλ₯Ό κ°μ§ λ μ½λλ₯Ό μ°Ύλ λ°©λ²:
- Cλ₯Ό 루νΈλ‘ μ€μ
- Cκ° λ¦¬ν λ
Έλκ° λ λκΉμ§ λ°λ³΅ :
- iλ₯Ό V ≤ Kiλ₯Ό λ§μ‘±νλ μ΅μ κ°μΌλ‘ μ€μ
- λ§μ½ κ·Έλ° iκ° μ‘΄μ¬νμ§ μμΌλ©΄, Cλ₯Ό Cμ λ§μ§λ§ non-null pointerλ‘ μ€μ
- V=Kiμ΄λ©΄, Cλ₯Ό Pi+1λ‘ μ€μ
- κ·Έλ μ§ μμΌλ©΄, Cλ₯Ό Piλ‘ μ€μ
- μ΄μ Cλ 리ν λ Έλμ΄λ€. iλ₯Ό Ki = Vλ₯Ό λ§μ‘±νλ μ΅μ κ°μΌλ‘ μ€μ
- λ§μ½ κ·Έλ° κ° iκ° μ‘΄μ¬νλ©΄, Pi ν¬μΈν°λ₯Ό λ°λΌκ° λ μ½λλ₯Ό μ»λλ€. κ·Έλ μ§ μμΌλ©΄, ν΄λΉ νμ ν€ κ°μ κ°μ§ λ μ½λλ μ‘΄μ¬νμ§ μλλ€.
728x90