Presentation is loading. Please wait.

Presentation is loading. Please wait.

More about costs: cost of “ensureCapacity”, cost of ArraySet, Binary Search 2014-T2 Lecture 12 School of Engineering and Computer Science, Victoria University.

Similar presentations


Presentation on theme: "More about costs: cost of “ensureCapacity”, cost of ArraySet, Binary Search 2014-T2 Lecture 12 School of Engineering and Computer Science, Victoria University."— Presentation transcript:

1 More about costs: cost of “ensureCapacity”, cost of ArraySet, Binary Search 2014-T2 Lecture 12 School of Engineering and Computer Science, Victoria University of Wellington COMP 103 Marcus Frean

2 RECAP  Analysing Algorithm Costs – “Big O” notation TODAY  ArrayList Costs:  add at end (ensure capacity) - a bit tricky: as it find the “amortised” cost  summary  ArraySet Costs:  get, set, contains  Binary search: “findIndex” method of ArraySet – logarithmic cost  summary Announcements:  Assignment#4 released, due next Monday 3pm 2 RECAP-TODAY

3 ArrayList: add at end  Cost of add(value):  what’s the key step?  worst case:  average case: public void add (E item){ ensureCapacity(); data[count++] = item; } private void ensureCapacity () { if (count < data.length) return; E [ ] newArray = (E[ ]) (new Object[data.length * 2]); for (int i = 0; i < count; i++) newArray[i] = data[i]; data = newArray; } n 3

4 ArrayList: amortised cost  “Amortised” cost: total cost of adding n items, divided by n: first 10: cost = 1 eachtotal = 10 11th:cost = 10+1total = 21 12-20:cost = 1 eachtotal = 30 21st:cost = 20+1total = 51 22-40:cost = 1 eachtotal = 70 41st:cost = 40+1total = 111 42-80:cost = 1 eachtotal = 150 : - n total =  Amortised cost ( ) = 4 per item

5 ArrayList costs: Summary  getO(1)  setO(1)  removeO(n)  add (at i)O(n)(worst and average)  add (at end)O(1)(average) O(n)(worst) O(1)(amortised average) To think about:  What would the amortised cost be if the array size is increased by a fixed amount (say 10) each time ? 5

6 What about ArraySet ?  Order is not significant ⇒ can add a new item anywhere. where? At end: O(1), but also searching for duplicates : O(n) ⇒ can reorder when removing an item. how? Replace by last element: O(1), but also searching in set: O(n)  Duplicates not allowed. ⇒ must check if item already present before adding 012345678929101112133014151617181920212223242526272831 6

7 ArraySet algorithms (pseudocode) Add(value) if not contains(value), place value at end, (doubling array if necessary) increment size Remove(value) search through array if value equals item replace item by item at end. decrement size return Contains(value) search through array, if value equals item return true return false Costs? 7

8 ArraySet costs Costs:  contains, add, remove:O(n)  All the cost is in the search!  How can we speed up the search? 8

9 Hand up if you find “Gnu” Dog Fish Cat Fox Eel Ant Bee Hen Gnu Doe Oryx Fox Fish Are there any duplications in that list? how many? 9 Ant Bee Cat Doe Dog Eel Fox Fox Fish Fish Gnu Hen Oryx Moral: lots of operations get easier if your array is sorted.

10 Hand up if you find “constructs” ‘ In most cases I don't believe that the disjunction between the preferred ideal way that intellectuals reflect and the modal operation of human cognition is much of an issue. Intellectuals, or those who fancy themselves as such, might struggle with issues of ontology. But I do not believe that this is particularly on the radar of the typical individual whose concerns are more prosaic, the basic material and emotional comforts and securities of life. Confusions only emerge when institutions and systems aim to span the full gamut of conventional cognition. For example, in politics or religion, where intellectuals build systems which are very relevant to the lives of most humans. Because of the general obscurity of intellectual constructs to the "average Joe" there is a large body of literature which exists to make abstruse concepts "relevant" in everyday terms to everyday folk. ’ 10

