October 21, 200819. Graphs1 Graphs CS 221 (slides from textbook author)

Slides:



Advertisements
Similar presentations
© 2004 Goodrich, Tamassia Depth-First Search1 DB A C E.
Advertisements

Depth-First Search1 Part-H2 Depth-First Search DB A C E.
© 2004 Goodrich, Tamassia Breadth-First Search1 CB A E D L0L0 L1L1 F L2L2.
Depth-First Search1 DB A C E. 2 Outline and Reading Definitions (§6.1) Subgraph Connectivity Spanning trees and forests Depth-first search (§6.3.1) Algorithm.
CSC 213 ORD DFW SFO LAX Lecture 20: Graphs.
© 2004 Goodrich, Tamassia Graphs1 ORD DFW SFO LAX
Breadth-First Search1 Part-H3 Breadth-First Search CB A E D L0L0 L1L1 F L2L2.
1 Graphs ORD DFW SFO LAX Many slides taken from Goodrich, Tamassia 2004.
© 2004 Goodrich, Tamassia Depth-First Search1 DB A C E.
1 Graphs: Concepts, Representation, and Traversal CSC401 – Analysis of Algorithms Lecture Notes 13 Graphs: Concepts, Representation, and Traversal Objectives:
Graphs1 Part-H1 Graphs ORD DFW SFO LAX
Graphs1 ORD DFW SFO LAX Graphs2 Outline and Reading Graphs (§6.1) Definition Applications Terminology Properties ADT Data structures.
Graphs1 ORD DFW SFO LAX Graphs2 Outline and Reading Graphs (§6.1) Definition Applications Terminology Properties ADT Data structures.
CSC311: Data Structures 1 Chapter 13: Graphs I Objectives: Graph ADT: Operations Graph Implementation: Data structures Graph Traversals: DFS and BFS Directed.
ECE669 L10: Graph Applications March 2, 2004 ECE 669 Parallel Computer Architecture Lecture 10 Graph Applications.
Graphs1 Graphs Chapter 6 ORD DFW SFO LAX
1 Graph Algorithms Lecture 09 Asst. Prof. Dr. Bunyarit Uyyanonvara IT Program, Image and Vision Computing Lab. School of Information and Computer Technology.
Graphs – ADTs and Implementations ORD DFW SFO LAX
Graphs Chapter 12.
Graphs Part 1. Outline and Reading Graphs (§13.1) – Definition – Applications – Terminology – Properties – ADT Data structures for graphs (§13.2) – Edge.
October 22, DFS, BFS, Biconnectivity, Digraphs 1 CS 221 West Virginia University.
Graphs. Data Structure for Graphs. Graph Traversals. Directed Graphs. Shortest Paths. 2 CPSC 3200 University of Tennessee at Chattanooga – Summer 2013.
Chapter 6 Graphs ORD DFW SFO LAX
Graphs CSE 2011 Winter June Graphs A graph is a pair (V, E), where  V is a set of nodes, called vertices  E is a collection of pairs.
Spring 2007Graphs1 ORD DFW SFO LAX
GRAPHS 1. Outline 2  Undirected Graphs and Directed Graphs  Depth-First Search  Breadth-First Search.
1 prepared from lecture material © 2004 Goodrich & Tamassia COMMONWEALTH OF AUSTRALIA Copyright Regulations 1969 WARNING This material.
Depth-First Search1 DB A C E. 2 Depth-first search (DFS) is a general technique for traversing a graph A DFS traversal of a graph G – Visits all the vertices.
1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.
Depth-First Search Lecture 21: Graph Traversals
CSC401: Analysis of Algorithms 6-1 CSC401 – Analysis of Algorithms Chapter 6 Graphs Objectives: Introduce graphs and data structures Discuss the graph.
Graphs Quebec Toronto Montreal Ottawa 449 km 255 km 200 km 545 km Winnipeg 2075 km 2048 km New York 596 km 790 km 709 km.
CHAPTER 13 GRAPH ALGORITHMS ACKNOWLEDGEMENT: THESE SLIDES ARE ADAPTED FROM SLIDES PROVIDED WITH DATA STRUCTURES AND ALGORITHMS IN C++, GOODRICH, TAMASSIA.
1 COMP9024: Data Structures and Algorithms Week Eleven: Graphs (I) Hui Wu Session 1, 2016
Graphs ORD SFO LAX DFW Graphs 1 Graphs Graphs
Breadth-First Search L0 L1 L2
Graphs 10/24/2017 6:47 AM Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and.
Graphs.
Graphs 5/14/ :46 PM Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and.
Graphs 7/18/2018 7:39 AM Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and.
Searching Graphs ORD SFO LAX DFW Spring 2007
Breadth-First Search L0 L1 L2 C B A E D F Breadth-First Search
Breadth-First Search L0 L1 L2
Graphs ORD SFO LAX DFW Graphs Graphs
COMP9024: Data Structures and Algorithms
Graphs ORD SFO LAX DFW Graphs Graphs
COMP9024: Data Structures and Algorithms
Graphs Part 1.
Graphs ORD SFO LAX DFW Graphs Graphs
Graphs.
Graphs.
Breadth-First Search L0 L1 L2 C B A E D F Breadth-First Search
Depth-First Search D B A C E Depth-First Search Depth-First Search
Breadth-First Search L0 L1 L2 C B A E D F Breadth-First Search
Depth-First Search D B A C E Depth-First Search Depth-First Search
Graphs ORD SFO LAX DFW Graphs Graphs
Graphs CSE 2011 Winter November 2018.
Depth-First Search D B A C E Depth-First Search Depth-First Search
Graphs ORD SFO LAX DFW Graphs Graphs
Subgraphs, Connected Components, Spanning Trees
Graphs ORD SFO LAX DFW Graphs Graphs
Graphs 4/29/15 01:28:20 PM Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia,
Searching Graphs ORD SFO LAX DFW Spring 2007
Graphs Part 1 ORD SFO LAX DFW
Copyright © Aiman Hanna All rights reserved
Depth-First Search D B A C E 4/13/2019 5:23 AM Depth-First Search
Graphs ORD SFO LAX DFW /15/ :57 AM
Breadth-First Search L0 L1 L2 C B A E D F 4/25/2019 3:12 AM
Breadth-First Search L0 L1 L2 C B A E D F 5/14/ :22 AM
Breadth-First Search L0 L1 L2 C B A E D F 7/28/2019 1:03 PM
Presentation transcript:

