Download presentation
Presentation is loading. Please wait.
Published byElla Poppy Cox Modified over 9 years ago
1
Dictionaries CS 105
2
10/02/05 L7: Dictionaries Slide 2 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Definition The Dictionary Data Structure structure that facilitates searching objects are stored with search keys; insertion of an object must include a key searching requires a key and returns the key-object pair removal also requires a key Need an Entry interface/class Entry encapsulates the key-object pair (just like with priority queues)
3
10/02/05 L7: Dictionaries Slide 3 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Sample Applications An actual dictionary key: word object: word record (definition, pronunciation, etc.) Record keeping applications Bank account records (key: account number, object: holder and bank account info) Student records (key: id number, object: student info)
4
10/02/05 L7: Dictionaries Slide 4 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Dictionary Interface public interface Dictionary { public int size(); public boolean isEmpty(); public Entry insert( int key, Object value ) throws DuplicateKeyException; public Entry find( int key ); // return null if not found public Entry remove( int key ) // return null if not found; }
5
10/02/05 L7: Dictionaries Slide 5 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Dictionary details/variations Key types For simplicity, we assume that the keys are ints But the keys can be any kind of object as long as they can be ordered (e.g., string and alphabetical ordering) Duplicate entries (entries with the same key) may be allowed Our textbook calls the data structure that does not allows duplicates a Map, while a Dictionary allows duplicates For purposes of this discussion, we assume that dictionaries do not allow duplicates
6
10/02/05 L7: Dictionaries Slide 6 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Dictionary Implementations Unordered list (section 8.3.1) Ordered table (section 8.3.3) Binary search tree (section 9.1)
7
10/02/05 L7: Dictionaries Slide 7 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Unordered list Strategy: store the entries in the order that they arrive O( 1 ) insert operation Can use an array, ArrayList, or linked list Find operation requires scanning the list until a matching key value is found Scanning implies an O( n ) operation Remove operation similar to find operation Entries need to be adjusted if using array/ArrayList O( n ) operation
8
10/02/05 L7: Dictionaries Slide 8 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Ordered table Idea: if the list was ordered by key, searching is simpler/easier Just like for priority queues, insertion is slightly more complex Need to search for proper position of element -> O( n ) Find: don’t do a linear scan; instead, do a binary search Note: use array/ArrayList; not a linked list
9
10/02/05 L7: Dictionaries Slide 9 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Binary search Take advantage of the fact that the elements are ordered Compare the target key with middle element to reduce the search space in half Repeat the process until the element is found or search space reduces to 1 Arithmetic on array indexes facilitate easy computation of middle position Middle of S[low] and S[high] is S[(low+high)/2] Not possible with linked lists
10
10/02/05 L7: Dictionaries Slide 10 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Binary Search Algorithm Algorithm BinarySearch( S, k, low, high ) if low > high then return null; // not found else mid (low+high)/2 e S[mid]; if k = e.getKey() then return e; else if k < e.getKey() then return BinarySearch( S, k, low, mid-1 ) else return BinarySearch( S, k, mid+1, high ) array of Entriestarget key BinarySearch( S, someKey, 0, size-1 );
11
10/02/05 L7: Dictionaries Slide 11 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Binary Search Algorithm 42578912141719222527283337 lowmidhigh find(22) mid = (low+high)/2
12
10/02/05 L7: Dictionaries Slide 12 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Binary Search Algorithm 42578912141719222527283337 highlowmid find(22) mid = (low+high)/2
13
10/02/05 L7: Dictionaries Slide 13 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved low Binary Search Algorithm 42578912141719222527283337 midhigh find(22) mid = (low+high)/2
14
10/02/05 L7: Dictionaries Slide 14 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved low=mid=high Binary Search Algorithm 42578912141719222527283337 find(22) mid = (low+high)/2
15
10/02/05 L7: Dictionaries Slide 15 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Time complexity of binary search Search space reduces by half until it becomes 1 n -> n/2 -> n/4 -> … -> 1 log n steps Find operation using binary search is O( log n )
16
10/02/05 L7: Dictionaries Slide 16 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Time complexity Operationinsert()find()remove() Unsorted ListO( 1 )O( n ) Ordered TableO( n )O( log n )O(n )
17
10/02/05 L7: Dictionaries Slide 17 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Binary Search Tree (BST) Strategy: store entries as nodes in a tree such that an inorder traversal of the entries would list them in increasing order Search, remove, and insert are all O( log n ) operations All operations require a search that mimics binary search: go to left or right subtree depending on target key value
18
10/02/05 L7: Dictionaries Slide 18 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Traversing a BST Insert, remove, and find operations all require a key First step involves checking for a matching key in the tree Start with the root, go to left or right child depending on key value Repeat the process until key is found or a null child is encountered (not found) For insert operation, duplicate key error occurs if key already exists Operation is proportional to height of tree ( usually O(log n ) )
19
10/02/05 L7: Dictionaries Slide 19 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Insertion in BST (insert 78) 44 17 88 32 28 6597 82 54 76 29 80 44 88 65 82 76 80
20
10/02/05 L7: Dictionaries Slide 20 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved 78 Insertion in BST 44 17 88 32 28 6597 82 54 76 29 80 44 88 65 82 76 80
21
10/02/05 L7: Dictionaries Slide 21 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved 78 Removal from BST (Ex. 1) 44 17 88 32 28 6597 82 54 76 29 80 w z Remove 32
22
10/02/05 L7: Dictionaries Slide 22 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved 78 Removal from BST (Ex. 1) 44 17 88 32 28 6597 82 54 76 29 80 44 17 32 w z
23
10/02/05 L7: Dictionaries Slide 23 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved 28 29 78 Removal from BST (Ex. 1) 44 17 88 6597 82 54 76 80 44 17
24
10/02/05 L7: Dictionaries Slide 24 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved 78 Removal from BST (Ex. 2) 44 17 88 32 28 6597 82 54 76 29 80 w Remove 65
25
10/02/05 L7: Dictionaries Slide 25 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved 78 Removal from BST (Ex. 2) 44 17 88 32 28 6597 82 54 76 29 80 44 88 65 82 76 80 w y x 54
26
10/02/05 L7: Dictionaries Slide 26 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Removal from BST (Ex. 2) 44 17 88 32 28 6597 82 54 29 44 88 65 82 w 54 78 80 76
27
10/02/05 L7: Dictionaries Slide 27 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Time complexity for BSTs O( log n ) operations not guaranteed since resulting tree is not necessarily “balanced” If tree is excessively skewed, operations would be O( n ) since the structure degenerates to a list Tree could be periodically reordered to prevent skewedness
28
10/02/05 L7: Dictionaries Slide 28 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Time complexity (average case) Operationinsert()find()remove() Unsorted List O( 1 )O( n ) Ordered Table O( n )O( log n )O(n ) BSTO( log n )
29
10/02/05 L7: Dictionaries Slide 29 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved Time complexity (worst case) Operationinsert()find()remove() Unsorted List O( 1 )O( n ) Ordered Table O( n )O( log n )O(n ) BSTO( n )
30
10/02/05 L7: Dictionaries Slide 30 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved About BSTs AVL tree: BST that “self-balances” Ensures that after every operation, the difference between the left subtree height and the right subtree height is at most 1 O( log n ) operation is guaranteed Many efficient searching methods are variants of binary search trees Database indexes are B-trees (number of children > 2, but the same principles apply)
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.