Multiway Search Tree (๋ค์ ํ์ ํธ๋ฆฌ) / m-way Search Tree (m ๋ถ๊ธฐ ํ์ ํธ๋ฆฌ)
ํ ๋ ธ๋๊ฐ ๊ฐ์ง ์ ์๋ key์ ๊ฐ์ด ์ต๋ m-1๊ฐ์ด๊ณ
๊ฐ์ง ์ ์๋ Child์ ์๊ฐ m๊ฐ์ธ ํธ๋ฆฌ๋ฅผ Mulituway Search Tree๋ผ ํฉ๋๋ค.
์ด์ง ํธ๋ฆฌ : 2-way search tree
AVL ํธ๋ฆฌ : 2-way search tree
2-3 ํธ๋ฆฌ : 3-way search tree
์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
m-way Search Tree๋ ๋ค์์ ๋ง์กฑํ๋ ๊ฒ์ ํธ๋ฆฌ์ ๋๋ค.
1. Leaf Node๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ ธ๋๋ m๊ฐ ์ดํ์ ์๋ธ ํธ๋ฆฌ๋ฅผ ๊ฐ์ง๋๋ค.
2. k๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ๋ ๋ ธ๋๋, k-1๊ฐ์ ์์(key)๋ฅผ ๊ฐ์ง๋๋ค.
3. ๊ฐ ๋ ธ๋์ key๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด ์์ต๋๋ค.
4. ๋ ธ๋์ i๋ฒ์งธ Key ๊ฐ์ $Key_i$, i๋ฒ์งธ ์๋ธํธ๋ฆฌ๊ฐ ๊ฐ์ง ๋ชจ๋ Key๋ค์ $SKeys_{i}$ ๋ผ๊ณ ํ ๋, ๋ค์์ ๋ง์กฑํฉ๋๋ค.
$$SKeys_i < Key_i < SKeys_{i+1}< Key_{i+1}$$
5. ์ค๋ณต๋ ๋ฐ์ดํฐ๋ ํ์ฉํ์ง ์์ต๋๋ค.
B-Tree
m-way Search Tree์ ํ ์ข ๋ฅ๋ก์จ, ๋ค์์ ๋ง์กฑํ๋ ํธ๋ฆฌ์ ๋๋ค.
Order๊ฐ m์ธ B-Tree๋ m-way search tree์ด๋ฉฐ ๋ค์์ ๋ง์กฑํฉ๋๋ค.
1. ๋ฃจํธ ๋ ธ๋๋ ์ต์ 2๊ฐ ์ด์์ ์์์ ๊ฐ์ต๋๋ค.(๋ฆฌํ ๋ ธ๋์ธ ๊ฒฝ์ฐ ์ ์ธ)
2. ๋ฃจํธ๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ ธ๋๋ ์ต์ $ \left \lceil \frac{m}{2} \right \rceil$ (m์ ์ ๋ฐ ์ด์)๊ฐ์ ์์์ ๊ฐ์ง๋๋ค.
3. ๋ชจ๋ Failure Node๋ ๋์ผ level์ ์กด์ฌํด์ผ ํฉ๋๋ค.
Failure Node๋ Leaf Node ์๋์ ์กด์ฌํ๋ ๊ฐ์์ Node์ ๋๋ค.
์์ผ๋ก ์ธ๊ธํ๋ Leaf Node๋ Failure Node๊ฐ ์๋ Failure Node์ ๋ถ๋ชจ ๋ ธ๋๋ฅผ ์๋ฏธํฉ๋๋ค.
order๊ฐ 2์ธ B-Tree๋ full binary tree์ ๋๋ค.
2-3 Tree๋ order๊ฐ 3์ธ Bํธ๋ฆฌ ์ ๋๋ค.
B-Tree ์ฌ์ฉ ์ด์
B-Tree๋ ํ๋ฒ์ ์ ๊ทผ ์ ๋ง์ ์์์ ์๋ชจํ๋ ๋ฐ์ดํฐ(Disk ๋ฑ์ ์กด์ฌ)๋ฅผ ํจ์จ์ ์ผ๋ก ์กฐํํ๊ธฐ ์ํด ์ฌ์ฉํฉ๋๋ค.
์ผ๋ฐ์ ์ธ BST์ ๊ฒฝ์ฐ, ํ๋ฒ์ ์ ๊ทผ์ ์ค์ง 2๊ฐ์ ๋ฐ์ดํฐ๋ง ๊ฐ์ง๊ณ ์ค๊ธฐ ๋๋ฌธ์ 10๋ฒ์ Disk Access๋ฅผ ํ๋๋ผ๋ $2^{10}$ ๊ฐ ๋งํผ์ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ order๊ฐ 200์ธ B-Tree๋ฅผ ์๊ฐํ๋ฉด 2๋ฒ์ ์ ๊ทผ๋ง์ผ๋ก๋ $200^2$๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์ฌ ์ ์์ผ๋ฏ๋ก ํจ์จ์ ์ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ๋ค๊ณ ์ค๋๊ฒ ๊ฐ์ฅ ์ข์ง ์์๊น์?
Disk๋ฑ์ ๊ณต๊ฐ์๋ ์์ฒญ๋ ์์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์์ด์ ์ด๋ฅผ memory์ ๋ชจ๋ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๊ธฐ์, ์ด์ฉ ์ ์์ด ์ฌ๋ฌ๋ฒ ๋์คํฌ์ ์ ๊ทผํด์ผ ํฉ๋๋ค.
์ฆ m์ ํฌ๊ธฐ๋ฅผ ์ ์กฐ์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ๋ฌด๋ฆฌ๊ฐ ๊ฐ์ง ์์ผ๋ฉด์ Disk์ ์ ๊ทผ ํ์๋ฅผ ์ต๋ํ ์ค์ด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
B-Tree ์์์ ์ฝ์
๋ฐ๋์ Leaf Node์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํฉ๋๋ค.
1. ๊ฐ์ด ์ถ๊ฐ๋ ์์น๋ฅผ ์ฐพ์ต๋๋ค.
2. ์ถ๊ฐ๋ Leaf Node๊ฐ ์ฉ๋์ ์ด๊ณผํ์ง ์์๋ค๋ฉด ์ค๋ฆ์ฐจ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํฉ๋๋ค.
๋ง์ฝ ์ฉ๋์ ์ด๊ณผํ์๋ค๋ฉด Split(๋ถํ )์ ์ํํ์ฌ์ผ ํฉ๋๋ค.
์์๋ก ์ฌ์ฉ๋๋ B-Tree๋ Order๊ฐ 5์ธ B-Tree์ ๋๋ค.
Split(๋ถํ )
Split์ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๋๋ค.
์ถ๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ์ฌ ์ค์๊ฐ์ ๊ฒฐ์ ํฉ๋๋ค.
์ค์๊ฐ์ ๋ถ๋ชจ ๋ ธ๋์ ์ถ๊ฐ์ํค๋ฉฐ ์ค์๊ฐ๋ณด๋ค ์์ ๊ฐ๋ค์ ์ผ์ชฝ ์๋ธํธ๋ฆฌ, ์ค์๊ฐ๋ณด๋ค ํฐ ๊ฐ๋ค์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ๊ฐ ๋ฉ๋๋ค.
๋ถ๋ชจ ๋ ธ๋๊ฐ ์๋ค๋ฉด ์๋ก ์์ฑํ๋ฉฐ,
๋ถ๋ชจ ๋ ธ๋์์๋ ์ฉ๋์ด ๊ฐ๋์ฐผ๋ค๋ฉด ๋๊ฐ์ด Split ํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํฉ๋๋ค.
Rotation๊ณผ Merge
์ญ์ ์ ๊ฒฝ์ฐ Rotation(ํ์ )๊ณผ Merge(๋ณํฉ)์ ์ฌ์ฉํฉ๋๋ค.
Rotation (ํ์ )
์์๊ฐ ์ญ์ ๋๋ ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก,
์ญ์ ๋๋ ๋ ธ๋์ ํ์ ๋ ธ๋์ ์์ ํ๋๋ฅผ ๋ถ๋ชจ ๋ ธ๋๋ก,
๋ถ๋ชจ ๋ ธ๋์ ์์ ํ๋๋ฅผ ์์ ์ ๋ ธ๋๋ก ๊ฐ์ ธ์ ํ์ ์ํค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
Rotation์ด ๊ฐ๋ฅํ ์กฐ๊ฑด
order๊ฐ 5์ธ B-Tree๋ฅผ ์์๋ก ์ค๋ช ํ๊ฒ ์ต๋๋ค.
๋ชจ๋ ๋ ธ๋๋ค์ $\left \lceil \frac{5}{2} \right \rceil = 3$๊ฐ ์ด์์ ์์์ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
์ญ์ ๋๋ ๋ ธ๋์ ํ์ ๋ ธ๋๊ฐ $\left \lceil \frac{m}{2} \right \rceil + 1$๊ฐ ์ด์์ Key๋ฅผ ๊ฐ์ง๊ณ ์์ ๊ฒฝ์ฐ,
ํ๋๋ฅผ ์ ๊ฑฐํด๋ B-Tree์ ์กฐ๊ฑด์ ๋ง์กฑ์ํค๋ฏ๋ก Rotation์ด ๊ฐ๋ฅํฉ๋๋ค.
Merge (๋ณํฉ)
์์๊ฐ ์ญ์ ๋๋ ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก,
์ญ์ ๋๋ ๋ ธ๋์ ์งํ ํ์ ๋ ธ๋(ํน์ ์ง์ ํ์ ๋ ธ๋)์ ์์ ์ฌ์ด์ ํฌํจ๋๋ ๋ชจ๋ ๋ถ๋ชจ ์์๋ฅผ ํฉ์น๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ดํ ์ค๋ช ํ ๋ชจ๋ ์ญ์ ์ ์ํฉ์์, ๋ค์๊ณผ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค๊ณ ํ๊ฒ ์ต๋๋ค.
Non Leaf Node์ ์ญ์ ์, ์ญ์ ๋๋ Key์ Left Subtree์ ์ต๋๊ฐ์ผ๋ก ๋น์ด์๋ ๋ถ๋ถ์ ์ฑ์์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค.
RightSubtree์ ์ต์๊ฐ์ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ ์ดํ ์กด์ฌํ๋ ๊ฐ๋ค์ ์ผ์ชฝ์ผ๋ก ํ์นธ์ฉ ๋น๊ฒจ์ฃผ์ด์ผ ํ์ง๋ง,
LeftSubtree์ ์ต๋๊ฐ์ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ ๋ฐ๋ก ๊ฐ์ ธ์ฌ ์ ์๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ ๋๋ค.
Rotation์ ์ต์ข์ธก ์๋ธํธ๋ฆฌ๋ฅผ ์ ์ธํ๊ณ ๋ ๋ฐ๋์ ์ผ์ชฝ ํ์ ๋ ธ๋๋ฅผ ํ์ธํ์ฌ ๊ฐ๋ฅํ ๋๋ง ๋ฐ์ํ๋ค๊ณ ํ๊ฒ ์ต๋๋ค.
์ต์ข์ธก ์๋ธํธ๋ฆฌ๋ ํญ์ ์ผ์ชฝ ํ์ ๋ ธ๋๊ฐ ์์ผ๋ฏ๋ก ์ด ๊ฒฝ์ฐ์๋ง ํน๋ณํ๊ฒ ์ค๋ฅธ์ชฝ ํ์ ๋ ธ๋๋ฅผ ํ์ธํฉ๋๋ค.
์ด ๋ํ ๋ง์ฐฌ๊ฐ์ง๋ก ์ค๋ฅธ์ชฝ ํ์ ๋ ธ๋์์ Rotation์ ํ๋ ๊ฒฝ์ฐ ๊ฐ๋ค์ ํ์นธ์ฉ ๋น๊ฒจ์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋นํจ์จ์ ์ด๋ฏ๋ก ์์๊ฐ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค.
Rotation์ ์ต์ข์ธก ์๋ธํธ๋ฆฌ๋ฅผ ์ ์ธํ๊ณ ๋ ๋ฐ๋์ ์ผ์ชฝ ํ์ ๋ ธ๋๋ฅผ ์ฐ์ ์ ์ผ๋ก ํ์ธ๋๋ก ํ๊ฒ ์ต๋๋ค.
B-Tree ์์์ ์ญ์
- Leaf Node์ ์ญ์
- Non Leaf Node์ ์ญ์
ํธ๋ฆฌ์์์ Non Leaf Node์ ์ญ์ ๋ ๋ชจ๋ Leaf Node์ ์ญ์ ํํ๋ก ๋ฐ๊ฟ์ฃผ์ด ์๊ฐํ ์ ์์ต๋๋ค.
Leaf Node์ ์ญ์
- ์ญ์ ์ ๋ ธ๋์ ์์๋ ธ๋์ ์๊ฐ $\left \lceil \frac{m}{2} \right \rceil$(m์ ์ ๋ฐ ์ด์)๊ฐ๋ณด๋ค ํฐ ๊ฒฝ์ฐ
- ์ญ์ ์ ๋ ธ๋์ ์์๋ ธ๋์ ์๊ฐ $\left \lceil \frac{m}{2} \right \rceil$(m์ ์ ๋ฐ ์ด์)๊ฐ๋ณด๋ค ์์์ง ๊ฒฝ์ฐ
์ฒซ๋ฒ์งธ ๊ฒฝ์ฐ, ์ญ์ ์ดํ ์ถ๊ฐ์ ์ธ ์์ ์ด ํ์ํ์ง ์์ต๋๋ค.
๋๋ฒ์งธ ๊ฒฝ์ฐ์์๋ ์ญ์ ์ดํ Rotation(ํ์ ) ํน์ Merge(๋ณํฉ) ์์ ์ ํํด์ฃผ์ด์ผ ํฉ๋๋ค.
Rotaion์ด ๊ฐ๋ฅํ๋ค๋ฉด Rotation์,
Rotation์ด ๋ถ๊ฐ๋ฅํ๋ค๋ฉด Merge๋ฅผ ์ํํฉ๋๋ค.
์ญ์ ์ ๋ ธ๋์ ์์๋ ธ๋์ ์๊ฐ $\left \lceil \frac{m}{2} \right \rceil$(m์ ์ ๋ฐ ์ด์)๊ฐ๋ณด๋ค ํฐ ๊ฒฝ์ฐ
๋ฐ๋ก ์ญ์ ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
์ญ์ ์ ๋ ธ๋์ ์์๋ ธ๋์ ์๊ฐ $\left \lceil \frac{m}{2} \right \rceil$(m์ ์ ๋ฐ ์ด์)๊ฐ๋ณด๋ค ์์ ๊ฒฝ์ฐ
์ญ์ ์ดํ Rotation ํน์ Merge๋ฅผ ์ํํฉ๋๋ค.
Non Leaf Node์ ์ญ์
Leaf Node์ ์ญ์ ํํ๋ก ๋ฐ๊ฟ์ค๋๋ค.
Reference
https://yoongrammer.tistory.com/73
'๐ฅ Computer Science > ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] - 2-3 Tree (4) | 2022.06.10 |
---|---|
[์๋ฃ๊ตฌ์กฐ] - AVL ํธ๋ฆฌ (0) | 2022.06.09 |
[์๋ฃ๊ตฌ์กฐ] - Hash(ํด์) (0) | 2022.06.07 |
[์๋ฃ๊ตฌ์กฐ] - ๋ฅ(Deap : Double Endeded Heap) (0) | 2022.06.07 |
[์๋ฃ๊ตฌ์กฐ] - ์ฐ์ ์์ ํ(Priority Queue) (0) | 2022.06.06 |