Lecture 39: Greek Tragedy & Balanced Trees

# Lecture 39: Greek Tragedy & Balanced Trees

## Lecture 39: Greek Tragedy & Balanced Trees

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
##### Presentation Transcript

1. CSC 213 – Large Scale Programming Lecture 39: Greek Tragedy & Balanced Trees

2. Today’s Goals • Review a new search tree algorithm is needed • What real-world problems occur with old tree? • Why does garbage collection make problem worse? • What was ideal approach? How could we force this? • Consider how to create other search tree types • Not limit nodes to 1 element & what could happen? • How to perform insertions on multi-nodes? • What about withdrawal? How can we remove data? • Can this sound dirtier? And do I hear banjos playing?

3. Dictionary ADT • Dictionary and Mapmaps keys to values • O(1) time with hash, but only if hash is good • Can guarantee better -- O(logn) with balanced BST • Assumes data fits in memory since locality will suck • But, honestly, how big can a tree be?

4. Dictionary ADT • Dictionary and Mapmaps keys to values • O(1) time with hash, but only if hash is good • Can guarantee better -- O(logn) with balanced BST • Assumes data fits in memory since locality will suck • But, honestly, how big can a tree be? • Library of Congress – 20 TB in text database • Amazon.com – 42 TB of combined data • ChoicePoint – 250 TB of data on everyday Americans • World Data Center for Climate – 4 PB of climate data

5. Dictionary ADT • Dictionary and Mapmaps keys to values • O(1) time with hash, but only if hash is good • Can guarantee better -- O(logn) with balanced BST • Assumes data fits in memory since locality will suck • But, honestly, how big can a tree be? • Library of Congress – 20 TB in text database • Amazon.com – 42 TB of combined data • ChoicePoint – 250 TB of data on everyday Americans • World Data Center for Climate – 4 PB of climate data (Numbers gathered from Feb. 2007 article)

6. Optimal Tree Partition

7. Optimal Tree Partition But no GC algorithm produces this!

8. Real-World Big Search Trees • Excellent way to test roommatessystem

9. Real-World Big Search Trees • Excellent way to test roommatessystem

10. Real-World Big Search Trees • Excellent way to test roommatessystem

11. (a,b) Trees to the Rescue! • General 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

12. 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 • Will just describe most basic B-Tree during lecture

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

14. Multi-Way Search Tree • Nodes contain multiple elements • Tree grows up with leaves always at same level • Each internal node: • At least 2 children • 1fewer Entrys than children • Entrys sorted from smallest to largest 11 24 2 6 8 15 27 30

15. Multi-Way Search Tree • Children v1v2v3 … vd& keys k1k2 … kd-1 • Keys in subtreev1smaller than k1 • Keys in subtreevibetweenki-1andk2 • Keys in subtreevdgreater than kd-1 1124 2 6 8 15 27 30

16. Inorder Traversal • Visit each child, vi , before visiting Entryei • As with BST, visits keys in increasing order 11 24 6 4 2 6 8 15 27 30 8 1 2 3 5 7

17. Multi-Way Searching • Similar to BST treeSearch finding a key fori = 0tonumChildren – 1 doifk < e[i].getKey()thenreturn search(child[i])ifk == e[i].getKey()thenreturn e[i] endfor ifk > e[e.length-1].getKey()thenreturn search(child[child.length-1]) 11 24 2 6 8 15 27 30

18. Multi-Way Searching fori = 0tonumChildren – 1 doifk < e[i].getKey()thenreturn search(child[i])ifk == e[i].getKey()thenreturn e[i] endfor ifk > e[e.length-1].getKey()thenreturn search(child[child.length-1]) • Example: find(8) 11 24 2 6 8 15 27 30

19. Multi-Way Searching fori = 0tonumChildren – 1 doifk < e[i].getKey()thenreturn search(child[i])ifk == e[i].getKey()thenreturn e[i] endfor ifk > e[e.length-1].getKey()thenreturn search(child[child.length-1]) • Example: find(8) 11 24 2 6 8 15 27 30

20. Multi-Way Searching fori = 0tonumChildren – 1 doifk < e[i].getKey()thenreturn search(child[i])ifk == e[i].getKey()thenreturn e[i] endfor ifk > e[e.length-1].getKey()thenreturn search(child[child.length-1]) • Example: find(8) 11 24 2 6 8 15 27 30

21. Multi-Way Searching fori = 0tonumChildren – 1 doifk < e[i].getKey()thenreturn search(child[i])ifk == e[i].getKey()thenreturn e[i] endfor ifk > e[e.length-1].getKey()thenreturn search(child[child.length-1]) • Example: find(8) 11 24 2 6 8 15 27 30

22. Multi-Way Searching fori = 0tonumChildren – 1 doifk < e[i].getKey()thenreturn search(child[i])ifk == e[i].getKey()thenreturn e[i] endfor ifk > e[e.length-1].getKey()thenreturn search(child[child.length-1]) • Example: find(8) 11 24 2 6 8 15 27 30

23. Multi-Way Searching fori = 0tonumChildren – 1 doifk < e[i].getKey()thenreturn search(child[i])ifk == e[i].getKey()thenreturn e[i] endfor ifk > e[e.length-1].getKey()thenreturn search(child[child.length-1]) • Example: find(8) 11 24 2 6 8 15 27 30

