๐ฉ ๊ท ํ ํ์ ํธ๋ฆฌ
์ด์ง ํธ๋ฆฌ๋ฅผ ํ์ฅํด ํ๋์ ๋ ธ๋๊ฐ ๊ฐ์ง ์ ์๋ ์์ ๋ ธ๋์ ์ต๋ ์ซ์๊ฐ 2๋ณด๋ค ํฐ ํธ๋ฆฌ ๊ตฌ์กฐ
ํค์ ๊ฐ์ (t-1)~(2t-1) ๊ฐ
์์ ๋ ธ๋์ ๊ฐ์ t~2t ๊ฐ
๐ฉ ์ฑ์ง
1. ๋ ธ๋์๋ 2๊ฐ ์ด์์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ ์ ์์ผ๋ฉฐ, ํญ์ ์ ๋ ฌ๋ ์ํ๋ก ์ ์ฅ๋๋ค.
2. ๋ด๋ถ ๋ ธ๋๋ ceil(m/2) ~ m ๊ฐ์ ์์์ ๊ฐ์ง ์ ์๋ค. ์ต๋ m๊ฐ์ ์์์ ๊ฐ์ง ์ ์๋ Bํธ๋ฆฌ๋ฅผ m์ฐจ Bํธ๋ฆฌ๋ผ ํ๋ค.
ceil() ํจ์๋ ์ฌ๋ฆผ ํจ์์ด๋ค. ์ฆ, ceil(3/2) = 2์ด๋ค.
์ฆ, 3์ฐจ Bํธ๋ฆฌ์ ๋ฆฌํ ๋ ธ๋์ ๋ฃจํธ๋ ธ๋๋ฅผ ์ ์ธํ ๋ด๋ถ ๋ ธ๋๋ 2-3๊ฐ์ ์์์ ๊ฐ์ง ์ ์๋ค.
3. ํน์ ๋ ธ๋์ ๋ฐ์ดํฐ(key)๊ฐ K๊ฐ๋ผ๋ฉด, ์์ ๋ ธ๋์ ๊ฐ์๋ K+1๊ฐ์ฌ์ผ ํ๋ค.
ํน์ ๋ ธ๋์ ๋ฐ์ดํฐ๊ฐ 2๊ฐ๋ผ๋ฉด, ์์ ๋ ธ๋๋ 3๊ฐ์ด๊ณ , ํน์ ๋ ธ๋์ ๋ฐ์ดํฐ๊ฐ 1๊ฐ์ด๋ฉด, ์์ ๋ ธ๋๋ 2๊ฐ์ด๋ค.
4. ํน์ ๋ ธ๋์ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ๋ ํน์ ๋ ธ๋์ key๋ณด๋ค ์์ ๊ฐ๋ค๋ก, ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ๋ ํฐ ๊ฐ๋ค๋ก ๊ตฌ์ฑ๋๋ค.
B-ํธ๋ฆฌ๋ ๋ ธ๋ ๋ด์ key ๊ฐ์ด 2๊ฐ ์ด์ ๋ค์ด๊ฐ ์ ์๊ธฐ ๋๋ฌธ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์ ๊ฐ์๋ key์ ๊ฐ์๋ณด๋ค 1๊ฐ ๋ ๋ง๋ค. ๋ฐ๋ผ์, ๋ ธ๋ ๋ด์์ key๊ฐ a1, a2, a3 ๋ฑ์ผ๋ก ์กด์ฌํ๋ค๋ฉด, a1์ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ๋ a1๋ณด๋ค ์์์ผ ํ๊ณ , a1๊ณผ a2 ์ฌ์ด์ ์๋ธ ํธ๋ฆฌ๋ a1๋ณด๋ค๋ ํฌ๋ฉด์ a2๋ณด๋ค ์์์ผ ํ๋ค.
10์ ์ผ์ชฝ ์๋ธํธ๋ฆฌ๋ 10๋ณด๋ค ์์ ๊ฐ์ด ์์นํ๋ค. (10, 21) ์ฌ์ด์ ์๋ธ ํธ๋ฆฌ๋ 10๋ณด๋ค๋ ํฌ์ง๋ง, 21๋ณด๋ค๋ ์์ ๊ฐ๋ค์ด ์์นํ๋ค.
5. ๋ ธ๋ ๋ด์ ๋ฐ์ดํฐ๋ ceil(m/2)-1๊ฐ๋ถํฐ ์ต๋ m-1๊ฐ๊น์ง ํฌํจ๋ ์ ์๋ค.
3์ฐจ Bํธ๋ฆฌ๋ ๋ ธ๋ ๋ด์ 1-2๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง ์ ์๋ค.
6. ๋ชจ๋ ๋ฆฌํ ๋ ธ๋๋ค์ ๊ฐ์ ๋ ๋ฒจ์ ์กด์ฌํ๋ค.
๋ชจ๋ ๋ฆฌํ ๋ ธ๋๋ค์ ๊ฐ์ ๋ ๋ฒจ์ ์กด์ฌํด์ผ ํ๋ค. ์ฆ, ๋ฃจํธ ๋ ธ๋์์ ๋ชจ๋ ๋ฆฌํ ๋ ธ๋๋ก ๊ฐ๋ ๊ฒฝ๋ก์ ๊ธธ์ด๊ฐ ๊ฐ๋ค.
๐ฉ ํ์
๋ฃจํธ ๋ ธ๋์์ ํ์์ ์์ํ์ฌ ํํฅ์์ผ๋ก ํ์์ ์งํํ๋ค.
K(์ฐพ๊ณ ์ ํ๋ ๊ฐ)๊ณผ ๋ ธ๋์ key ๊ฐ์ ๋น๊ตํด ์๋ง์ ์์ ๋ ธ๋๋ก ๋ด๋ ค๊ฐ๋ค.
๐ฉ ์ฝ์
์ํฅ์์ผ๋ก ์งํ๋๋ค.
ํธ๋ฆฌ๊ฐ ๋น์ด์๋ค๋ฉด ๋ฃจํธ ๋ ธ๋๋ฅผ ํ ๋นํ๊ณ k๋ฅผ ์ฝ์ ํ๋ค.
๋น์ด์์ง ์๋ค๋ฉด, ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ์ ์ ํ ๋ฆฌํ ๋ ธ๋๋ฅผ ํ์ํ๋ค. ๋ฆฌํ ๋ ธ๋๊ฐ ๋ถ์ ์ ํ ์ํ์ ์๋ค๋ฉด ๋ถ๋ฆฌํ๋ค.
์ ์ ํ ์ํ : ํด๋น ๋ ธ๋์ ๋ฐ์ดํฐ ๊ฐ์๊ฐ ํ์ฉ ๋ฒ์ ์์ ์๋ ๊ฒ
1. ๋ ธ๋ ๋ถํ ์ด ์ผ์ด๋์ง ์๋ ๊ฒฝ์ฐ
1-1. ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ ๋ฆฌํ ๋ ธ๋๋ฅผ ํ์ํ๊ณ , ํด๋น๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ค.
2. ํด๋น ๋ ธ๋๊ฐ ์ ์ ํ ์ํ์ ์๋ค๋ฉด, ์ฝ์ ์ ์ข ๋ฃํ๋ค.
B-ํธ๋ฆฌ์ 9๋ฅผ ์ฝ์ ํ๋ค๋ฉด, 9๋ฅผ ๋ฃ์ ๋ ธ๋๋ฅผ ํ์ ๊ณผ์ ๊ณผ ๋์ผํ๊ฒ ํ์ํด์ ์ฐพ๋๋ค.
9๋ฅผ ์ฝ์ ํ ๋ ธ๋๋ฅผ ์ฐพ์๋ค๋ฉด, ํด๋น ๋ ธ๋์ 9๋ฅผ ์ฝ์ ํ๋ค. ์ด๋ 3์ฐจ ํธ๋ฆฌ๋ ํ ๋ ธ๋์ ์ต๋ 2๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ์ ์์ผ๋ฏ๋ก, ๋ฆฌํ ๋ ธ๋๋ ์ ์ ํ ์ํ์ ์๊ธฐ์ ์ฝ์ ๊ณผ์ ์ ์ข ๋ฃํ๋ค.
2. ๋ ธ๋ ๋ถํ ์ด ์ผ์ด๋๋ ๊ฒฝ์ฐ
2-1. ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ ๋ฆฌํ ๋ ธ๋๋ฅผ ํ์ํ๊ณ , ํด๋น ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ค.
2-2. ํด๋น ๋ ธ๋์ ์ผ์ชฝ ํค๋ค์ ์ผ์ชฝ ์์์ผ๋ก, ์ค๋ฅธ์ชฝ ํค๋ค์ ์ค๋ฅธ์ชฝ ์์์ผ๋ก ๋ถ๋ฆฌ๋๋ค.
2-3. ๋ถ๋ชจ ๋ ธ๋๋ฅผ ๊ฒ์ฌํด ๋ถ๋ชจ ๋ ธ๋๊ฐ ๋ถ์ ์ ํ ์ํ์ ์๋ค๋ฉด ์์ ๊ฐ์ ๋ถ๋ฆฌ๋ฅผ ๋ฐ๋ณตํ๋ค.
B-ํธ๋ฆฌ์ 16์ ์ฝ์ ํ๋ค๊ณ ํ๋ฉด, ๋จผ์ 16์ ๋ฃ์ ๋ ธ๋๋ฅผ ํ์ ๊ณผ์ ๊ณผ ๋์ผํ๊ฒ ์ฐพ๋๋ค.
K๋ฅผ ์ฝ์ ํ ๋ฆฌํ ๋ ธ๋๋ฅผ ์ฐพ์๋ค๋ฉด, ํด๋น ๋ ธ๋์ K๋ฅผ ์ฝ์ ํ๋ค. ์ด ๋, 3์ฐจ ํธ๋ฆฌ๋ ํ ๋ ธ๋์ ์ต๋ 2๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ์ ์์ผ๋ฏ๋ก ๋ฆฌํ ๋ ธ๋๋ ๋ถ์ ์ ํ ์ํ์ ์๊ธฐ ๋๋ฌธ์ ๋ถ๋ฆฌ๋ฅผ ์งํํ๋ค.
15๋ ์ผ์ชฝ ์์์ผ๋ก, 17์ ์ค๋ฅธ์ชฝ ์์์ผ๋ก ์ค์ ํ๋ค.
๋ถ๋ชจ ๋ ธ๋๊ฐ ๋ค์ ๋ถ์ ์ ํ ์ํ๊ฐ ๋์์ผ๋ฏ๋ก, ๋ถ๋ฆฌ๋ฅผ ์งํํ๋ค.
1. ์ค์๊ฐ 16์ ๋ถ๋ชจ ๋ ธ๋์ ์ฝ์ ํ๋ค.
2. 14๋ ์ผ์ชฝ ์์, 18์ ์ค๋ฅธ์ชฝ ์์์ผ๋ก ์ค์ ํ๋ค.
3. ๋ถ๋ชจ ๋ ธ๋๊ฐ ๋ค์ ๋ถ์ ์ ํ ์ํ๊ฐ ๋์์ผ๋ฏ๋ก, ๋ถ๋ฆฌ๋ฅผ ์งํํ๋ค.
1. ์ค์๊ฐ 16์ ๋ถ๋ชจ ๋ ธ๋์ ์ฝ์ ํ ์ ์์ผ๋, ์๋ก ๋ ธ๋๋ฅผ ์์ฑํ๋ค.
2. 10์ ์ผ์ชฝ ์์, 21์ ์ค๋ฅธ์ชฝ ์์์ผ๋ก ์ค์ ํ๋ค.
3. ๋ชจ๋ ๋ ธ๋๊ฐ ์ ์ ํ ์ํ์ ์์ผ๋ฏ๋ก ์ฝ์ ์ ์ข ๋ฃํ๋ค.
๐ฉ ์ญ์
Lmax = ํ์ฌ ๋ ธ๋์ ์ผ์ชฝ ์์๋ค ์ค ๊ฐ์ฅ ํฐ ํค
Rmin = ํ์ฌ ๋ ธ๋์ ์ค๋ฅธ์ชฝ ์์๋ค ์ค ๊ฐ์ฅ ์์ ํค
parent = ํ์ฌ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ถ๋ชจ ๋ ธ๋์ ์์ ํฌ์ธํฐ ์ค๋ฅธ์ชฝ์ ์๋ ํค. ๋จ, ๋ง์ง๋ง ์์ ๋ ธ๋์ ๊ฒฝ์ฐ, ๋ถ๋ชจ์ ๋ง์ง๋ง ํค
k = ์ญ์ ํ ํค
๋ ธ๋๋ฅผ ์ญ์ ํ๋ ๊ณผ์ ์ค ํธ๋ฆฌ๋ฅผ ์ฌ๊ตฌ์กฐํ์์ผ์ผ ํ๋ค.
3์ฐจ ํธ๋ฆฌ๋ฅผ ์์๋ก ๋ค๋ฉด, 2-3๊ฐ์ ์์์ ๊ฐ์ง ์ ์๊ณ , 1-2๊ฐ์ ํค ๊ฐ์ ๊ฐ์ง ์ ์๋ค.
์ด๊ฒ์ด ์ต์ ์ ์ง ๊ฐ์
1. ๋ฆฌํ ๋ ธ๋์์ ์ญ์
1-1. ๋ฆฌํ ๋ ธ๋์์ ๊ฐ์ ์ญ์ ํ๋๋ผ๋ ์ต์ ์ ์ง ๊ฐ์๋ฅผ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฒฝ์ฐ ๐ ์ด ๊ฒฝ์ฐ ๋ฐ๋ก ๋ ธ๋ ์ญ์ ํด์ฃผ๋ฉด ๋๋ค.
1-2. ๋ฆฌํ ๋ ธ๋์์ ๊ฐ์ ์ญ์ ํ ๋, ์ต์ ์ ์ง ๊ฐ์๋ฅผ ๋ง์กฑํ์ง ๋ชปํ์ง๋ง, ๋ฐ๋ก ์ ํ์ ๋ ธ๋๋ค์๊ฒ ๊ฐ์ ๋น๋ ค์ฌ ์ ์๋ ๊ฒฝ์ฐ
๐ k๋ฅผ parent๋ก ๋ฐ๊ฟ์ค๋ค. ์ดํ ์ผ์ชฝ ํ์ ๋ ธ๋์๊ฒ์ ๊ฐ์ ๋น๋ ค์ฌ ์ ์๋ค๋ฉด Lmax์ parent๋ฅผ, ์ค๋ฅธ์ชฝ ํ์ ์๊ฒ์ ๊ฐ์ ๋น๋ ค์ฌ ์ ์๋ค๋ฉด Rmin๊ณผ parent๋ฅผ ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค. ๋ ๋ค ๊ฐ๋ฅํ๋ฉด ํ๋ ์ ํํ๋ฉด ๋๋ค.
์์ ๊ฐ์ ๊ฒฝ์ฐ 19๋ฅผ ์ ๊ฑฐํ๊ฒ ๋๋ฉด, (14,17)์ ์์ ๋ ธ๋์ ๊ฐ์๋ 3๊ฐ์ฌ์ผํ๋ ์กฐ๊ฑด์ ์๋ฐํ๊ฒ ๋๋ค. ํ์ง๋ง ์ด๋ ์ผ์ชฝ ํ์ ๋ ธ๋์๊ฒ์ ๊ฐ์ ๋น๋ ค์ฌ ์ ์๋ค.
๊ฐ์ฅ ๋จผ์ k๋ฅผ parent๋ก ๋ฐ๊ฟ์ค๋ค. ์ฌ๊ธฐ์ 19๋ ๋ง์ง๋ง ์์์ด์์ผ๋ฏ๋ก (14,17) ์ค ๋ง์ง๋ง key์ธ 17์ด parent๊ฐ ๋๋ค.
์ผ์ชฝ ํ์ ์๊ฒ์ ๊ฐ์ ๋น๋ฆด ์ ์์ผ๋ฏ๋ก, Lmax์ parent๋ฅผ ๋ฐ๊ฟ์ค๋ค.
์ ๊ฑฐ๊ฐ ์๋ฃ๋์๋ค. ์ต์ ์ ์ง ๊ฐ์๋ฅผ ๋ง์กฑํ๋ค.
1-3. ๋ฆฌํ ๋ ธ๋์์ ๊ฐ์ ์ญ์ ํ ๋, ์ต์ ์ ์ง ๊ฐ์๋ฅผ ๋ง์กฑํ์ง ๋ชปํ๊ณ ํ์ ๋ ธ๋๋ค์๊ฒ ๊ฐ์ ๋น๋ ค์ฌ ์ ์์ง๋ง, ๋ถ๋ชจ ๋ ธ๋๋ฅผ ๋ถํ ํ ์ ์์ ๋
๐ key๋ฅผ ์ญ์ ํ๊ณ , parent๋ฅผ ๋ถ๋ชจ ๋ ธ๋์์ ๋ถํ ํ์ฌ ํ์ ๋ ธ๋์ ํฉ์น๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ถ๋ชจ ๋ ธ๋์ key๊ฐ ํ๋ ์ค๊ณ , ์์ ๋ ธ๋์ ์๋ ํ๋ ์ค์ด๋ค์ด ์ต์ ์ ์ง ๊ฐ์๋ฅผ ๋ง์กฑํ๋ค.
์์ ๊ฐ์ ๊ฒฝ์ฐ 22๋ฅผ ์ญ์ ํ๋ฉด (23,28)์ ์์ ์๊ฐ 2๊ฐ๊ฐ ๋์ด ์ต์ ์ ์ง ๊ฐ์๋ฅผ ๋ง์กฑํ์ง ๋ชปํ๋ค.
์ด๋ parent๋ฅผ ๋ถํ ํ์ฌ ํ์ ๋ ธ๋์ ํฉ์น๋ฉด ๋๋ค.
22์ ์ ๊ฑฐ๊ฐ ์๋ฃ๋์๋ค.
1-4. ๋ฆฌํ ๋ ธ๋์์ ๊ฐ์ ์ญ์ ํ ๋, ์ต์ ์ ์ง ๊ฐ์๋ฅผ ๋ง์กฑํ์ง ๋ชปํ๊ณ , ํ์ ๋ ธ๋๋ค์๊ฒ์ ๊ฐ์ ๋น๋ ค์ฌ ์๋ ์๊ณ , ๋ถ๋ชจ ๋ ธ๋๋ ๋ถํ ํ ์ ์์ ๋
๐ 2-2์ ๋์ผํ๋ค.
2. ๋ฆฌํ ๋ ธ๋๊ฐ ์๋ ๋ด๋ถ ๋ ธ๋์์ ์ญ์
2-1. ๋ด๋ถ ๋ ธ๋์์ ๊ฐ์ ์ญ์ ํ ๋, ํ์ฌ ๋ ธ๋ ํน์ ์์ ๋ ธ๋์ ์ต์ ์ ์ง ๊ฐ์์ ์ต์๋ณด๋ค ํฐ ๊ฒฝ์ฐ
๐ k์ Lmax ๋๋ Rmin๊ณผ ์๋ฆฌ๋ฅผ ๋ฐ๊ฟ์ค๋ค. ์ดํ ๋ฆฌํ ๋ ธ๋์์์ k ์ญ์ ์ ๊ณผ์ ์ด ๋์ผํ๋ค.
21์ ์ญ์ ํ๋ฉด, ์์ ๋ ธ๋์ ๊ฐ์๊ฐ 2๊ฐ์ฌ์ผ ํ๋๋ฐ, 3๊ฐ๋ก ๋๋ฌด ๋ง๋ค.
k์ Lmax์ธ 19์ ๋ฐ๊พธ๊ฑฐ๋, Rmin์ธ 22์ ๋ฐ๊พผ๋ค. ์ดํ๋ ๋ฆฌํ ๋ ธ๋์ ์ญ์ ์ ๊ณผ์ ์ด ๋์ผํ๋ค.
2-2. ๋ด๋ถ ๋ ธ๋์์ ๊ฐ์ ์ญ์ ํ ๋, ํ์ฌ ๋ ธ๋์ ์์ ๋ ธ๋ ๋ชจ๋ key ๊ฐ์๊ฐ ์ต์์ธ ๊ฒฝ์ฐ
๐ ์ด ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ํธ๋ฆฌ์ ์ฌ๊ตฌ์กฐํ๊ฐ ํ์ํ๋ค.
1. k๋ฅผ ์ญ์ ํ๊ณ k์ ์์์ ํ๋๋ก ํฉ์น๋ค.
2. k์ parent๋ฅผ k์ ํ์ ๋ ธ๋์ ํฉ์น๋ค. ํฉ์ณ์ง ๋ ธ๋๋ฅผ n2๋ผ ํ์.
3. n1์ n2์ ์์์ด ๋๋๋ก ์ฐ๊ฒฐํ๋ค.
4-1. ๋ง์ฝ n2์ ํค ์๊ฐ ์ต๋๋ณด๋ค ํฌ๋ค๋ฉด ํค ์ฝ์ ๊ณผ์ ๊ณผ ๋์ผํ๊ฒ ๋ถํ ํ๋ค.
4-2. ๋ง์ฝ n2์ ํค ์๊ฐ ์ต์๋ณด๋ค ์๋ค๋ฉด 2๋ฒ ๊ณผ์ ์ผ๋ก ๋์๊ฐ์ ๋์ผํ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
4๋ฅผ ์ ๊ฑฐํ๋ฉด, ํ์ฌ ๋ ธ๋ ๋ฐ ์์ ๋ ธ๋๋ค์ ์ต์ ์ ์ง ๊ฐ์๋ฅผ ๋ง์กฑํ ์ ์๋ค.
k์ ์์ ๋ ธ๋๋ฅผ ๋ชจ๋ ํฉ์ณ์ค๋ค(n1)
k์ parent ์ธ 10์ ํ์ ๋ ธ๋์ ํฉ์ณ์ค๋ค(n2)
๋ํ n1์ n2์ ์์์ผ๋ก ์ฐ๊ฒฐํด์ค๋ค. ์์์ b-ํธ๋ฆฌ๊ฐ 3์ฐจ ํธ๋ฆฌ๋ผ ๊ฐ์ ํ๋ฉด, ํค์ ๊ฐ์๊ฐ 3๊ฐ๋ก ๋๋ฌด ๋ง์์ ๋ถํ ์ ์งํํ๋ค.
๐ฉ ์๊ฐ๋ณต์ก๋
O(logn)
'๐ฉโ๐ป ํ๋ก๊ทธ๋๋ฐ > ๐ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ (์ต์ ์ ์ฅ ํธ๋ฆฌ) (0) | 2024.04.19 |
---|---|
ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ (์ต์ ์ ์ฅ ํธ๋ฆฌ) (1) | 2024.04.19 |
๋ ๋-๋ธ๋ ํธ๋ฆฌ(Red-Black Tree) (0) | 2024.04.15 |
2-3-4 ํธ๋ฆฌ (0) | 2024.04.14 |
์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree) (0) | 2024.04.14 |