1 / 25

CSE 373: Data Structures and Algorithms

Learn about graphs and their applications in airline routes and computer networks. Understand concepts such as paths, cycles, weighted graphs, directed graphs, trees, and more. Explore depth-first search and breadth-first search algorithms.

nidiak
Download Presentation

CSE 373: Data Structures and Algorithms

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSE 373: Data Structures and Algorithms Lecture 19: Graphs

  2. What are graphs? • Yes, this is a graph…. • But we are interested in a different kind of “graph”

  3. Airline Routes Nodes = cities Edges = direct flights

  4. New York Sydney Computer Networks 56 Tokyo Seattle 128 Seoul 16 181 30 140 L.A. Nodes = computers Edges = transmission rates

  5. CSE Course Prerequisites at UW 461 322 373 143 321 326 142 415 410 370 341 413 417 378 421 Nodes = courses Directed edge = prerequisite 401

  6. Graphs • graph: a data structure containing • a set of vertices V • a set of edges E, where an edgerepresents a connection between 2 vertices • G = (V, E) • edge is a pair (v, w) where v, w in V • the graph at right: V = {a, b, c} and E = {(a, b), (b, c), (c, a)} • Assuming that a graph can only have one edge between a pair of vertices and cannot have an edge to itself, what is the maximum number of edges a graph can contain, relative to the size of the vertex set V?

  7. V b a P1 d U X Z P2 h c e W g f Y Paths • path: a path from vertex A to B is a sequence of edges that can be followed starting from A to reach B • can be represented as vertices visited or edges taken • example: path from V to Z: {b, h} or {V, X, Z} • reachability: v1 is reachable from v2 if a path exists from V1 to V2 • connected graph: one in which it's possible to reach any node from any other • is this graph connected?

  8. V a b d U X Z C2 h e C1 c W g f Y Cycles • cycle: path from one node back to itself • example: {b, g, f, c, a} or {V, X, Y, W, U, V} • loop: edge directly from node to itself • many graphs don't allow loops

  9. 849 PVD 1843 ORD 142 SFO 802 LGA 1743 337 1387 HNL 2555 1099 1233 LAX 1120 DFW MIA Weighted graphs • weight: (optional) cost associated with a given edge • example: graph of airline flights • if we were programming this graph, what information would we have to store for each vertex / edge?

  10. Directed graphs • directed graph (digraph): edges are one-way connections between vertices • if graph is directed, a vertex has a separate in/out degree

  11. Trees as Graphs • Every tree is a graph with some restrictions: • the tree is directed • there is exactly one directed path from the root to every node A B C D E F G H

  12. V a b h j U d X Z c e i W g f Y More terminology • degree: number of edges touching a vertex • example: W has degree 4 • what is the degree of X? of Z? • adjacent vertices: connecteddirectly by an edge

  13. Graph questions • Are the following graphs directed or not directed? • Buddy graphs of instant messaging programs?(vertices = users, edges = user being on another's buddy list) • bus line graph depicting all of Seattle's bus stations and routes • graph of movies in which actors have appeared together • Are these graphs potentially cyclic? Why or why not?

  14. Graph exercise • Consider a graph of instant messenger buddies. • What do the vertices represent? What does an edge represent? • Is this graph directed or undirected? Weighted or unweighted? • What does a vertex's degree mean? In degree? Out degree? • Can the graph contain loops? cycles? • Consider this graph data: • Jessica's buddy list: Meghan, Alan, Martin. • Meghan's buddy list: Alan, Lori. • Toni's buddy list: Lori, Meghan. • Martin's buddy list: Lori, Meghan. • Alan's buddy list: Martin, Jessica. • Lori's buddy list: Meghan. • Compute the in/out degree of each vertex. Is the graph connected? • Who is the most popular? Least? Who is the most antisocial? • If we're having a party and want to distribute the message the most quickly, who should we tell first?

  15. Depth-first search • depth-first search (DFS): finds a path between two vertices by exploring each possible path as many steps as possible before backtracking • often implemented recursively

  16. DFS example • All DFS paths from A to others (assumes ABC edge order) • A • A -> B • A -> B -> D • A -> B -> F • A -> B -> F -> E • A -> C • A -> C -> G • What are the paths that DFS did not find?

  17. DFS pseudocode • Pseudo-code for depth-first search: dfs(v1, v2): dfs(v1, v2, {}) dfs(v1, v2, path): path += v1. mark v1 as visited. if v1 is v2: path is found. for each unvisited neighbor vi of v1 where there is an edge from v1 to vi: if dfs(vi, v2, path) finds a path, path is found. path -= v1. path is not found.

  18. DFS observations • guaranteed to find a path if one exists • easy to retrieve exactly what the pathis (to remember the sequence of edgestaken) if we find it • optimality: not optimal. DFS is guaranteed to find a path, not necessarily the best/shortest path • Example: DFS(A, E) may returnA -> B -> F -> E

  19. BOS v ORD 4 JFK v v 2 6 SFO DFW LAX v 3 v 1 MIA v 5 Another DFS example • Using DFS, find a path from BOS to LAX.

  20. Breadth-first search • breadth-first search (BFS): finds a path between two nodes by taking one step down all paths and then immediately backtracking • often implemented by maintaininga list or queue of vertices to visit • BFS always returns the path with the fewest edges between the start and the goal vertices

  21. BFS example • All BFS paths from A to others (assumes ABC edge order) • A • A -> B • A -> C • A -> E • A -> B -> D • A -> B -> F • A -> C -> G • What are the paths that BFS did not find?

  22. BFS pseudocode • Pseudo-code for breadth-first search: bfs(v1, v2): List := {v1}. mark v1 as visited. while List not empty: v := List.removeFirst(). if v is v2: path is found. for each unvisited neighbor vi of v where there is an edge from v to vi: mark vi as visited List.addLast(vi). path is not found.

  23. BFS observations • optimality: • in unweighted graphs, optimal. (fewest edges = best) • In weighted graphs, not optimal.(path with fewest edges might not have the lowest weight) • disadvantage: harder to reconstruct what the actual path is once you find it • conceptually, BFS is exploring many possible paths in parallel, so it's not easy to store a Path array/list in progress • observation: any particular vertex is only part of one partial path at a time • We can keep track of the path by storing predecessors for each vertex (references to the previous vertex in that path)

  24. BOS v ORD 4 JFK v v 2 6 SFO DFW LAX v 3 v 1 MIA v 5 Another BFS example • Using BFS, find a path from BOS to LAX.

  25. DFS, BFS runtime • What is the expected runtime of DFS, in terms of the number of vertices V and the number of edges E ? • What is the expected runtime of BFS, in terms of the number of vertices V and the number of edges E ? • Answer: O(|V| + |E|) • each algorithm must potentially visit every node and/or examine every edge once. • why not O(|V| * |E|) ? • What is the space complexity of each algorithm?

More Related