1 / 51

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. Splay Tree. Heap. Multiway Trees. 1. M-way Search Trees.

vinny
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 Splay 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 (=order) 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-원 탐색트리 • Bayer와 Mc Creight에 의해 제안된 것 • 내부 노드의 자식 노드의 수를 미리 정해진 범위로 한정 • Every node (except root and leaves) has at least m⁄2 children. • 장점 • 삽입,삭제 후에도 균형 트리 유지 • 즉, 탐색시에 어느 정도의 시간이 보장된다.

  7. 2. B-Trees • B-Tree: m-way (search) tree with following additional properties • Root has 2…m subtrees ifit is not a leaf node • An internal (not root) node have the following number of subtrees • m/2 ≤number of subtrees ≤ m • An internal (not root) or leafnode has the following number of data (key) entries • m/2-1 ≤ number of data entries ≤ m-1 • All leaf nodes are at the same level • The tree is balanced

  8. 2. B-Trees • An example of B-Tree • Order of 5 or 6 (m=5 or 6) B-tree 의 정의상…

  9. 2. B-Trees • An example of B-Tree • Order of 4 or 5 (m=4 or 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 만큼의 서브트리로의 포인터 공간을 만든다. 즉, B-Tree의 order와 서브트리의 개수가 일치하도록 구성

  11. 2. B-Trees a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z • 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 a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z • 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 a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z • 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 a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z • 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 a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z • 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 a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z • 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 a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z • 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 a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z • 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 a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z • Deletion in B-Tree • H 삭제 1) 차수가 5인 B-Tree의 Leaf노드는최소 2개의 Key를 지녀야 함. 그러므로, 단순하게 H 삭제

  20. 2. B-Trees a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z • 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 a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z • 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 a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z • 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 a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z • Deletion in B-Tree • E 삭제 (계속) 7) 결합시에는 반드시 부모노드에서 하나의 Key를 가지고 와서 결합 5) G를 Key로 가진 노드는 차수가5인 B-Tree에 적합하지 않음 6) 자매 노드들끼리 결합 필요

  24. 2. B-Trees a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z • 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 a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z • Deletion in B-Tree (One More Example – 차수 5) • C 삭제 (계속) 4) 자매 노드들 끼리 결합.이 때에도 반드시 부모노드에서하나의 Key를 가지고 와서 결합

  26. 2. B-Trees a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z • 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

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

  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로 만든다.

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

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

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

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

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

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

  40. 3. Simplified B-Trees • 2-3 트리의 탐색효율 • 모든 노드가 3-node일 때 가장 높이가 낮음. • 높이가 h인 2-3트리의 최대 레코드(Key) 수 • 레벨 0의 루트 노드가 3-node라면 그 내부에는 2개의 레코드가 들어감. • 레벨 1에 3개의 3-node가 있다면 그 내부에는 각각 2개의 레코드가 들어감. • 즉, N = 2(1 + 3 + 32 + ... + 3h-1) • 2-3 트리는 항상 완전 균형트리를 유지하므로 최악의 경우에도 탐색 효율을 보장 • 2-3 트리에는 2-ndoe와 3-node가 섞여 있으므로 효율은 O(log2N)과 O(log3N) 사이에 존재. • 이진 탐색트리는 최악의 경우 O(N)으로 전락 가능

  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!

  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)

  43. 4. B-Tree Variations • B-Tree의 단점 • 실제 시스템에서는 Order 가 5 이상인 B-Tree가 사용 • 각 노드의 키값은 4개 자식 서브트리 포인터는 5개씩 할당 • 실제 구현을 하여 운영하면 전체 노드 내에서 비어있는 키값 및 포인터가 50% 차지 메모리의 낭비가 심함. • B* Tree • It requires non-root 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

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

  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 • Each leaf node has an additional pointer to the next leaf node.

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

  47. 4. B-Tree Variations • Lexical Search Tree (전자 영어사전과 관련) • Consider the key to be a sequence of characters • Word, nonnumeric identifier (telephone number) • 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

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

  49. 4. B-Tree Variations • Trie • It is short for reTRIEval • Cut all of branches that are not needed in the lexical search tree • It contains only words and not their definitions • It is used for a spell checker (not a dictionary)

  50. 4. B-Tree Variations • Trie • Ex] A trie for keys “pool", “prize", “preview", “prepare", “produce", and “progress".

More Related