530 likes | 703 Views
Chapter 10. Multiway Trees. Internet Computing Laboratory @ KUT Youn-Hee Han. Where We Are?. Tree. Binary Tree. AVL Search Tree. Binary Search Tree. Heap. Multiway Trees. 1. M-way Search Trees.
E N D
Chapter 10. Multiway Trees Internet Computing Laboratory @ KUT Youn-Hee Han
Where We Are? Tree Binary Tree AVL Search Tree Binary Search Tree Heap Multiway Trees
1. M-way Search Trees • Basic idea: nodes can have a variable number of data and child nodes within some pre-defined range • Each node can contain multiple data entries and thus have multiple subtrees • Each node’s outdegree is not restricted to 2 • Tree height is reduced • Rebalancing is not required frequently ≤ ≤ ≥
1. M-way Search Trees • M-way tree: a search tree in which … • Each node has 0 to m subtrees • A node with k subtrees contains k-1 data entries • Key of data entries are ordered (key1 key2 … keyk-1) • ith key key values in ith subtree < (i+1)th key • All subtrees are themselves multiway trees • Binary search tree (BST) is an m-way tree of order 2 (m=2) m=4 ≤ ≤ ≥
1. M-way Search Trees • Data Representation m=4 ≤ ≤ ≥
2. B-Trees • B-Tree: m-way (search) tree with following additional properties • Root is either a leaf or has 2…m subtrees • An internal (not root) node have the following number of subtrees • m/2 ≤number of subtrees ≤ m • A leafnode has the following number of data entries • m/2-1 ≤ number of data entries ≤ m-1 • All leaf nodes are at the same level • The tree is perfectly balanced
2. B-Trees • B-Tree • Bayer와 Mc Creight에 의해 제안된 것 • 내부 노드의 자식 노드의 수가 미리 정해진 범위 내에서 변경 • 인덱스를 조직하는 방법으로 가장 많이 사용되는 것으로서 균형된 m-원 탐색트리 이다 • 장점 • 1) 삽입,삭제 후에도 균형 트리 유지 • 2) 저장 장치의 효율성을 높일 수 있다.
2. B-Trees • An example of B-Tree • Order of 5 (m=5)
2. B-Trees • An example of B-Tree • Order of 4 (m=4) B-Tree 의 정의상 위 Tree는 Order가5 인 B-Tree도 될 수 있음
g f d a h i c ㆍ ㆍ ㆍ ㆍ ㆍ ㆍ 145 80 16 60 132 100 ㆍ ㆍ ㆍ ㆍ ㆍ ㆍ ㆍ ㆍ ㆍ ㆍ ㆍ ㆍ 138 ㆍ 126 ㆍ ㆍ b e 40 43 ㆍ ㆍ 26 19 ㆍ ㆍ ㆍ ㆍ j o r p m k l s v n t u q 136 140 96 150 18 29 42 130 65 120 15 58 36 110 7 62 50 30 2. B-Trees • An example of B-Tree • Order of 3 (m=3) 보통구현시에 각 Node 마다 Order 만큼의 서브트리로의 포인터 공간을 만든다.
2. B-Trees • Insertion in B-Tree • Order 5인 B-Tree의 생성과정 a b f g ㆍ f ㆍ ㆍ f ㆍ a b g k d k m a b g h a) 삽입 a, g, f, b b) 삽입 k b) 삽입 d, h, m ㆍ f ㆍ j ㆍ ㆍ f ㆍ j ㆍ i r s d d e g h k m a b g h k m a b e) 삽입 j f) 삽입 e, s, I, r
2. B-Trees • Insertion in B-Tree • Order 5인 B-Tree의 생성과정 ㆍ f ㆍ j ㆍ r ㆍ i d e g h k m s x a b f) 삽입 x ㆍ c ㆍ f ㆍ j ㆍ r ㆍ i m n u x a b d e g h k l s t g) 삽입 c, l, m, t, u
2. B-Trees • Insertion in B-Tree • Order 5인 B-Tree의 생성과정 • 삽입 Algorithm • 적당한 하위 노드를 Search 가장 하위 노드에서 삽입 • 빈 공간이 있는 경우 : 단순 삽입 • Overflow • 일단논리적으로 삽입한 뒤 Split • 기존 Key값들과 새로운 Key값중 Median값([m/2]번째값) 을 Parent node로 올려줌 • 나머지 Key 값들은 절반씩 두 node로 분리함 ㆍ j ㆍ ㆍ c ㆍ f ㆍ ㆍ m ㆍ r ㆍ i k l n p u x a b d e g h s t h) 삽입 p Promote Middle
2. B-Trees • Insertion in B-Tree • Order 5인 B-Tree에서 다음 키값들을 삽입하는 과정 C N G AH E K Q M F W L T Z D P R X Y S C N G A H E K Q M F W L T Z D P R X Y S
2. B-Trees • Insertion in B-Tree • Order 5인 B-Tree에서 다음 키값들을 삽입하는 과정 C N G A H E K Q M F W L T Z D P R X Y S C N G A H E K Q M F W L T Z D P R X Y S
2. B-Trees • Insertion in B-Tree • Order 5인 B-Tree에서 다음 키값들을 삽입하는 과정 C N G A H E K Q M F W L T Z D P R X Y S C N G A H E K Q MF W L T Z D P R X Y S
2. B-Trees • Insertion in B-Tree • Order 5인 B-Tree에서 다음 키값들을 삽입하는 과정 C N G A H E K Q M F W L TZ DP R X Y S
2. B-Trees • Insertion in B-Tree • Order 5인 B-Tree에서 다음 키값들을 삽입하는 과정 C N G A H E K Q M F W L T Z D P R X Y S
2. B-Trees • Deletion in B-Tree • H 삭제 1) 차수가 5인 B-Tree의 Leaf노드는최소 2개의 Key를 지녀야 함. 그러므로, 단순하게 H 삭제
2. B-Trees • Deletion in B-Tree • T 삭제 1) 차수가 5인 B-Tree의 Leaf노드는최소 2개의 Key를 지녀야 함 그러므로, T를 삭제하면자식 노드들 중 하나의 Key 값을 가져와야 함 2) 부모 노드로 올라갈 수 있는 후보는 S와 W임. 그러나 S를 지우면 Leaf 노드의 Key가 1개가 됨
2. B-Trees • Deletion in B-Tree • R 삭제 3) 자매 노드로 부터 빌려와 채우기를 할 때 반드시 부모를 거쳐서 빌려온다. 즉, 자매노드 값은 부모로 가고부모노드의 값이 내려온다. 1) 차수가 5인 B-Tree의 Leaf노드는최소 2개의 Key를 지녀야 함 그러므로, R를 삭제하면 Leaf노드가 1개의 Key만 가지게 됨 2) 자매 노드들 중 3개 이상의 Key를 가지고있는 노드에서 하나의 Key값을 빌려 옴
2. B-Trees • Deletion in B-Tree • E 삭제 3) 자매 노드들 끼리 결합 필요이 때에도 반드시 부모노드에서하나의 Key를 가지고 와서 결합 4) 아래 두 자매 노드가 결합된 Tree 모습이 차수가 5인 B-Tree의올바른 모습인가? 1) 차수가 5인 B-Tree의 Leaf노드는최소 2개의 Key를 지녀야 함 그러므로, E를 삭제하면 Leaf노드가 1개의 Key만 가지게 됨 2) 자매 노드들 중 3개 이상의 Key를 가지고있는 노드가없음
2. B-Trees • Deletion in B-Tree • E 삭제 (계속) 7) 결합시에는 반드시 부모노드에서 하나의 Key를 가지고 와서 결합 5) G를 Key로 가진 노드는 차수가5인 B-Tree에 적합하지 않음 6) 자매 노드들끼리 결합 필요
2. B-Trees • Deletion in B-Tree (One More Example – 차수 5) • C 삭제 3) A,B,D,E를 하나의 노드로 결합 필요일단은 D를 가지고 올라옴 1) 차수가 5인 B-Tree의 Leaf노드는최소 2개의 Key를 지녀야 함 그러므로, C를 삭제하면자식 노드들 중 하나의 Key 값을 가져와야 함 2) 부모 노드로 올라갈 수 있는 후보는 B와 D임. 그러나 B나 D를부모로 가져오면 자식노드들도 Key 개수가 부족
2. B-Trees • Deletion in B-Tree (One More Example – 차수 5) • C 삭제 (계속) 4) 자매 노드들 끼리 결합.이 때에도 반드시 부모노드에서하나의 Key를 가지고 와서 결합
2. B-Trees • Deletion in B-Tree (One More Example – 차수 5) • C 삭제 (계속) 7) 결합시에는 반드시 부모노드에서 하나의 Key를 가지고 와서 결합. 자매노드 값은 부모로 가고부모노드의 값이 내려온다. 5) F를 지닌 노드는 Key값이 부족.Key개수가 3이상인 자매노드에서하나의 Key값을 빌려옴
2. B-Trees 교재 435 • Insertion and Deletion Example (차수 5)
2. B-Trees 교재 435 • Insertion and Deletion Example (차수 5)
2. B-Trees 교재 446 • Insertion and Deletion Example (차수 5)
2. B-Trees 교재 446 • Insertion and Deletion Example (차수 5)
3. Simplified B-Trees • 2-3 Tree • B-tree of order 3 • 2-3 Tree의 노드 • 2-node: 자식 노드가 2개이고 키가 1개인 노드 • 3-node: 자식 노드가 3개이고 키가 2개인 노드 • 왼쪽 자식(Left Child), 중간 자식(Middle Child), 오른쪽 자식(Right Child) • 키 크기는 12 < 50 < 65 < 90 <100 Data Structure
3. Simplified B-Trees • 2-3 Tree의예 Data Structure
3. Simplified B-Trees • 2-3 트리에서의 삽입 항상 Leaf Node로 삽입된다. 가능한 한 2-node를 3-node로 만든다. 부모가 2-node 이므로 중간 값에 해당하는 39를 promote 하면서 부모 노드를 3-node로 변경한다.(Promote Middle) Promote Middle이 발생하면그 중간 값이 있던 원 노드가 분리된다. 항상 Leaf Node로 삽입된다. 가능한 한 2-node를 3-node로 만든다. Data Structure
3. Simplified B-Trees • 2-3 트리에서의 삽입 (Cont.) Promote Middle Promote Middle Data Structure
3. Simplified B-Trees • 2-3 트리에서의 삽입(Cont.) Promote Middle Promote Middle Promote Middle Data Structure
3. Simplified B-Trees • 2-3 트리에서 삽입에 의한 높이 증가 • 반복된 삽입에도 2-3 트리의 높이는 좀처럼 증가하지 않음. • 3-노드를 사용해서 최대한 레코드를 수용. • BST vs. 2-3 트리 • 이진 탐색트리의 높이는 삽입할 때마다 리프 노드 아래로 1만큼 자람. • 2-3 트리의 높이는 삽입노드로부터 루트노드까지 경로가 3-노드로 꽉 찬 경우에 한해서 루트 위쪽으로 1만큼 자람. Data Structure
3. Simplified B-Trees 삭제 후 자신의 노드가 비면 반드시 자매노드 중 3-node가 있는 지 확인하여 빌려와 채운다 • 2-3 트리에서의 삭제 자매 노드로 부터 빌려와 채우기를 할 때 반드시 부모를 거쳐서 빌려온다. 즉, 자매노드 값은 부모로 가고부모노드의 값이 내려온다. 삭제 후 자신의 노드도 비워지고더 이상 빌려올 3-node인 자매노드가 없다며 부모노드는 2-node가 되어야 한다. 즉, 자식 노드쪽으로 1개의 key 값을 내려준다. 삭제 후 자신의 노드가 비면 반드시 자매노드 중 3-node가 있는 지 확인하여 빌려와 채운다 Data Structure
3. Simplified B-Trees 자매 노드로 부터 빌려와 채울 수가 없음 • 2-3 트리에서의 삭제 더 이상 2-node로 유지할 수 없음, 자식 노드와 합침 자매 노드로 부터 빌려와 채울 수가 없음 더 이상 2-node로 유지할 수 없음, 자식 노드와 합침 2-node로서 올바르게 유지하기 위하여 다른 자식 노드를 가지고 온다. Data Structure
3. Simplified B-Trees • 2-3 트리의 구현시 고려점 • 일반적으로 이진 트리는 부모노드로부터 자식노드로 가는 포인터만 유지 • 삽입, 삭제를 위해서는 어떤 노드의 부모노드를 접근해야 함. • 삽입 시에 중간 키를 올리기 위해서, 또 삭제 시에 부모 노드의 키를 아래로 내리기 위해서 부모 노드로 접근하는 포인터가 필요 • 루트로부터 내려가면서 만나는 모든 노드를 가리키는 포인터 값을 계속적으로 스택에 푸쉬 해 놓으면 팝에 의해 직전의 부모노드를 접근할 수 있음. Data Structure
3. Simplified B-Trees • 2-3 트리의 탐색효율 • 모든 노드가 3-node일 때 가장 높이가 낮음. • 레벨 h까지의 전체 레코드(Key) 수 • 레벨 0의 루트 노드가 3-node라면 그 내부에는 2개의 레코드가 들어감. • 레벨 1에 3개의 3-node가 있다면 그 내부에는 각각 2개의 레코드가 들어감. • 즉, N = 2(1 + 3 + 32 + ... + 3h) • 2-3 트리는 항상 완전 균형트리를 유지하므로 최악의 경우에도 탐색 효율을 보장 • 2-3 트리에는 2-ndoe와 3-node가 섞여 있으므로 효율은 O(log2N)과 O(log3N) 사이에 존재. • 이진 탐색트리는 최악의 경우 O(N)으로 전락 Data Structure
3. Simplified B-Trees • 2-3 트리의 단점 • 3-node는 비교해야 할 키가 2 개이므로 비교의 횟수가 증가 • 3-ndoe는 자식을 가리키는 포인터가 3개 이므로 자식 노드가 없다면 2-node 에 비해 널 포인터가 차지하는 공간적 부담 • 널 포인터는 리프 노드에 다수가 분포 • Faster searching? • Actually, no. 2-3 tree is about as fast as an “equally balanced” binary tree, because you sometimes have to make 2 comparisons for a 3-node • Easier to keep balanced? • Yes, definitely. • Insertion can split 3-nodes into 2-nodes, or promote 2-nodes to 3-nodes to keep tree approximately balanced! Data Structure
3. Simplified B-Trees • 2-3-4 Tree • B-tree of order 4 • 2-3-4 Tree의 노드 • 2-node • 3-node • 4-node: 자식 노드가 4개이고 키가 3개인 노드 • 왼쪽 자식(Left Child) • 오른쪽 자식(Right Child) • 왼쪽 중간자식(Left Middle Child) • 오른쪽 중간자식(Right Middle Child) Data Structure
4. B-Tree Variations • B-Tree의 단점 • 실제 시스템에서는 Order 가 5 이상인 B-Tree가 사용 • 각 노드의 키값은 4개 자식 서브트리 포인터는 5개씩 할당 • 실제 구현을 하여 운영하면 전체 노드 내에서 비어있는 키값 및 포인터가 50% 차지 메모리의 낭비가 심함. • B* Tree • It requires nonroot nodes to be at least 2/3 full instead of 1/2. • When a node overflows, try to redistribute data to siblings • Split occurs only when all of the siblings are full Data Structure
4. B-Tree Variations • 데이터 접근 방법의 두 가지 • Randomly (Select-Search) • Sequenctially • B-Tree로만 위 두 가지 접근방법을 모두 지원할 때의 단점 • Sequential 접근 방법을 위해서는 B-Tree에 대한 In-oder Traversal 필요 • Tree의 구조 내부에서 오르락 내리락 하는 과정이 복잡 • Solution: B+ Tree Data Structure
4. B-Tree Variations • B+ Tree • An internal node has only key without associating data. • Internal nodes are used only for searching • Each data entry must be represented at the leaf level • There may be internal nodes with the same keys as leaf nodes • Each leaf node has an additional pointer to the next leaf node. Data Structure
4. B-Tree Variations • B+ Tree Example - Oracle을 포함한 대부분의 DB는 B+Tree 사용 - NTFS use B+Tree Data Structure
4. B-Tree Variations • 고정된 M을 사용 • M-way Tree • 모든 M 값을 크게 할 경우 필요한 페이지 수가 급증 • 1, M, M2, M3...으로 기하급수적으로 늘어남. • 레코드가 몇 개 없는 페이지, 사용되지 않는 페이지로 인한 공간낭비 • 레벨별 M 값의 변화 B+Tree • 루트에 M을 작게 잡고 리프 근처에 M만 크게 잡을 경우 • 트리를 다 내려온 다음에 리프 근처에서 노드 하나에 존재하는 수많은 키에 대해서 일일이 순차적인 탐색 • 트리의 위에서 아래로 내려오면서 검색범위를 적절히 축소. • 루트 근처의 M 값을 2048, 리프 근처의 M 값은 1024로 했을 때, 10억 개의 레코드에 대해서 3번 정도의 Index File 접근으로 정확한 검색을 끝낼 수 있음. • 211 210 210 = 231 = 2,147,483,648 (약 20억) Data Structure
4. B-Tree Variations • Consider the key to be a sequence of characters • Word, nonnumeric identifier (telephone number) • Lexical Search Tree • Each node of a 26-ary tree contains 26 pointers • Each pointer storage represents “Alphabet” • If a key has letters of length “n”, there are “n” levels in the tree Data Structure
4. B-Tree Variations • Lexical Search Tree • First level (level=0) has 26 entries • Second level (level=1) has 26*26 entries • Third level (level=2) has 26*26*26 entries • … • lexical search tree may contains so many different entries Data Structure
4. B-Tree Variations • Trie • It is short for reTRIEval • Cut all of branches that are not needed in the lexical search tree • It is used for a spell checker (not a dictionary) • It contains only words and not their definitions Data Structure