October 21, Graphs1 Graphs CS 221 (slides from textbook author)

October 21, Graphs2 Graphs ORD DFW SFO LAX

October 21, Graphs3 Outline and Reading Graphs (§6.1) –Definition –Applications –Terminology –Properties –ADT Data structures for graphs (§6.2) –Edge list structure –Adjacency list structure –Adjacency matrix structure

October 21, Graphs4 Graph A graph is a pair (V, E), where –V is a set of nodes, called vertices –E is a collection of pairs of vertices, called edges –Vertices and edges are positions and store elements Example: –A vertex represents an airport and stores the three-letter airport code –An edge represents a flight route between two airports and stores the mileage of the route ORD PVD MIA DFW SFO LAX LGA HNL

October 21, Graphs5 Edge Types Directed edge –ordered pair of vertices (u,v) –first vertex u is the origin –second vertex v is the destination –e.g., a flight Undirected edge –unordered pair of vertices (u,v) –e.g., a flight route Directed graph –all the edges are directed –e.g., flight network Undirected graph –all the edges are undirected –e.g., route network ORDPVD flight AA 1206 ORDPVD 849 miles

October 21, Graphs6 Edge Types Directed edge –ordered pair of vertices (u,v) –first vertex u is the origin –second vertex v is the destination –e.g., a flight Undirected edge –unordered pair of vertices (u,v) –e.g., a flight route Directed graph –all the edges are directed –e.g., flight network Undirected graph –all the edges are undirected –e.g., route network ORDPVD flight AA 1206 ORDPVD 849 miles These are edges from two distinct graphs. FLVS-mod

October 21, Graphs7 ORD PVD MIA DFW SFO LAX LGA HNL AA1206 UA7654 AA5432 AA8901 AA4567 UA98 UA567 UA6789 UA45 UA1234 AA67 ORD PVD MIA DFW SFO LAX LGA HNL FLVS Undirected graph Directed graph

October 21, Graphs8 ORD PVD MIA DFW SFO LAX LGA HNL AA1206 UA7654 AA5432 AA8901 AA4567 UA98 UA567 UA6789 UA45 UA1234 AA67 FLVS Another directed graph ORD PVD MIA DFW SFO LAX LGA HNL AA1206 UA7654 AA5432 AA8901 AA4567 UA98 UA567 UA6789 UA45 UA1234 AA67 Directed graph AA1207 UA1235