11 Hand up if you find “constructs” ['a', 'abstruse', 'aim', 'an', 'and', 'and', 'and', 'and', 'are', 'are', 'as', 'average', 'basic', 'Because', 'believe', 'believe', 'between', 'body', 'build', 'But', 'cases', 'cognition', 'cognition', 'comforts', 'concepts', 'concerns', 'Confusions', 'constructs', 'conventional', 'disjunction', 'do', 'dont', 'emerge', 'emotional', 'everyday', 'everyday', 'example', 'exists', 'fancy', 'folk', 'For', 'full', 'gamut', 'general', 'human', 'humans', 'I', 'I', 'ideal', 'In', 'in', 'in', 'individual', 'institutions', 'intellectual', 'intellectuals', 'Intellectuals', 'intellectuals', 'is', 'is', 'is', 'issue', 'issues', 'Joe', 'large', 'life', 'literature', 'lives', 'make', 'material', 'might', 'modal', 'more', 'most', 'most', 'much', 'not', 'obscurity', 'of', 'of', 'of', 'of', 'of', 'of', 'of', 'of', 'of', 'of', 'on', 'only', 'ontology', 'operation', 'or', 'or', 'particularly', 'politics', 'preferred', 'prosaic', 'radar', 'reflect', 'relevant', 'relevant', 'religion', 'securities', 'span', 'struggle', 'such', 'systems', 'systems', 'terms', 'that', 'that', 'that', 'the', 'the', 'the', 'the', 'the', 'the', 'the', 'the', 'the', 'the', 'themselves', 'there', 'this', 'those', 'to', 'to', 'to', 'to', 'to', 'typical', 'very', 'way', 'when', 'where', 'which', 'which', 'who', 'whose', 'with'] 11

12 Making ArraySet faster. All the cost is in the searching:  Searching for “Gnu”  but if sorted… 123456780 BeeDogAntFoxHenGnuEelCat 8 AntBeeCatDogEelFoxGnuHen 8 12

13 Making ArraySet faster.  Binary Search: Finding “Gnu”  If the items are sorted (“ordered”), then we can search fast Look in the middle: if item is middle item ⇒ return if item is before middle item ⇒ look in left half if item is after middle item ⇒ look in right half 012345678 AntBeeCatDogEelFoxGnuPig 8 13 low mid hi

14 Binary Search This code returns the index of where the item ought to be, whether or not it is present (given this index, “contains” is trivial) private int findIndex(Object item) { Comparable value = (Comparable ) item; int low = 0; // min possible index of item int high = count; // max possible index of item while (low 0) low = mid + 1; // item should be in [mid+1..high] else high = mid; // item should be in [low..mid] } return low; } 14 nb. this is just a “helper” method within ArraySet

15 Binary Search: Cost  What is the cost of searching if there are n items in set ?  key step = ?  Iteration Size of range 1n 2 k1 012345678929101112133014151617181920212223242526272831 15

16 Log 2 (n ) : The number of times you can divide a set of n things in half. log 2 (1000)  10, log 2 (1,000,000)  20, log 2 (1,000,000,000)  30 Every time you double n, you add one step to the cost!  Logarithms often arise in analysing algorithms, especially “Divide and Conquer” algorithms: Problem Solution Solve 16

17 Summary: ArraySet with Binary Search ArraySet: unordered  All cost in the searching: O(n)  contains:O(n ) //simple, linear search  add: O(n ) //cost of searching to see if there’s a duplicate  remove:O(n ) //cost of searching the item to remove SortedArraySet: with Binary Search  Binary Search is fast: O(log n )  contains:O(log n ) //uses binary search  add: O(n ) //cost of keeping it sorted  remove:O(n ) //cost of keeping it sorted  All the cost is in keeping it sorted!!!! 17

18 Making SortedArraySet fast  If you have to call add() and/or remove() many items, then SortedArraySet is no better than ArraySet  Both O(n )  Either we...pay to search Or we...pay to keep it in order  If you only have to construct the set once, and then many calls to contains(), then SortedArraySet is much better than ArraySet.  SortedArraySet contains() is O(log n )  to find1-in-a-billion, if sorted takes ~time that 1-in-30 would, unsorted  But, how do you construct the set fast ?  A separate constructor. 18

19 Alternative Constuctor  Sort the items all at once public SortedArraySet(Collection col){ // Make space count=col.size(); data = (E[]) new Object[count]; // Put items from collection into the data array. : // sort the data array. Arrays.sort(data); }  So… how do you sort? Next lecture we will investigate… 19

20 CRUCIAL NOTE!  Our assignments are “lagged” behind the lecture content.  This week’s lectures talk about SortedArraySet, and binary search, and sorting etc, BUT...  This week’s assignment is about (plain old) ArraySet in assignment, forget about these new-fangled and more efficient ideas: you’re to implement the “vanilla” version of ArraySet 20


Download ppt "More about costs: cost of “ensureCapacity”, cost of ArraySet, Binary Search 2014-T2 Lecture 12 School of Engineering and Computer Science, Victoria University."

Similar presentations


Ads by Google