visualizing data structuresnew.math.uiuc.edu/math198/ma198-2013/petrisk2/presentation.pdf · dan...
TRANSCRIPT
![Page 1: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/1.jpg)
Visualizing Data StructuresDan Petrisko
![Page 2: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/2.jpg)
What is an Algorithm?● A method of completing a function by proceeding from some
initial state and input, proceeding through a finite number of well defined steps, and terminating at a final ending state
● Notable examples:○ Solving a rubix cube○ Finding the GCD of two numbers (Euclid’s Algorithm) ○ Finding the shortest path between graph vertices○ Various Searching and Sorting Algorithms
![Page 3: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/3.jpg)
Algorithmic Analysis● Big-O Notation describes the limiting
behavior of an algorithm
● f(x) = O(g(x)) iff f(x) < cg(x) for all x > k
where c and k are some positive values
● n is O(n2), n2 is O(n3) , log(n) is O(n)
![Page 4: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/4.jpg)
Recurrence Relations● T(n) is a function that takes the
size of the data and returns the running time (in arbitrary computational units).
● Generally T(n) is given in two parts: the recursive definition and the base case
● We can unroll the recursive definition until we reach the base case to get the closed form
![Page 5: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/5.jpg)
Sample Analysis - Bubble SortBubble Sort works by iterating through the data set, comparing each element with the element adjacent to it
Recurrence: T(n) = T(n-1) + nBase Case: T(0) = 1
T(n) = T(n-1) + n = T(n-2) + n + n = T(n-3) + 3nT(n) = T(0) + n*n = 1 + n2
We say that bubble sort is O(n2)
2 4 1 3
2 1 4 3
2 1 3 4
1 2 3 4
![Page 6: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/6.jpg)
Iterative Sorting Algorithms● Process the set one step at a time, either:
○ Fully determining an element’s position
○ Moving closer to a fully sorted set
● Generally O(n2) performance
● Simple to program, very little memory usage
● Selection Sort
● Bubble Sort
● Insertion Sort
● Cocktail Sort
![Page 7: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/7.jpg)
Linear Search1. Go to each element2. Check if the key matches the search key3. If the end of list is reached, the list does not contain the search key
1 2 3 4 5 6 7 8 9 10
3 4 7 2 1 10 9 8 7 6
![Page 8: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/8.jpg)
Linear Search1. Go to each element2. Check if the key matches the search key3. If the end of list is reached, the list does not contain the search key
1 2 3 4 5 6 7 8 9 10
3 4 7 2 1 10 9 8 7 6
O(n)
![Page 9: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/9.jpg)
Divide and Conquer Approach● Attack the problem by dividing it into smaller
problems
● ex: Split the list in half recursively and search
each half
● This splitting indicates a logarithmic
dependence on the data size: The most
effective sorting algorithms have a lower
efficiency bound of O(nlog(n))
● Mergesort
● Quicksort
● Binary Search
● Quickselect
![Page 10: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/10.jpg)
Binary Search1. Go to the middle of the list2. Check if the key matches the search key3. If the search key is greater than the key, repeat on right sublist4. Else repeat of left sublist
1 2 3 4 5 6 7 8 9 10
3 4 7 2 1 10 9 8 7 6
![Page 11: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/11.jpg)
Binary Search1. Go to the middle of the list2. Check if the key matches the search key3. If the search key is greater than the key, repeat on right sublist4. Else repeat of left sublist
1 2 3 4 5 6 7 8 9 10
3 4 7 2 1 10 9 8 7 6
O(log(n)) (doesn’t work for unsorted)
![Page 12: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/12.jpg)
Maintaining a Sorted Structure
1 2 3 4 6 7 8 9 10
1 2 3 4 6 7 8 9 10 5
Structure is broken! Back to O(n), or need to re-sort
![Page 13: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/13.jpg)
What is a Data Structure?● A particular way of storing and organizing data so that it can be processed
efficiently
● Most of the data structures we will examine can be related to graphs
● The data stored is easily comparable and benefits from sorting
● i.e. array of high scores in a game, not pixels in a PNG
● Usually we separate the data we want to analyze with a way to find it (key)
1
2
Big Important Object 1
Big Important Object 2
![Page 14: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/14.jpg)
Arrays● Arrays are one of the most basic structures: contiguous memory separated
into values● Analogous to an disjoint, indexed set of unconnected vertices
Insertion:Insertion (maintain sort):Growth: Find at position n:Find in sorted: Find in unsorted:
![Page 15: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/15.jpg)
Arrays● Arrays are one of the most basic structures: contiguous memory separated
into values● Analogous to an disjoint, indexed set of unconnected vertices
Insertion: O(1) Insertion (maintain sort): O(n)Growth: O(1) amortizedFind at position n: O(1)Find in sorted: O(log(n))Find in unsorted: O(n)
![Page 16: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/16.jpg)
Linked Lists● Linked lists are data connected by pointers to one another, forward
and possibly backward● Analogous to an unindexed, spanning graph of vertices with max in
degree 1 or 2 and out degree 1 or 2 for singly or doubly linked lists
Insertion: Insertion (maintain sort): Growth: Find at position n: Find in sorted: Find in unsorted:
![Page 17: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/17.jpg)
Linked Lists● Linked lists are data connected by pointers to one another, forward
and possibly backward● Analogous to an unindexed, spanning graph of vertices with max in
degree 1 or 2 and out degree 1 or 2 for singly or doubly linked lists
Insertion: O(1) Insertion (maintain sort): O(n)Growth: O(1) Find at position n: O(n)Find in sorted: O(n)Find in unsorted: O(n)
![Page 18: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/18.jpg)
Binary Trees● Binary Trees are graphs● Directed, connected, rooted,
ordered acyclic graphs with max in degree 1 and out degree 2
![Page 19: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/19.jpg)
Binary Search Trees● A balanced tree takes log(n) to
maintain sortedness after insertion
● Therefore, it takes nlog(n) time to create a balanced binary tree: Where have we seen this before?
![Page 20: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/20.jpg)
Binary Search Trees● A balanced tree takes log(n) to
maintain sortedness after insertion
● Therefore, it takes nlog(n) time to create a balanced binary tree: Where have we seen this before?
● Creating a balanced binary search tree is analogous to completely sorting an array
![Page 21: Visualizing Data Structuresnew.math.uiuc.edu/math198/MA198-2013/petrisk2/presentation.pdf · Dan Petrisko. What is an Algorithm? ... (Euclid’s Algorithm) Finding the shortest path](https://reader030.vdocument.in/reader030/viewer/2022040401/5e79580a381ef80f01495f77/html5/thumbnails/21.jpg)
Hash Tables● Non comparative method of quick search
● Only 1 memory access
● Hash function takes a key and outputs a hash
value, where it is stored in an array
● Requires no sorting to find specific keys!
● But, no function is perfect: Collisions