October 21, Graphs9 Another comparison of directed and undirected graphs The streets of downtown Morgantown Directed graph: drivers of vehicles must drive in the direction indicated by arrow signs on the one-way streets. Undirected graph: pedestrians may walk either direction on the one-way streets. Willey ForestWalnutPleasant FLVS

October 21, Graphs10 Applications Electronic circuits –Printed circuit board –Integrated circuit Transportation networks –Highway network –Flight network Computer networks –Local area network –Internet –Web Databases –Entity-relationship diagram

October 21, Graphs11 Entity-relationship model An entity-relationship model (ERM) is an abstract conceptual representation of structured data. Entity-relationship modeling is a relational schema database modeling method, used in software engineering to produce a type of conceptual data model (or semantic data model ) of a system, often a relational database, and its requirements in a top-down fashion. Diagrams created using this process are called entity-relationship diagrams, or ER diagrams or ERDs for short. The definitive reference for entity relationship modelling is generally given as Peter Chen 's 1976 paper [1]. However, variants of the idea existed previously (see for example A. P. G. Brown [2] ) and have been devised subsequently. database modeling software engineering conceptual data model semantic data model relational database top-down Peter Chen [1] [2]

October 21, Graphs12 Entity-relationship model: overview(1) The first stage of information system design uses these models during the requirements analysis to describe information needs or the type of information that is to be stored in a database. The data modeling technique can be used to describe any ontology (i.e. an overview and classifications of used terms and their relationships) for a certain universe of discourse (i.e. area of interest). In the case of the design of an information system that is based on a database, the conceptual data model is, at a later stage (usually called logical design), mapped to a logical data model, such as the relational model ; this in turn is mapped to a physical model during physical design. Note that sometimes, both of these phases are referred to as "physical design". information system requirements analysis information database data modeling ontology universe of discourse relational model

October 21, Graphs13 Entity-relationship model: overview (2) There are a number of conventions for entity- relationship diagrams (ERDs). The classical notation is described in the remainder of this article, and mainly relates to conceptual modeling. There are a range of notations more typically employed in logical and physical database design, including IDEF1x (ICAM DEFinition Language) and dimensional modeling.IDEF1xdimensional modeling

October 21, Graphs14 Entitity-relationship model: connection: entity (1) An entity may be defined as a thing which is recognised as being capable of an independent existence and which can be uniquely identified. An entity is an abstraction from the complexities of some domain. When we speak of an entity we normally speak of some aspect of the real world which can be distinguished from other aspects of the real world (Beynon-Davies, 2004). entity

October 21, Graphs15 Entity-relationship model: connection: entity (2) An entity may be a physical object such as a house or a car, an event such as a house sale or a car service, or a concept such as a customer transaction or order. Although the term entity is the one most commonly used, following Chen we should really distinguish between an entity and an entity-type. An entity-type is a category. An entity, strictly speaking, is an instance of a given entity-type. There are usually many instances of an entity- type. Because the term entity-type is somewhat cumbersome, most people tend to use the term entity as a synonym for this term.

October 21, Graphs16 Entity-relationship model: connection: entity (3) Entities can be thought of as nouns. Examples: a computer, an employee, a song, a mathematical theorem. Entities are represented as rectangles. nouns relationship_model

October 21, Graphs17 Entity-relationship model: connection: relationship A relationship captures how two or more entities are related to one another. Relationships can be thought of as verbs, linking two or more nouns. Examples: an owns relationship between a company and a computer, a supervises relationship between an employee and a department, a performs relationship between an artist and a song, a proved relationship between a mathematician and a theorem. Relationships are represented as diamonds, connected by lines to each of the entities in the relationship. verbs

October 21, Graphs18 Entity-relationship model: attributes Entities and relationships can both have attributes. Examples: an employee entity might have a Social Security Number (SSN) attribute; the proved relationship may have a date attribute. Attributes are represented as ellipses connected to their owning entity sets by a line. relationship_model

October 21, Graphs19 Entity-relationship model: graph representation

October 21, Graphs20 Terminology End vertices (or endpoints) of an edge –U and V are the endpoints of a Edges incident on a vertex –a, d, and b are incident on V Adjacent vertices –U and V are adjacent Degree of a vertex –X has degree 5 Parallel edges –h and i are parallel edges Self-loop –j is a self-loop XU V W Z Y a c b e d f g h i j

