๐Ÿ–ฅ Computer Science/์ž๋ฃŒ๊ตฌ์กฐ

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๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ..
2-3 Tree 2-3ํŠธ๋ฆฌ๋Š” ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์ด์ง€๋งŒ BST๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์ฐจ์ˆ˜๊ฐ€ 3์ธ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, Binary๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 2-3 Tree๋Š” ํŠธ๋ฆฌ์˜ ๋†’์ด๊ฐ€ ๊ท ํ˜•์„ ์ด๋ฃจ๋ฉฐ ๋‚ด๋ถ€๋…ธ๋“œ์˜ ์ฐจ์ˆ˜๊ฐ€ 2 ๋˜๋Š” 3์ธ ๊ท ํ˜• ํƒ์ƒ‰ํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค. 2-3 Tree ์กฐ๊ฑด 2-3 Tree์—๋Š” Internal Node์™€ External Node์˜ ๊ฐœ๋…์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. Internal Node(๋‚ด๋ถ€๋…ธ๋“œ)๋Š” Key๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋‚ด๋ถ€ ๋…ธ๋“œ์ด๋ฉฐ, External Node(์™ธ๋ถ€๋…ธ๋“œ)๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์žˆ์ง€ ์•Š์€ ๋…ธ๋“œ๋กœ์จ Internal Node์˜ Leaf Node์˜ ์ž์‹์œผ๋กœ ์กด์žฌํ•˜๋Š” ๊ฐ€์ƒ์˜ ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค. 2-3 Tree์—์„œ ๊ฐ๊ฐ์˜ ๋‚ด๋ถ€ ๋…ธ๋“œ๋Š” 2-Node ์ด๊ฑฐ๋‚˜ 3-Node ์ž…๋‹ˆ๋‹ค. ์ค‘๋ณต๋œ Key๋Š” ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 2-Node๋Š” 1..
BST์˜ ๋ฌธ์ œ์  ์ผ๋ฐ˜์ ์ธ BST(์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ)๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฝ์ž…๋˜๋Š” ์ˆœ์„œ์— ๋”ฐ๋ผ ํ•œ์ชฝ์œผ๋กœ ํŽธํ–ฅ๋˜๋Š” ํ˜•ํƒœ๋กœ ํŠธ๋ฆฌ๊ฐ€ ํ˜•์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ž…๋ ฅ์—ด์ด 50 -> 30 -> 100 -> 20 -> 150 ์ธ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ž…๋ ฅ์—ด์ด 20 -> 30 -> 50 -> 100 -> 150 ์ธ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ BST๋Š” ํŠธ๋ฆฌ์˜ ๋†’์ด๋ฅผ $log(n)$ ์œผ๋กœ ๋ณด์žฅ๋ฐ›์ง€ ๋ชปํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋ฆฌ์—์„œ์˜ ์„ฑ๋Šฅ์€ ํŠธ๋ฆฌ์˜ ๋†’์ด์™€ ์—ฐ๊ด€๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰ ํŠธ๋ฆฌ์˜ ๋†’์ด๊ฐ€ $log(n)$์„ ๋ณด์žฅ๋ฐ›์ง€ ๋ชปํ•œ๋‹ค๋ฉด, BST์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ, ๊ฒ€์ƒ‰์˜ ์—ฐ์‚ฐ ์—ญ์‹œ ์‹œ๊ฐ„๋ณต์žก๋„ $O(log(n))$์„ ๋ณด์žฅ๋ฐ›์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. AVL ํŠธ๋ฆฌ AVL ํŠธ๋ฆฌ๋Š” ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ(BST)์˜ ํ•œ๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ์จ ์Šค์Šค๋กœ ๋†’์ด์˜ ๊ท ํ˜•์„ ์žก๋Š”..
๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ ํ•ด์‹œ๊ฐ€ ์–ด๋””์— ์“ฐ์ด๋Š”์ง€ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์œ ํŠœ๋ธŒ๋ฅผ ์˜ˆ์‹œ๋กœ ์ƒ๊ฐํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์–ด๋–ค ์‚ฌ๋žŒ์˜ ๋™์˜์ƒ์„ ๊ทธ๋Œ€๋กœ ์ œ ์ฑ„๋„์— ์˜ฌ๋ฆฌ๋ ค๊ณ  ํ•œ๋‹ค๋ฉด, ๊ทธ ์ˆœ๊ฐ„ ๋ฐ”๋กœ ์œ ํŠœ๋ธŒ์—์„œ ์ค‘๋ณต๋˜๋Š” ๋™์˜์ƒ์ด๋ผ๋Š” ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด์ค๋‹ˆ๋‹ค. ๋™์˜์ƒ์€ ํฌ๊ธฐ๋„ ๋งค์šฐ ํฌ๊ณ , ๊ทธ ์ˆ˜๋„ ๋งค์šฐ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋งŽ์€ ๋™์˜์ƒ ์ค‘์—์„œ ์–ด๋–ป๊ฒŒ ์ค‘๋ณต๋˜๋Š” ๋™์˜์ƒ์ธ์ง€๋ฅผ ๋น ๋ฅด๊ฒŒ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ์•ž์œผ๋กœ ์‚ดํŽด๋ณผ ์ž๋ฃŒ๊ตฌ์กฐ์ธ ํ•ด์‹œํ…Œ์ด๋ธ”์ด ๋ฐ”๋กœ ์ด๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. Hash Function (ํ•ด์‹œ ํ•จ์ˆ˜) ํ•ด์‹œ ํ•จ์ˆ˜ (Hash Function) ๋˜๋Š” ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ž„์˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋กœ ๋งคํ•‘(๋ณ€ํ™˜)ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•  ๋•Œ์—๋Š” O(1)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ..
Deap์ด๋ž€? ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ(Complete Binary Tree)์ด๋ฉฐ, ๋น„์–ด์žˆ๊ฑฐ๋‚˜ ๋‹ค์Œ์„ ๋งŒ์กฑ์‹œํ‚ค๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. 1. Root ๋…ธ๋“œ๋Š” ์•„๋ฌด๋Ÿฐ ์š”์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 2. ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋Š” min-heap ์ž…๋‹ˆ๋‹ค. 3. ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋Š” max-heap ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๊ฐ€ ๋น„์–ด์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ $i_{left}$ ๋ฅผ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ์ž„์˜์˜ ์š”์†Œ๋ผ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. $j_{right}$ ๋ฅผ $i_{left}$ ์— ๋Œ€์‘๋˜๋Š” ์šฐ์ธก ์„œ๋ธŒํŠธ๋ฆฌ์˜ ์š”์†Œ๋ผ๊ณ  ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ $j_{right}$ ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, $j_{right}$ ์˜ ์œ„์น˜๋Š” $i_{left}$ ์˜ ๋ถ€๋ชจ(parent)๋…ธ๋“œ์— ๋Œ€์‘๋˜๋Š”max-heap์˜ ์›์†Œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ํ•ญ์ƒ $i_{left}$ ๋Š” $j_{right}$ ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜..
์šฐ์„ ์ˆœ์œ„ ํ (Priority Queue) ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ๊ธฐ์กด ํ์™€ ๋‹ฌ๋ฆฌ ๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด์˜จ ์›์†Œ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์ œ๊ฑฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ์—์„œ๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ์›์†Œ๋ถ€ํ„ฐ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ์˜ ๊ตฌํ˜„ ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ตฌํ˜„ ๋ฐฉ๋ฒ• ์‚ฝ์ž… ์ตœ๋Œ“๊ฐ’ ์‚ญ์ œ ์ตœ์†Ÿ๊ฐ’ ์‚ญ์ œ ์ž„์˜์›์†Œ ์‚ญ์ œ(์ฐพ์€ ํ›„) ๊ฒ€์ƒ‰ ์ •๋ ฌ๋˜์ง€ ์•Š์€ ArrayList $$O(1)$$ $$O(n)$$ $$O(n)$$ $$O(n)$$ $$O(n)$$ ์ •๋ ฌ๋˜์ง€ ์•Š์€ LinkedList $$O(1)$$ $$O(n)$$ $$O(n)$$ $$O(1)$$ $$O(n)$$ ์ •๋ ฌ๋œ ArrayList (์˜ค๋ฆ„์ฐจ์ˆœ) $$O(n)$$ $$O(1)$$ $$O(n)$$ $$O(n)$$ $$O(log\;n)$$ ์ •๋ ฌ๋œ LinkedList ..
ํž™(Heap)์ด๋ž€? ํž™์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ(Complete Binary Tree)์ด๋ฉด์„œ, ์„ฑ์งˆ์— ๋”ฐ๋ผ ์ตœ๋Œ€ ํž™(Map Heap)๊ณผ, ์ตœ์†Œ ํž™(Min Heap), ๋‘ ๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ๋ถ„๋ฅ˜๋ฉ๋‹ˆ๋‹ค. ์ตœ๋Œ€ ํž™ (Max Heap) 1. ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ(Complete Binary Tree)์ด๋ฉด์„œ 2. ๊ฐ ๋…ธ๋“œ์˜ Key ๊ฐ’์ด ์ž์‹ ๋…ธ๋“œ์˜ Key ๊ฐ’๋ณด๋‹ค ์ž‘์ง€ ์•Š๋‹ค. ์ตœ์ดˆ ํž™ (Min Heap) 1. ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ(Complete Binary Tree)์ด๋ฉด์„œ 2. ๊ฐ ๋…ธ๋“œ์˜ Key ๊ฐ’์ด ์ž์‹ ๋…ธ๋“œ์˜ Key ๊ฐ’๋ณด๋‹ค ํฌ์ง€ ์•Š๋‹ค. ์ฐธ๊ณ ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์˜์˜ ์ค‘, ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋˜๋Š” ์˜์—ญ์€ ๋Œ€๋ถ€๋ถ„ ํž™ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ํž™์—์„œ์˜ ์‚ฝ์ž… ์ตœ๋Œ€ ํž™ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์‚ฝ์ž…ํ•˜๋ ค๋Š” ๋…ธ๋“œ๋ฅผ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ..
์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ (Binary Search Tree - BST) ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ๋Š” ์ด์ง„ํŠธ๋ฆฌ(Binary Tree)์˜ ํ•œ ์ข…๋ฅ˜์ด๋ฉฐ, ๋น„์–ด์žˆ๊ฑฐ๋‚˜ ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 1. ๋ชจ๋“  ์›์†Œ๋Š” Key๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์–ด๋– ํ•œ ์›์†Œ๋„ ๋™์ผํ•œ ํ‚ค๋ฅผ ๊ฐ€์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰ Key๋Š” ์œ ์ผํ•ฉ๋‹ˆ๋‹ค. 2. ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ๋Š” ๋น„์–ด์žˆ์ง€ ์•Š์€ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ์žˆ๋Š” Key๋ณด๋‹ค ํฐ ๊ฐ’์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. 2. ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ๋Š” ๋น„์–ด์žˆ์ง€ ์•Š์€ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ์žˆ๋Š” Key๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. 4. ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์™€ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋Š” ๋˜๋‹ค์‹œ ์ด์ง„๊ฒ€์ƒ‰ํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ๋Š” AVLํŠธ๋ฆฌ, 2-3ํŠธ๋ฆฌ, BํŠธ๋ฆฌ, ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ ๋“ฑ, ์•ž์œผ๋กœ ๋ฐฐ์šธ ์—ฌ๋Ÿฌ ํŠธ๋ฆฌ๋“ค์˜ ๊ธฐ๋ณธ์ด ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฏ€๋กœ ํ™•์‹คํ•˜๊ฒŒ ์•Œ๊ณ  ๋„˜์–ด๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„๋ณต์žก๋„ ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ๋Š”..
๋ง ๋ž‘
'๐Ÿ–ฅ Computer Science/์ž๋ฃŒ๊ตฌ์กฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก