320 likes | 444 Views
CSC 213 – Large Scale Programming. Lecture 39: ( a,b )- and B-Trees. Announcements. CSC213 final exam has been scheduled: Tuesday, May 10 from 10:15 – 12:15 in OM200 Lab mastery exam also on the schedule Thursday, May 12 from 2:45 – 3:45 in OM119. Problems with Search Trees.
E N D
CSC 213 – Large Scale Programming Lecture 39:(a,b)- and B-Trees
Announcements • CSC213 final exam has been scheduled:Tuesday, May 10 from 10:15 – 12:15 in OM200 • Lab mastery exam also on the scheduleThursday, May 12 from 2:45 – 3:45 in OM119
Problems with Search Trees • Great at organizing information for searching • Processing is maintained at consistent O(log n) time • But sucks at locality (both spatial and temporal) • Each node contains only 1 piece of data • Jumps to child after using that piece of data • All of these references means nodes spaced randomly
Big Search Trees • Excellent way to test roommatessystem
Big Search Trees • Excellent way to test roommatessystem
Big Search Trees • Excellent way to test roommatessystem
(a,b) Trees to the Rescue! • Real solution to frequent hikes to Germany • Linux & MacOS to track files & directories • MySQL & other databases use this to hold all the data • Found in many other places where paging occurs • Simple rules define working of any (a,b) tree • Grows upward so that all leaves found at same level • At leasta children for each internal node • Every internal node has at mostb children
What is “the BTree?” • Common multi-way tree implementation • Describe B-Tree using order (“BTree of order m”) • m/2 to m children per internal node • Root node can have m or fewer elements • Many variants existto improve some failing • Each variant is specialized for some niche use • Minor differences only between each variant • Describes the most basic B-Tree during lecture
BTree Order • Select order minimizing paging when created • Elements & references to kids in full node fills page • Nodes have at least m/2 elements, even at their smallest • In memory guarantees each page is at least 50% full • How many pages touched by each operation?
Removal from BTree • Swap element with successor in parent of a leaf • Process is similar to removal in (2,4) node • If under m/2 elementsin node after the removal • See if can move element from sibling to parent & steal element from parent • Else, merge with sibling & steal element from parent • But this might propagate underflow to parent node!
Removal from BTree • Swap element with successor in parent of a leaf • Process is similar to removal in (2,4) node • If under m/2 elementsin node after the removal • See if can move element from sibling to parent & steal element from parent • Else, merge with sibling & steal element from parent • But this might propagate underflow to parent node! • Remind anyone else of another structure?
(2,4) Tree Is An (a,b) Tree • Grows upward so all leaves found at same level • At leastachildrenfor each internal node • Every internal node has at mostbchildren
Underflow and Fusion • Entrydeletion may cause underflow • Node less than ½ full after removing the Entry • Choice of solution depends on situation • Example: remove(15) 9 14 2 5 7 10 11 15
Underflow and Fusion • Entrydeletion may cause underflow • Node less than ½ full after removing the Entry • Choice of solution depends on situation • Example: remove(15) 9 14 2 5 7 10 11 15
Underflow and Fusion • Entrydeletion may cause underflow • Node less than ½ full after removing the Entry • Choice of solution depends on situation • Example: remove(15) 9 14 2 5 7 10 11 15
Underflow and Fusion • Entrydeletion may cause underflow • Node less than ½ full after removing the Entry • Choice of solution depends on situation • Example: remove(15) 9 14 2 5 7 10 11
Case 1: Transfer • Adjacent sibling Node has Entry to lend • Steal parent’s Entryclosest to underfilled node • Prevent loneliness & promote sibling’s Entry • No further processing needed in this case • Example: remove(15) 9 14 2 5 7 10 11
Case 1: Transfer • Adjacent sibling Node has Entry to lend • Steal parent’s Entryclosest to underfilled node • Prevent loneliness & promote sibling’s Entry • No further processing needed in this case • Example: remove(15) 9 2 5 7 10 11 14
Case 1: Transfer • Adjacent sibling Node has Entry to lend • Steal parent’s Entryclosest to underfilled node • Prevent loneliness & promote sibling’s Entry • No further processing needed in this case • Example: remove(15) 9 2 5 7 10 11 14
Case 1: Transfer • Adjacent sibling Node has Entry to lend • Steal parent’s Entryclosest to underfilled node • Prevent loneliness & promote sibling’s Entry • No further processing needed in this case • Example: remove(15) 9 11 2 5 7 10 14
Case 1: Transfer • Adjacent sibling Node has Entry to lend • Steal parent’s Entryclosest to underfilled node • Prevent loneliness & promote sibling’s Entry • No further processing needed in this case • Example: remove(15) 9 11 2 5 7 10 14
Mom Case 2: Fusion • Emptied node has only ½ filled siblings • Merge node & sibling into single nearly filled node • Look to parent & steal Entrybetween siblings • May propagate underflow to parent! • Example: remove(14) 9 11 2 5 7 10 14
Mom Case 2: Fusion • Emptied node has only ½ filled siblings • Merge node & sibling into single nearly filled node • Look to parent & steal Entrybetween siblings • May propagate underflow to parent! • Example: remove(14) 9 11 2 5 7 10
Mom Case 2: Fusion • Emptied node has only ½ filled siblings • Merge node & sibling into single nearly filled node • Look to parent & steal Entry between siblings • May propagate underflow to parent! • Example: remove(14) 9 11 2 5 7 10
Mom Case 2: Fusion • Emptied node has only ½ filled siblings • Merge node & sibling into single nearly filled node • Look to parent & steal Entry between siblings • May propagate underflow to parent! • Example: remove(14) 9 2 5 7 10 11
Mom Case 2: Fusion • Emptied node has only ½ filled siblings • Merge node & sibling into single nearly filled node • Look to parent & steal Entry between siblings • May propagate underflow to parent! • Example: remove(14) 9 2 5 7 10 11
Mom Case 2: Fusion • Emptied node has only ½ filled siblings • Merge node & sibling into single nearly filled node • Look to parent & steal Entry between siblings • May propagate underflow to parent! • Example: remove(14) 9 2 5 7 10 11
In Case Of Overflow… • If addition overfills node, split into 2 new nodes • ½ of the Entrys (& children) for the new nodes • Splitting now makes sure nodes at least ½ full! 15 24 12 18 27 30 32 35
In Case Of Overflow… • If addition overfills node, split into 2 new nodes • ½ of the Entrys (& children) for the new nodes • Splitting now makes sure nodes at least ½ full! 15 24 12 18 27 30 32 35 12 18 27 30 35
In Case Of Overflow… • If addition overfills node, split into 2 new nodes • ½ of the Entrys (& children) for the new nodes • Splitting now makes sure nodes at least ½ full! 15 24 32 15 24 12 18 27 30 32 35 12 18 27 30 35
In Case Of Overflow… • If addition overfills node, split into 2 new nodes • ½ of the Entrys (& children) for the new nodes • Splitting now makes sure nodes at least ½ full! • Check parent for overflow, since added 1 Entry 15 24 32 15 24 12 18 27 30 32 35 12 18 27 30 35
For Next Lecture • Remember, must submit program #3 on Friday • Should start today and work through the week • 2nd best debugging technique? Taking a (short) break! • Weekly activity due tomorrow • Come and ask me any questions you may have! • Final problem day in class on Wednesday • At end of lab time Friday, lab phase #4 due