October 21, Graphs21 The degree of a vertex is the number of edges incident on that vertex. The degree of a graph is the maximum degree of any vertex. Terminology End vertices (or endpoints) of an edge –U and V are the endpoints of a Edges incident on a vertex –a, d, and b are incident on V Adjacent vertices –U and V are adjacent Degree of a vertex –X has degree 5 Parallel edges –h and i are parallel edges Self-loop –j is a self-loop XU V W Z Y a c b e d f g h i j FLVS mod

October 21, Graphs22 P1P1 Terminology (cont.) Path –sequence of alternating vertices and edges –begins with a vertex –ends with a vertex –each edge is preceded and followed by its endpoints Simple path –path such that all its vertices and edges are distinct Examples –P 1 =(V,b,X,h,Z) is a simple path –P 2 =(U,c,W,e,X,g,Y,f,W,d,V) is a path that is not simple XU V W Z Y a c b e d f g hP2P2

October 21, Graphs23 Terminology (cont.) Cycle –circular sequence of alternating vertices and edges –each edge is preceded and followed by its endpoints Simple cycle –cycle such that all its vertices and edges are distinct Examples –C 1 =(V,b,X,g,Y,f,W,c,U,a,  ) is a simple cycle –C 2 =(U,c,W,e,X,g,Y,f,W,d,V,a,  ) is a cycle that is not simple C1C1 XU V W Z Y a c b e d f g hC2C2

October 21, Graphs24 Cycle: an additional definition We also use the term "cycle" to refer to a graph all of whose edges form a single cycle. The notation C n denotes a cycle on n vertices. FLVS C4C4 C5C5 C6C6

October 21, Graphs25 Properties Notation nnumber of vertices mnumber of edges deg(v)degree of vertex v Property 1  v deg(v)  2m Proof: each edge is counted twice Property 2 In an undirected graph with no self-loops and no multiple edges m  n (n  1)  2 Proof: each vertex has degree at most (n  1) What is the bound for a directed graph? Example n  4 m  6 deg(v)  3

October 21, Graphs26 K 4, the complete graph on 4 vertices Example n  4 m  6 deg(v)  3 This is a special graph, the complete graph on 4 vertices, denoted K 4. FLVS-addition

October 21, Graphs27 comparison of Cn and Kn K4K4 K5K5 K6K6 C4C4 C5C5 C6C6

October 21, Graphs28 Main Methods of the Graph ADT Vertices and edges –are positions –store elements Accessor methods –aVertex() –incidentEdges(v) –endVertices(e) –isDirected(e) –origin(e) –destination(e) –opposite(v, e) –areAdjacent(v, w) Update methods –insertVertex(o) –insertEdge(v, w, o) –insertDirectedEdge(v, w, o) –removeVertex(v) –removeEdge(e) Generic methods –numVertices() –numEdges() –vertices() –edges() If e is an edge between v and w, opposite(v,e) returns w Returns an arbitrary vertex

October 21, Graphs29 Edge List Structure Vertex object –element –reference to position in vertex sequence Edge object –element –origin vertex object –destination vertex object –reference to position in edge sequence Vertex sequence –sequence of vertex objects Edge sequence –sequence of edge objects v u w ac b a z d uv w z bcd

October 21, Graphs30 Adjacency List Structure Edge list structure Incidence sequence for each vertex –sequence of references to edge objects of incident edges Augmented edge objects –references to associated positions in incidence sequences of end vertices u v w ab a uv w b

October 21, Graphs31 Adjacency Matrix Structure Edge list structure Augmented vertex objects –Integer key (index) associated with vertex 2D adjacency array –Reference to edge object for adjacent vertices –Null for non nonadjacent vertices The “old fashioned” version just has 0 for no edge and 1 for edge u v w ab  1  2  a uv w 01 2 b

October 21, Graphs32 Asymptotic Performance n vertices, m edges no parallel edges no self-loops Bounds are “big-Oh” Edge List Adjacency List Adjacency Matrix Space n  m n2n2 incidentEdges(v)mdeg(v)n areAdjacent (v, w)mmin(deg(v), deg(w))1 insertVertex(o)11n2n2 insertEdge(v, w, o)111 removeVertex(v)mdeg(v)n2n2 removeEdge(e)111

October 21, Graphs33 Depth-First Search DB A C E

October 21, Graphs34 Outline and Reading Definitions (§6.1) –Subgraph –Connectivity –Spanning trees and forests Depth-first search (§6.3.1) –Algorithm –Example –Properties –Analysis Applications of DFS (§6.5) –Path finding –Cycle finding

