1 / 52

Chapter 10. Multiway Trees

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.

feivel
Download Presentation

Chapter 10. Multiway Trees

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 10. Multiway Trees Internet Computing Laboratory @ KUT Youn-Hee Han

  2. Where We Are? Tree Binary Tree AVL Search Tree Binary Search Tree Heap Multiway Trees

  3. 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 ≤ ≤ ≥

  4. 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 ≤ ≤ ≥

  5. 1. M-way Search Trees • Data Representation m=4 ≤ ≤ ≥

  6. 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

  7. 2. B-Trees • B-Tree • Bayer와 Mc Creight에 의해 제안된 것 • 내부 노드의 자식 노드의 수가 미리 정해진 범위 내에서 변경 • 인덱스를 조직하는 방법으로 가장 많이 사용되는 것으로서 균형된 m-원 탐색트리 이다 • 장점 • 1) 삽입,삭제 후에도 균형 트리 유지 • 2) 저장 장치의 효율성을 높일 수 있다.

  8. 2. B-Trees • An example of B-Tree • Order of 5 (m=5)

  9. 2. B-Trees • An example of B-Tree • Order of 4 (m=4) B-Tree 의 정의상 위 Tree는 Order가5 인 B-Tree도 될 수 있음

  10. 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 만큼의 서브트리로의 포인터 공간을 만든다.

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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

  16. 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

  17. 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

  18. 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

  19. 2. B-Trees • Deletion in B-Tree • H 삭제 1) 차수가 5인 B-Tree의 Leaf노드는최소 2개의 Key를 지녀야 함. 그러므로, 단순하게 H 삭제

  20. 2. B-Trees • Deletion in B-Tree • T 삭제 1) 차수가 5인 B-Tree의 Leaf노드는최소 2개의 Key를 지녀야 함 그러므로, T를 삭제하면자식 노드들 중 하나의 Key 값을 가져와야 함 2) 부모 노드로 올라갈 수 있는 후보는 S와 W임. 그러나 S를 지우면 Leaf 노드의 Key가 1개가 됨

  21. 2. B-Trees • Deletion in B-Tree • R 삭제 3) 자매 노드로 부터 빌려와 채우기를 할 때 반드시 부모를 거쳐서 빌려온다. 즉, 자매노드 값은 부모로 가고부모노드의 값이 내려온다. 1) 차수가 5인 B-Tree의 Leaf노드는최소 2개의 Key를 지녀야 함 그러므로, R를 삭제하면 Leaf노드가 1개의 Key만 가지게 됨 2) 자매 노드들 중 3개 이상의 Key를 가지고있는 노드에서 하나의 Key값을 빌려 옴

  22. 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를 가지고있는 노드가없음

  23. 2. B-Trees • Deletion in B-Tree • E 삭제 (계속) 7) 결합시에는 반드시 부모노드에서 하나의 Key를 가지고 와서 결합 5) G를 Key로 가진 노드는 차수가5인 B-Tree에 적합하지 않음 6) 자매 노드들끼리 결합 필요

  24. 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 개수가 부족

  25. 2. B-Trees • Deletion in B-Tree (One More Example – 차수 5) • C 삭제 (계속) 4) 자매 노드들 끼리 결합.이 때에도 반드시 부모노드에서하나의 Key를 가지고 와서 결합

  26. 2. B-Trees • Deletion in B-Tree (One More Example – 차수 5) • C 삭제 (계속) 7) 결합시에는 반드시 부모노드에서 하나의 Key를 가지고 와서 결합. 자매노드 값은 부모로 가고부모노드의 값이 내려온다. 5) F를 지닌 노드는 Key값이 부족.Key개수가 3이상인 자매노드에서하나의 Key값을 빌려옴

  27. 2. B-Trees 교재 435 • Insertion and Deletion Example (차수 5)

  28. 2. B-Trees 교재 435 • Insertion and Deletion Example (차수 5)

  29. 2. B-Trees 교재 446 • Insertion and Deletion Example (차수 5)

  30. 2. B-Trees 교재 446 • Insertion and Deletion Example (차수 5)

  31. 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

  32. 3. Simplified B-Trees • 2-3 Tree의예 Data Structure

  33. 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

  34. 3. Simplified B-Trees • 2-3 트리에서의 삽입 (Cont.) Promote Middle Promote Middle Data Structure

  35. 3. Simplified B-Trees • 2-3 트리에서의 삽입(Cont.) Promote Middle Promote Middle Promote Middle Data Structure

  36. 3. Simplified B-Trees • 2-3 트리에서 삽입에 의한 높이 증가 • 반복된 삽입에도 2-3 트리의 높이는 좀처럼 증가하지 않음. • 3-노드를 사용해서 최대한 레코드를 수용. • BST vs. 2-3 트리 • 이진 탐색트리의 높이는 삽입할 때마다 리프 노드 아래로 1만큼 자람. • 2-3 트리의 높이는 삽입노드로부터 루트노드까지 경로가 3-노드로 꽉 찬 경우에 한해서 루트 위쪽으로 1만큼 자람. Data Structure

  37. 3. Simplified B-Trees 삭제 후 자신의 노드가 비면 반드시 자매노드 중 3-node가 있는 지 확인하여 빌려와 채운다 • 2-3 트리에서의 삭제 자매 노드로 부터 빌려와 채우기를 할 때 반드시 부모를 거쳐서 빌려온다. 즉, 자매노드 값은 부모로 가고부모노드의 값이 내려온다. 삭제 후 자신의 노드도 비워지고더 이상 빌려올 3-node인 자매노드가 없다며 부모노드는 2-node가 되어야 한다. 즉, 자식 노드쪽으로 1개의 key 값을 내려준다. 삭제 후 자신의 노드가 비면 반드시 자매노드 중 3-node가 있는 지 확인하여 빌려와 채운다 Data Structure

  38. 3. Simplified B-Trees 자매 노드로 부터 빌려와 채울 수가 없음 • 2-3 트리에서의 삭제 더 이상 2-node로 유지할 수 없음, 자식 노드와 합침 자매 노드로 부터 빌려와 채울 수가 없음 더 이상 2-node로 유지할 수 없음, 자식 노드와 합침 2-node로서 올바르게 유지하기 위하여 다른 자식 노드를 가지고 온다. Data Structure

  39. 3. Simplified B-Trees • 2-3 트리의 구현시 고려점 • 일반적으로 이진 트리는 부모노드로부터 자식노드로 가는 포인터만 유지 • 삽입, 삭제를 위해서는 어떤 노드의 부모노드를 접근해야 함. • 삽입 시에 중간 키를 올리기 위해서, 또 삭제 시에 부모 노드의 키를 아래로 내리기 위해서 부모 노드로 접근하는 포인터가 필요 • 루트로부터 내려가면서 만나는 모든 노드를 가리키는 포인터 값을 계속적으로 스택에 푸쉬 해 놓으면 팝에 의해 직전의 부모노드를 접근할 수 있음. Data Structure

  40. 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

  41. 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

  42. 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

  43. 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

  44. 4. B-Tree Variations • 데이터 접근 방법의 두 가지 • Randomly (Select-Search) • Sequenctially • B-Tree로만 위 두 가지 접근방법을 모두 지원할 때의 단점 • Sequential 접근 방법을 위해서는 B-Tree에 대한 In-oder Traversal 필요 • Tree의 구조 내부에서 오르락 내리락 하는 과정이 복잡 • Solution: B+ Tree Data Structure

  45. 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

  46. 4. B-Tree Variations • B+ Tree Example - Oracle을 포함한 대부분의 DB는 B+Tree 사용 - NTFS use B+Tree Data Structure

  47. 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

  48. 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

  49. 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

  50. 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

More Related