 
              A Heap Is Efficiently Represented As An Array 9 8 7 6 7 2 6 5 1 9 8 7 6 7 2 6 5 1 0 1 2 3 4 5 6 7 8 9 10
Moving Up And Down A Heap 1 9 2 3 8 7 4 7 5 6 6 7 2 6 5 1 8 9
Putting An Element Into A Max Heap  Complete binary tree with 10 nodes. 9 8 7 6 7 2 6 5 1 7
Putting An Element Into A Max Heap  New element is 5. 9 8 7 6 7 2 6 5 1 7 5
Putting An Element Into A Max Heap  New element is 20. 9 8 7 6 2 6 7 5 1 7 7
Putting An Element Into A Max Heap  New element is 20. 9 8 7 6 2 6 5 1 7 7 7
Putting An Element Into A Max Heap  New element is 20. 9 7 6 8 2 6 5 1 7 7 7
Putting An Element Into A Max Heap  New element is 20. 20 9 7 6 8 2 6 5 1 7 7 7
Putting An Element Into A Max Heap  Complete binary tree with 11 nodes. 20 9 7 6 8 2 6 5 1 7 7 7
Putting An Element Into A Max Heap  New element is 15. 20 9 7 6 8 2 6 5 1 7 7 7
Putting An Element Into A Max Heap  New element is 15. 20 9 7 6 2 6 8 5 1 7 7 8 7
Putting An Element Into A Max Heap  New element is 15. 20 7 15 6 9 2 6 8 5 1 7 7 8 7
Complexity Of Put  Complexity is O(log n), where n is heap size. 20 7 15 6 9 2 6 8 5 1 7 7 8 7
Removing The Max Element  Max element is in the root. 20 7 15 6 9 2 6 8 5 1 7 7 8 7
Removing The Max Element  After max element is removed. 7 15 6 9 2 6 8 5 1 7 7 8 7
Removing The Max Element  Heap with 10 nodes. 7 15 6 9 2 6 8 5 1 7 7 8 7 Reinsert 8 into the heap.
Removing The Max Element  Reinsert 8 into the heap. 7 15 6 9 2 6 5 1 7 7 7
Removing The Max Element  Reinsert 8 into the heap. 15 7 6 9 2 6 5 1 7 7 7
Removing The Max Element  Reinsert 8 into the heap. 15 9 7 6 2 6 8 5 1 7 7 7
Removing The Max Element  Max element is 15. 15 9 7 6 2 6 8 5 1 7 7 7
Removing The Max Element  After max element is removed. 9 7 6 2 6 8 5 1 7 7 7
Removing The Max Element  Heap with 9 nodes. 9 7 6 2 6 8 5 1 7 7 7
Removing The Max Element  Reinsert 7. 9 7 6 2 6 8 5 1
Removing The Max Element  Reinsert 7. 9 7 6 2 6 8 5 1
Removing The Max Element  Reinsert 7. 9 8 7 6 7 2 6 5 1
Complexity Of Remove Max Element  Complexity is O(log n). 9 8 7 6 7 2 6 5 1
Note  Heap is not a search data-structure  You are interested in minimum or maximum depending on the heap  There are efficient ways to convert an array into a heap.  Requires O(n) time to convert an array into a heap instead of O(n log n) as suggested by n insertions.
Administrivia  TA Office Hours  Wednesdays 3 to 5 pm in the PC lab  Homework 2  Updated the PDF document  Made a few things clear; Corrected a few things  Updated the .zip file  Makefiles in both directories  Changes to hashT emplate.c file
Thank You
EE717: Advanced Computing foR ELECTRICAL Engineers Lecture 8 Graphs 24 Aug 2014 Shankar Balachandran, IIT Bombay (shankarb@ee.iitb.ac.in)
Graphs  G = (V,E)  V is the vertex set.  Vertices are also called nodes and points.  E is the edge set.  Each edge connects two different vertices.  Captures relationships between vertices  Directed edge has an orientation (u,v). u v
Graph Representation  Adjacency Matrix  Adjacency Lists  Linked Adjacency Lists  Array Adjacency Lists
Adjacency Matrix  0/1 n x n matrix, where n = # of vertices  A(i,j) = 1 iff (i,j) is an edge 1 2 3 4 5 2 0 1 0 1 0 1 3 1 0 0 0 1 2 1 0 0 0 0 1 3 4 1 0 0 0 1 4 5 0 1 1 1 0 5
Adjacency Matrix Properties 1 2 3 4 5 2 1 0 1 0 1 0 3 2 1 0 0 0 1 1 3 0 0 0 0 1 4 4 1 0 0 0 1 5 5 0 1 1 1 0 • Diagonal entries are zero. • Adjacency matrix of an undirected graph is symmetric.  A(i,j) = A(j,i) for all i and j.
Adjacency Matrix (Digraph) 1 2 3 4 5 2 1 0 0 0 1 0 3 2 1 0 0 0 1 1 3 0 0 0 0 0 4 4 0 0 0 0 1 5 5 0 1 1 0 0 • Diagonal entries are zero. • Adjacency matrix of a digraph need not be symmetric.
Adjacency Matrix  n2 bits of space  For an undirected graph, may store only lower or upper triangle (exclude diagonal).  (n-1)n/2 bits  O(n) time to find vertex degree and/or vertices adjacent to a given vertex.
Adjacency Lists  Adjacency list for vertex i is a linear list of vertices adjacent from vertex i.  An array of n adjacency lists. aList[1] = (2,4) aList[2] = (1,5) aList[3] = (5) 2 3 aList[4] = (5,1) 1 aList[5] = (2,4,3) 4 5
Linked Adjacency Lists  Each adjacency list is a chain. 2 aList[1] 2 4 3 [2] 1 5 [3] 5 1 [4] 5 1 4 aList[5] 2 4 3 5 Array Length = n # of chain nodes = 2e (undirected graph) # of chain nodes = e (digraph)
Array Adjacency Lists  Each adjacency list is an array list. 2 aList[1] 2 4 3 [2] 1 5 [3] 5 1 [4] 5 1 4 aList[5] 2 4 3 5 Array Length = n # of list elements = 2e (undirected graph) # of list elements = e (digraph)
Weighted Graphs  Cost adjacency matrix.  C(i,j) = cost of edge (i,j)  Adjacency lists => each list element is a pair (adjacent vertex, edge weight)
Graph Search Methods • A vertex u is reachable from vertex v iff there is a path from v to u. 2 3 8 1 4 5 9 10 6 7 11
Graph Search Methods • A search method starts at a given vertex v and visits/labels/marks every vertex that is reachable from v. 2 3 8 1 4 5 9 1 0 6 7 11
Graph Search Methods • Many graph problems solved using a search method.  Path from one vertex to another.  Is the graph connected?  Find a spanning tree.  Etc. • Commonly used search methods:  Breadth-first search.  Depth-first search.
Recommend
More recommend