24. Multi-Way Searching fori = 0tonumChildren – 1 doifk < e[i].getKey()thenreturn search(child[i])ifk == e[i].getKey()thenreturn e[i] endfor ifk > e[e.length-1].getKey()thenreturn search(child[child.length-1]) • Example: find(8) 11 24 268 15 27 30

25. Multi-Way Searching fori = 0tonumChildren – 1 doifk < e[i].getKey()thenreturn search(child[i])ifk == e[i].getKey()thenreturn e[i] endfor ifk > e[e.length-1].getKey()thenreturn search(child[child.length-1]) • Example: find(8) 11 24 268 15 27 30

26. Multi-Way Searching fori = 0tonumChildren – 1 doifk < e[i].getKey()thenreturn search(child[i])ifk == e[i].getKey()thenreturn e[i] endfor ifk > e[e.length-1].getKey()thenreturn search(child[child.length-1]) • Example: find(8) 11 24 268 15 27 30

27. (2,4) Trees • Multi-way search treewith 2 properties: • Node-Size Property Internal nodes have at most 4 children • Depth PropertyAll external nodes at same depth • Nodes are either 2-node, 3-node or 4-node • Node’s number of childrenused as basis for name 10 15 24 2 8 12 18 27 32

28. Insertion • Start by searchingfor key k • Entryadded to lastinternal node searched • Depth property preserved by enforcing this • Example: insert(30) 10 15 24 2 8 12 18 27 32

29. Insertion • Start by searchingfor key k • Entryadded to last internal node searched • Depth property preserved by enforcing this • Example: insert(30) 10 15 24 2 8 12 18 27 32

30. Insertion • Start by searchingfor key k • Entryadded to last internal node searched • Depth property preserved by enforcing this • Example: insert(30) 1015 24 2 8 12 18 27 32

31. Insertion • Start by searchingfor key k • Entryadded to last internal node searched • Depth property preserved by enforcing this • Example: insert(30) 101524 2 8 12 18 27 32

32. Insertion • Start by searchingfor key k • Entryadded to last internal node searched • Depth property preserved by enforcing this • Example: insert(30) 101524 2 8 12 18 27 32

33. Insertion • Start by searchingfor key k • Entryadded to last internal node searched • Depth property preserved by enforcing this • Example: insert(30) 101524 2 8 12 18 27 32

34. Insertion • Start by searchingfor key k • Entryadded to last internal node searched • Depth property preserved by enforcing this • Example: insert(30) 101524 2 8 12 18 27 32

35. Insertion • Start by searchingfor key k • Entryadded to last internal node searched • Depth property preserved by enforcing this • Example: insert(30) 101524 2 8 12 18 2732

36. Insertion • Start by searchingfor key k • Entryadded to last internal node searched • Depth property preserved by enforcing this • Example: insert(30) 101524 2 8 12 18 2732

37. Insertion • Start by searchingfor key k • Entryadded to last internal node searched • Depth property preserved by enforcing this • Example: insert(30) 101524 2 8 12 18 2732

38. Insertion • Start by searchingfor key k • Entryadded to last internal node searched • Depth property preserved by enforcing this • Example: insert(30) 101524 2 8 12 18 2732

39. Insertion • Start by searchingfor key k • Entryadded to last internal node searched • Depth property preserved by enforcing this • Example: insert(30) 101524 2 8 12 18 273032

40. Insertion • Insertion may cause overflow! • 5-node created by the insertion • This would make it violateNode-Size property 15 24 12 18 27 32 35

41. Insertion • Insertion may cause overflow! • 5-node created by the insertion • This would make it violateNode-Size property 15 24 12 18 27303235

42. In Case Of Overflow Split Node • Split 5-node into 2 new nodes • Entryse1e2& children v1v2v3 become a 3-node • 2-node created with Entry e4& children v4v5 15 24 12 18 27 30 32 35

43. In Case Of Overflow Split Node • Split 5-node into 2 new nodes • Entryse1e2& children v1v2v3 become a 3-node • 2-node created with Entry e4& children v4v5 • Promote e3to parent node • If overflow occurs in root node, create new root • Overflow can cascade when parent already was 4-node 15 24 32 15 24 12 18 27 30 3235 12 18 27 30 35

44. Parent Overflow • In case of cascade, repeat overflow process • Works identically to when children are external • Example: insert(29) 15 24 26 12 18 25 27 32 35

45. Parent Overflow • In case of cascade, repeat overflow process • Works identically to when children are external • Example: insert(29) 15 24 26 12 18 25 27 32 35

46. Parent Overflow • In case of cascade, repeat overflow process • Works identically to when children are external • Example: insert(29) 15 24 26 12 18 25 27 32 35

47. Parent Overflow • In case of cascade, repeat overflow process • Works identically to when children are external • Example: insert(29) 15 24 26 12 18 25 27 32 35

48. Parent Overflow • In case of cascade, repeat overflow process • Works identically to when children are external • Example: insert(29) 15 24 26 12 18 25 27 29 32 35

49. Parent Overflow • In case of cascade, repeat overflow process • Works identically to when children are external • Example: insert(29) 15 24 26 12 18 25 27 29 32 35

50. Parent Overflow • In case of cascade, repeat overflow process • Works identically to when children are external • Example: insert(29) 15 24 26 12 18 25 27 29 32 35