October 21, Graphs35 Subgraphs A subgraph S of a graph G is a graph such that –The vertices of S are a subset of the vertices of G –The edges of S are a subset of the edges of G A spanning subgraph of G is a subgraph that contains all the vertices of G Subgraph Spanning subgraph

October 21, Graphs36 Connectivity A graph is connected if there is a path between every pair of vertices A connected component of a graph G is a maximal connected subgraph of G Connected graph Non connected graph with two connected components

October 21, Graphs37 Trees and Forests A (free) tree is an undirected graph T such that –T is connected –T has no cycles This definition of tree is different from the one of a rooted tree A forest is an undirected graph without cycles The connected components of a forest are trees Tree Forest

October 21, Graphs38 Spanning Trees and Forests A spanning tree of a connected graph is a spanning subgraph that is a tree A spanning tree is not unique unless the graph is a tree Spanning trees have applications to the design of communication networks A spanning forest of a graph is a spanning subgraph that is a forest Graph Spanning tree

October 21, Graphs39 Depth-First Search Depth-first search (DFS) is a general technique for traversing a graph A DFS traversal of a graph G –Visits all the vertices and edges of G –Determines whether G is connected –Computes the connected components of G –Computes a spanning forest of G DFS on a graph with n vertices and m edges takes O(n  m ) time DFS can be further extended to solve other graph problems –Find and report a path between two given vertices –Find a cycle in the graph Depth-first search is to graphs what Euler tour is to binary trees

October 21, Graphs40 DFS Algorithm The algorithm uses a mechanism for setting and getting “labels” of vertices and edges Algorithm DFS(G, v) Input graph G and a start vertex v of G Output labeling of the edges of G in the connected component of v as discovery edges and back edges setLabel(v, VISITED) for all e  G.incidentEdges(v) if getLabel(e)  UNEXPLORED w  G.opposite(v,e) if getLabel(w)  UNEXPLORED setLabel(e, DISCOVERY) DFS(G, w) else setLabel(e, BACK) Algorithm DFS(G) Input graph G Output labeling of the edges of G as discovery edges and back edges for all u  G.vertices() setLabel(u, UNEXPLORED) for all e  G.edges() setLabel(e, UNEXPLORED) for all v  G.vertices() if getLabel(v)  UNEXPLORED DFS(G, v)

October 21, Graphs41 Example DB A C ED B A C ED B A C E discovery edge back edge A visited vertex A unexplored vertex unexplored edge

October 21, Graphs42 Example (cont.) DB A C E DB A C E DB A C E D B A C E

October 21, Graphs43 DFS and Maze Traversal The DFS algorithm is similar to a classic strategy for exploring a maze –We mark each intersection, corner and dead end (vertex) visited –We mark each corridor (edge ) traversed –We keep track of the path back to the entrance (start vertex) by means of a rope (recursion stack)

October 21, Graphs44 Properties of DFS Property 1 DFS(G, v) visits all the vertices and edges in the connected component of v Property 2 The discovery edges labeled by DFS(G, v) form a spanning tree of the connected component of v DB A C E

October 21, Graphs45 Analysis of DFS Setting/getting a vertex/edge label takes O(1) time Each vertex is labeled twice –once as UNEXPLORED –once as VISITED Each edge is labeled twice –once as UNEXPLORED –once as DISCOVERY or BACK Method incidentEdges is called once for each vertex DFS runs in O(n  m) time provided the graph is represented by the adjacency list structure –Recall that  v deg(v)  2m

October 21, Graphs46 Path Finding We can specialize the DFS algorithm to find a path between two given vertices u and z using the template method pattern We call DFS(G, u) with u as the start vertex We use a stack S to keep track of the path between the start vertex and the current vertex As soon as destination vertex z is encountered, we return the path as the contents of the stack Algorithm pathDFS(G, v, z) setLabel(v, VISITED) S.push(v) if v  z return S.elements() for all e  G.incidentEdges(v) if getLabel(e)  UNEXPLORED w  opposite(v, e) if getLabel(w)  UNEXPLORED setLabel(e, DISCOVERY) S.push(e) pathDFS(G, w, z) S.pop(){ e gets popped } else setLabel(e, BACK) S.pop() { v gets popped }

