Create Presentation
Download Presentation

Download

Download Presentation

CSE 221: Algorithms and Data Structures Lecture #9 Graphs (with no Axes to Grind)

118 Views
Download Presentation

Download Presentation
## CSE 221: Algorithms and Data Structures Lecture #9 Graphs (with no Axes to Grind)

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -

**CSE 221: Algorithms and Data StructuresLecture #9Graphs**(with no Axes to Grind) Steve Wolfman 2011W2**Today’s Outline**• Topological Sort: Getting to Know Graphs with a Sort • Graph ADT and Graph Representations • Graph Terminology (a lot of it!) • More Graph Algorithms • Shortest Path (Dijkstra’s Algorithm) • Minimum Spanning Tree (Kruskal’s Algorithm)**Total Order**1 2 3 4 5 6 7 means A must go before B A B**Partial Order: Getting Dressed**pants shirt socks coat under roos belt shoes watch**Topological Sort**Given a graph, G = (V, E), output all the vertices in V such that no vertex is output before any other vertex with an edge to it.**Topo-Sort Take One**Label each vertex’s in-degree (# of inbound edges) While there are vertices remaining Pick a vertex with in-degree of zero and output it Reduce the in-degree of all vertices adjacent to it Remove it from the list of vertices runtime:**Topo-Sort Take Two**Label each vertex’s in-degree Initialize a queue to contain all in-degree zero vertices While there are vertices remaining in the queue Pick a vertex v with in-degree of zero and output it Reduce the in-degree of all vertices adjacent to v Put any of these with new in-degree zero on the queue Remove v from the queue runtime:**Today’s Outline**• Topological Sort: Getting to Know Graphs with a Sort • Graph ADT and Graph Representations • Graph Terminology (a lot of it!) • More Graph Algorithms • Shortest Path (Dijkstra’s Algorithm) • Minimum Spanning Tree (Kruskal’s Algorithm)**Han**Luke Leia Graph ADT Graphs are a formalism useful for representing relationships between things • a graph G is represented as G = (V, E) • Vis a set of vertices: {v1, v2, …, vn} • E is a set of edges: {e1, e2, …, em}where each ei connects two vertices (vi1, vi2) • operations might include: • creation (with a certain number of vertices) • inserting/removing edges • iterating over vertices adjacent to a specific vertex • asking whether an edge exists connecting two vertices V = {Han, Leia, Luke} E = {(Luke, Leia), (Han, Leia), (Leia, Han)}**Graph Applications**• Storing things that are graphs by nature • distance between cities • airline flights, travel options • relationships between people, things • distances between rooms in Clue • Compilers • callgraph - which functions call which others • dependence graphs - which variables are defined and used at which statements • Others: mazes, circuits, class hierarchies, horses, networks of computers or highways or…**Han**Luke Leia Graph Representations • 2-D matrix of vertices (marking edges in the cells) “adjacency matrix” • List of vertices each with a list of adjacent vertices “adjacency list”**Han**Luke Leia Adjacency Matrix A |V| x |V| array in which an element (u, v) is true if and only if there is an edge from uto v Han Luke Leia Han Luke Leia runtime for various operations? space requirements:**Han**Luke Leia Adjacency List A |V|-ary list (array) in which each entry stores a list (linked list) of all adjacent vertices Han Luke Leia runtime for various operations? space requirements:**Today’s Outline**• Topological Sort: Getting to Know Graphs with a Sort • Graph ADT and Graph Representations • Graph Terminology (a lot of it!) • More Graph Algorithms • Shortest Path (Dijkstra’s Algorithm) • Minimum Spanning Tree (Kruskal’s Algorithm)**Directed vs. Undirected Graphs**• In directed graphs, edges have a specific direction: • In undirected graphs, they don’t (edges are two-way): • Vertices u and v are adjacent if (u, v) E Han Luke Leia Han Luke Leia**Directed vs. Undirected Graphs**• Adjacency lists and matrices both work fine to represent directed graphs. • To represent undirected graphs, either ensure that both orderings of every edge are included in the representation or ensure that the order doesn’t matter (e.g., always use a “canonical” order), which works poorly in adjacency lists.**Weighted Graphs**Each edge has an associated weight or cost. 20 Clinton Mukilteo 30 Kingston Edmonds 35 Bainbridge Seattle 60 Bremerton How can we store weights in an adjacency matrix? In an adjacency list?**Graph Density**A sparse graph has O(|V|) edges A dense graph has (|V|2) edges Anything in between is either on the sparse side or on the dense side, depending critically on context!**Graph Density**A sparse graph has O(|V|) edges Why is the adjacency list likely to be a better representation than the adjacency matrix for sparse graphs? • Sparse graphs have too few edges to fit in an adjacency matrix. • Much of the matrix will be “wasted” on 0s. • The adjacency list will guarantee better performance on a sparse graph. • None of these.**Connectivity**Undirected graphs are connected if there is a path between any two vertices Directed graphs are strongly connected if there is a path from any one vertex to any other Di-graphs are weakly connected if there is a path between any two vertices, ignoring direction A complete graph has an edge between every pair of vertices**Isomorphism and Subgraphs**We often care only about the structure of a graph, not the names of its vertices. Then, we can ask: “Are two graphs isomorphic?” Do the graphs have identical structure? Can you “line up” their vertices so that their edges match? “Is one graph a subgraph of the other?” Is one graph isomorphic to a part of the other graph (a subset of its vertices and a subset of the edges connecting those vertices)?**Degree**• The degreeof a vertex v∈V is denoted deg(v) and represents the number of edges incident on v. (An edge from v to itself contributes 2 towards the degree.) • Handshaking Theorem: If G=(V,E) is an undirected graph, then: • Corollary: An undirected graph has an even number of vertices of odd degree.**Degree/Handshake Example**• The degreeof a vertex v∈V is the number of edges incident on v. Let’s label the degree of every node and calculate the sum…**Degree for Directed Graphs**• The in-degreeof a vertex v∈V is denoted deg-(v) is the number of edges coming in to v. • The out-degreeof a vertex v∈V is denoted deg+(v) is the number of edges coming out of v. • We let deg(v) = deg+(v) + deg-(v) • Then:**Trees as Graphs**• Every tree is a graph with some restrictions: • the tree is directed • there are no cycles (directed or undirected) • there is a directed path from the root to every node A B C D E F G H I J**Directed Acyclic Graphs (DAGs)**DAGs are directed graphs with no cycles. main() mult() add() read() access() Trees DAGs Graphs We can only topo-sort DAGs!**Today’s Outline**• Topological Sort: Getting to Know Graphs with a Sort • Graph ADT and Graph Representations • Graph Terminology (a lot of it!) • More Graph Algorithms • Shortest Path (Dijkstra’s Algorithm) • Minimum Spanning Tree (Kruskal’s Algorithm)**Single Source, Shortest Path**Given a graph G = (V, E) and a vertex s V, find the shortest path from s to every vertex in V Many variations: • weighted vs. unweighted • cyclic vs. acyclic • positive weights only vs. negative weights allowed • multiple weight types to optimize**The Trouble with Negative Weighted Cycles**2 A B 10 -5 1 E 2 C D What’s the shortest path from A to E? (or to B, C, or D, for that matter)**Unweighted Shortest Path Problem**Assume source vertex is C… B A F H G C D E Distance to: A B C D E F G H**Dijkstra**Legendary figure in computer science; was a professor at University of Texas. Supported teaching introductory computer courses without computers (pencil and paper programming) Supposedly wouldn’t (until late in life) read his e-mail; so, his staff had to print out messages and put them in his box.**Dijkstra’s Algorithm for Single Source Shortest Path**• Classic algorithm for solving shortest path in weighted graphs without negative weights • A greedy algorithm (irrevocably makes decisions without considering future consequences) • Intuition: • shortest path from source vertex to itself is 0 • cost of going to adjacent nodes is at most edge weights • cheapest of these must be shortest path to that node • update paths for new node and continue picking cheapest path**2**2 3 B A F H 1 1 2 1 4 10 9 4 G C 8 2 D 1 E 7 Intuition in Action**Dijkstra’s Pseudocode(actually, our pseudocode for**Dijkstra’s algorithm) Initialize the cost of each node to Initialize the cost of the source to 0 While there are unknown nodes left in the graph Select the unknown node with the lowest cost: n Mark n as known For each node a which is adjacent to n a’s cost = min(a’s old cost, n’s cost + cost of (n, a)) We can get the path from thisjust as we did for mazes!**2**2 3 B A F H 1 1 2 1 4 10 9 4 G C 8 2 D 1 E 7 Dijkstra’s Algorithm in Action**The Cloud Proof**Next shortest path from inside the known cloud But, if the path to G is the next shortest path, the path to P must be at least as long. So, how can the path through P to G be shorter? G Better path to the same node THE KNOWN CLOUD P Source**Inside the Cloud (Proof)**Everything inside the cloud has the correct shortest path Proof is by induction on the # of nodes in the cloud: • initial cloud is just the source with shortest path 0 • inductive step: once we prove the shortest path to G is correct, we add it to the cloud Negative weights blow this proof away!**Data Structures for Dijkstra’s Algorithm**|V| times: Select the unknown node with the lowest cost findMin/deleteMin |E| times: a’s cost = min(a’s old cost, …) decreaseKey (i.e., change a key and fix the heap) find by name (dictionary lookup!) runtime:**Fibonacci Heaps**• Very cool variation on Priority Queues • Amortized O(1) time bound for decreaseKey • O(log n) time for deleteMin Dijkstra’s uses |V| deleteMins and |E| decreaseKeys runtime with Fibonacci heaps:**Today’s Outline**• Topological Sort: Getting to Know Graphs with a Sort • Graph ADT and Graph Representations • Graph Terminology (a lot of it!) • More Graph Algorithms • Shortest Path (Dijkstra’s Algorithm) • Minimum Spanning Tree (Kruskal’s Algorithm)**The Maze Construction Problem**• Given: • collection of rooms: V • connections between rooms (initially all closed): E • Construct a maze: • collection of rooms: V = V • designated rooms in, iV, and out, oV • collection of connections to knock down: E E such that one unique path connects every two rooms**The Middle of the Maze**• So far, a number of walls have been knocked down while others remain. • Now, we consider the wall between A and B. • Should we knock it down? • if A and Bare otherwise connected • if A and B are not otherwise connected A B**Maze Construction Algorithm**While edges remain in E • Remove a random edge e = (u, v) from E • If u and v have not yet been connected • add e to E • mark u and v as connected**Spanning Tree**Spanning tree: a subset of the edges from a connected graph that… • touches all vertices in the graph (spans the graph) • forms a tree (is connected and contains no cycles) Minimum spanning tree: the spanning tree with the least total edge cost. 4 7 9 2 1 5**Kruskal’s Algorithm for Minimum Spanning Trees**Yet another greedy algorithm: Initialize all vertices to unconnected While there are still unmarked edges Pick the lowest cost edge e = (u, v) and mark it If u and v are not already connected, add e to the minimum spanning tree and connect u and v Sound familiar?**Kruskal’s Algorithm in Action (1/5)**2 2 3 B A F H 1 2 1 4 10 9 G 4 C 8 2 D E 7**Kruskal’s Algorithm in Action (2/5)**2 2 3 B A F H 1 2 1 4 10 9 G 4 C 8 2 D E 7**Kruskal’s Algorithm in Action (3/5)**2 2 3 B A F H 1 2 1 4 10 9 G 4 C 8 2 D E 7**Kruskal’s Algorithm in Action (4/5)**2 2 3 B A F H 1 2 1 4 10 9 G 4 C 8 2 D E 7