October 21, Graphs47 Cycle Finding We can specialize the DFS algorithm to find a simple cycle using the template method pattern We use a stack S to keep track of the path between the start vertex and the current vertex As soon as a back edge (v, w) is encountered, we return the cycle as the portion of the stack from the top to vertex w Algorithm cycleDFS(G, v, z) setLabel(v, VISITED) S.push(v) for all e  G.incidentEdges(v) if getLabel(e)  UNEXPLORED w  opposite(v,e) S.push(e) if getLabel(w)  UNEXPLORED setLabel(e, DISCOVERY) pathDFS(G, w, z) S.pop() else C  new empty stack repeat o  S.pop() C.push(o) until o  w return C.elements() S.pop()

October 21, Graphs48 Breadth-First Search CB A E D L0L0 L1L1 F L2L2

October 21, Graphs49 Outline and Reading Breadth-first search (§6.3.3) –Algorithm –Example –Properties –Analysis –Applications DFS vs. BFS (§6.3.3) –Comparison of applications –Comparison of edge labels

October 21, Graphs50 Breadth-First Search Breadth-first search (BFS) is a general technique for traversing a graph A BFS traversal of a graph G –Visits all the vertices and edges of G –Determines whether G is connected –Computes the connected components of G –Computes a spanning forest of G BFS on a graph with n vertices and m edges takes O(n  m ) time BFS can be further extended to solve other graph problems –Find and report a path with the minimum number of edges between two given vertices –Find a simple cycle, if there is one

October 21, Graphs51 BFS Algorithm The algorithm uses a mechanism for setting and getting “labels” of vertices and edges Algorithm BFS(G, s) L 0  new empty sequence L 0.insertLast(s) setLabel(s, VISITED ) i  0 while  L i.isEmpty() L i  1  new empty sequence for all v  L i.elements() for all e  G.incidentEdges(v) if getLabel(e)  UNEXPLORED w  opposite(v,e) if getLabel(w)  UNEXPLORED setLabel(e, DISCOVERY ) setLabel(w, VISITED ) L i  1.insertLast(w) else setLabel(e, CROSS ) i  i  1 Algorithm BFS(G) Input graph G Output labeling of the edges and partition of the vertices of G for all u  G.vertices() setLabel(u, UNEXPLORED ) for all e  G.edges() setLabel(e, UNEXPLORED ) for all v  G.vertices() if getLabel(v)  UNEXPLORED BFS(G, v)

October 21, Graphs52 Example C B A E D discovery edge cross edge A visited vertex A unexplored vertex unexplored edge L0L0 L1L1 F CB A E D L0L0 L1L1 F CB A E D L0L0 L1L1 F

October 21, Graphs53 Example (cont.) CB A E D L0L0 L1L1 F CB A E D L0L0 L1L1 F L2L2 CB A E D L0L0 L1L1 F L2L2 CB A E D L0L0 L1L1 F L2L2

October 21, Graphs54 Example (cont.) CB A E D L0L0 L1L1 F L2L2 CB A E D L0L0 L1L1 F L2L2 CB A E D L0L0 L1L1 F L2L2

October 21, Graphs55 Properties Notation G s : connected component of s Property 1 BFS(G, s) visits all the vertices and edges of G s Property 2 The discovery edges labeled by BFS(G, s) form a spanning tree T s of G s Property 3 For each vertex v in L i –The path of T s from s to v has i edges –Every path from s to v in G s has at least i edges CB A E D L0L0 L1L1 F L2L2 CB A E D F

October 21, Graphs56 Analysis Setting/getting a vertex/edge label takes O(1) time Each vertex is labeled twice –once as UNEXPLORED –once as VISITED Each edge is labeled twice –once as UNEXPLORED –once as DISCOVERY or CROSS Each vertex is inserted once into a sequence L i Method incidentEdges is called once for each vertex BFS runs in O(n  m) time provided the graph is represented by the adjacency list structure –Recall that  v deg(v)  2m

October 21, Graphs57 Applications Using the template method pattern, we can specialize the BFS traversal of a graph G to solve the following problems in O(n  m) time –Compute the connected components of G –Compute a spanning forest of G –Find a simple cycle in G, or report that G is a forest –Given two vertices of G, find a path in G between them with the minimum number of edges, or report that no such path exists

October 21, Graphs58 DFS vs. BFS CB A E D L0L0 L1L1 F L2L2 CB A E D F DFSBFS ApplicationsDFSBFS Spanning forest, connected components, paths, cycles  Shortest paths  Biconnected components 

October 21, Graphs59 DFS vs. BFS (cont.) Back edge (v,w) –w is an ancestor of v in the tree of discovery edges Cross edge (v,w) –w is in the same level as v or in the next level in the tree of discovery edges CB A E D L0L0 L1L1 F L2L2 CB A E D F DFSBFS