october 21, 200819. graphs1 graphs cs 221 (slides from textbook author)

59
October 21, 2008 19. Graphs 1 Graphs CS 221 (slides from textbook author)

Upload: brice-poole

Post on 05-Jan-2016

218 views

Category:

Documents


2 download

TRANSCRIPT

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

October 21, 2008 19. Graphs 1

Graphs

CS 221

(slides from textbook author)

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

October 21, 2008 19. Graphs 2

Graphs

ORD

DFW

SFO

LAX

802

1743

1843

1233

337

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

October 21, 2008 19. Graphs 3

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

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

October 21, 2008 19. Graphs 4

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

MIADFW

SFO

LAX

LGA

HNL

849

802

13871743

1843

10991120

1233337

2555

142

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

October 21, 2008 19. Graphs 5

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

ORD PVDflight

AA 1206

ORD PVD849

miles

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

October 21, 2008 19. Graphs 6

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

ORD PVDflight

AA 1206

ORD PVD849

miles

These are edges from

two distinct graphs. FLVS-mod

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

October 21, 2008 19. Graphs 7

ORD PVD

MIADFW

SFO

LAX

LGA

HNL

AA1206

UA

7654

AA5432AA8901

AA4567

UA98UA567UA6789

UA

45UA1234

AA67

ORD PVD

MIADFW

SFO

LAX

LGA

HNL

849

802

13871743

1843

10991120

1233

337

2555

142

FLVS

Undirected graph

Directed graph

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

October 21, 2008 19. Graphs 8

ORD PVD

MIADFW

SFO

LAX

LGA

HNL

AA1206

UA

7654

AA5432AA8901

AA4567

UA98UA567UA6789

UA

45UA1234

AA67

FLVS

Another directed graph

ORD PVD

MIADFW

SFO

LAX

LGA

HNL

AA1206

UA

7654

AA5432AA8901

AA4567

UA98UA567UA6789

UA

45UA1234

AA67

Directed graph

AA1207

UA1235

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

October 21, 2008 19. Graphs 9

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 Forest Walnut Pleasant

FLVS

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

October 21, 2008 19. Graphs 10

John

DavidPaul

brown.edu

cox.net

cs.brown.edu

att.netqwest.net

math.brown.edu

cslab1bcslab1aApplications

• Electronic circuits– Printed circuit board

– Integrated circuit

• Transportation networks– Highway network

– Flight network

• Computer networks– Local area network

– Internet

– Web

• Databases– Entity-relationship diagram

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

October 21, 2008 19. Graphs 11

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.

• http://en.wikipedia.org/wiki/Entity-relationship_model

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

October 21, 2008 19. Graphs 12

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".

• http://en.wikipedia.org/wiki/Entity-relationship_model

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

October 21, 2008 19. Graphs 13

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.

• http://en.wikipedia.org/wiki/Entity-relationship_model

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

October 21, 2008 19. Graphs 14

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).

• http://en.wikipedia.org/wiki/Entity-relationship_model

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

October 21, 2008 19. Graphs 15

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.

• http://en.wikipedia.org/wiki/Entity-relationship_model

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

October 21, 2008 19. Graphs 16

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.

• http://en.wikipedia.org/wiki/Entity-relationship_model

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

October 21, 2008 19. Graphs 17

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.

• http://en.wikipedia.org/wiki/Entity-relationship_model

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

October 21, 2008 19. Graphs 18

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.

• http://en.wikipedia.org/wiki/Entity-relationship_model

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

October 21, 2008 19. Graphs 19

Entity-relationship model: graph representation

http://en.wikipedia.org/wiki/Entity-relationship_model

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

October 21, 2008 19. Graphs 20

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

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

October 21, 2008 19. Graphs 21

The degree of a vertexis the number of edgesincident on that vertex.The degree of a graphis 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

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

October 21, 2008 19. Graphs 22

P1

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– P1=(V,b,X,h,Z) is a simple path– P2=(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

hP2

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

October 21, 2008 19. Graphs 23

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– C1=(V,b,X,g,Y,f,W,c,U,a,) is a simple

cycle

– C2=(U,c,W,e,X,g,Y,f,W,d,V,a,) is a cycle that is not simple

C1

XU

V

W

Z

Y

a

c

b

e

d

f

g

hC2

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

October 21, 2008 19. Graphs 24

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 Cn denotes a cycle on n vertices. FLVS

C4

C5

C6

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

October 21, 2008 19. Graphs 25

PropertiesNotation

n number of vertices

m number of edges

deg(v) degree of vertex v

Property 1

v deg(v) 2m

Proof: each edge is counted twice

Property 2In an undirected graph with no

self-loops and no multiple edges

m n (n 1)2Proof: each vertex has degree at

most (n 1)

What is the bound for a directed graph?

Example

n 4

m 6

deg(v) 3

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

October 21, 2008 19. Graphs 26

K4, 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 K4.

FLVS-addition

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

October 21, 2008 19. Graphs 27

comparison of Cn and Kn

K4

K5

K6

C4

C5

C6

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

October 21, 2008 19. Graphs 28

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

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

October 21, 2008 19. Graphs 29

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

a c

b

a

zd

u v w z

b c d

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

October 21, 2008 19. Graphs 30

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

a b

a

u v w

b

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

October 21, 2008 19. Graphs 31

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

a b

0 1 2

0

1

2 a

u v w0 1 2

b

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

October 21, 2008 19. Graphs 32

Asymptotic Performance• n vertices, m edges

• no parallel edges

• no self-loops

• Bounds are “big-Oh”

EdgeList

AdjacencyList

Adjacency Matrix

Space n m n m n2

incidentEdges(v) m deg(v) n

areAdjacent (v, w) m min(deg(v), deg(w)) 1

insertVertex(o) 1 1 n2

insertEdge(v, w, o) 1 1 1

removeVertex(v) m deg(v) n2

removeEdge(e) 1 1 1

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

October 21, 2008 19. Graphs 33

Depth-First Search

DB

A

C

E

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

October 21, 2008 19. Graphs 34

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

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

October 21, 2008 19. Graphs 35

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

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

October 21, 2008 19. Graphs 36

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

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

October 21, 2008 19. Graphs 37

Trees and Forests• A (free) tree is an undirected

graph T such that– T is connected– T has no cyclesThis 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

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

October 21, 2008 19. Graphs 38

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

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

October 21, 2008 19. Graphs 39

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(nm ) 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

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

October 21, 2008 19. Graphs 40

DFS Algorithm• The algorithm uses a mechanism for setting

and getting “labels” of vertices and edgesAlgorithm 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)

UNEXPLOREDsetLabel(e, DISCOVERY)DFS(G, w)

elsesetLabel(e, BACK)

Algorithm DFS(G)Input graph GOutput labeling of the edges of G

as discovery edges andback 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)

UNEXPLOREDDFS(G, v)

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

October 21, 2008 19. Graphs 41

Example

DB

A

C

E

DB

A

C

E

DB

A

C

E

discovery edgeback edge

A visited vertex

A unexplored vertex

unexplored edge

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

October 21, 2008 19. Graphs 42

Example (cont.)

DB

A

C

E

DB

A

C

E

DB

A

C

E

DB

A

C

E

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

October 21, 2008 19. Graphs 43

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)

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

October 21, 2008 19. Graphs 44

Properties of DFSProperty 1

DFS(G, v) visits all the vertices and edges in the connected component of v

Property 2The discovery edges labeled by DFS(G, v) form a spanning tree of the connected component of v

DB

A

C

E

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

October 21, 2008 19. Graphs 45

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

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

October 21, 2008 19. Graphs 46

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 }

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

October 21, 2008 19. Graphs 47

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) UNEXPLOREDw opposite(v,e)S.push(e)if getLabel(w) UNEXPLORED

setLabel(e, DISCOVERY)pathDFS(G, w, z)S.pop()

elseC new empty stackrepeat

o S.pop()C.push(o)

until o wreturn C.elements()

S.pop()

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

October 21, 2008 19. Graphs 48

Breadth-First Search

CB

A

E

D

L0

L1

FL2

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

October 21, 2008 19. Graphs 49

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

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

October 21, 2008 19. Graphs 50

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(nm ) 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

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

October 21, 2008 19. Graphs 51

BFS Algorithm• The algorithm uses a mechanism

for setting and getting “labels” of vertices and edges

Algorithm BFS(G, s)L0 new empty sequenceL0.insertLast(s)setLabel(s, VISITED)i 0 while Li.isEmpty()

Li 1 new empty sequence for all v Li.elements()

for all e G.incidentEdges(v) if getLabel(e) UNEXPLORED

w opposite(v,e)if getLabel(w)

UNEXPLOREDsetLabel(e, DISCOVERY)setLabel(w, VISITED)Li 1.insertLast(w)

elsesetLabel(e, CROSS)

i i 1

Algorithm BFS(G)Input graph GOutput 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)

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

October 21, 2008 19. Graphs 52

Example

CB

A

E

D

discovery edgecross edge

A visited vertex

A unexplored vertex

unexplored edge

L0

L1

F

CB

A

E

D

L0

L1

F

CB

A

E

D

L0

L1

F

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

October 21, 2008 19. Graphs 53

Example (cont.)

CB

A

E

D

L0

L1

F

CB

A

E

D

L0

L1

FL2

CB

A

E

D

L0

L1

FL2

CB

A

E

D

L0

L1

FL2

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

October 21, 2008 19. Graphs 54

Example (cont.)

CB

A

E

D

L0

L1

FL2

CB

A

E

D

L0

L1

FL2

CB

A

E

D

L0

L1

FL2

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

October 21, 2008 19. Graphs 55

PropertiesNotation

Gs: connected component of s

Property 1BFS(G, s) visits all the vertices and edges of Gs

Property 2The discovery edges labeled by BFS(G, s) form a spanning tree Ts of Gs

Property 3For each vertex v in Li

– The path of Ts from s to v has i edges – Every path from s to v in Gs has at least i

edgesCB

A

E

D

L0

L1

FL2

CB

A

E

D

F

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

October 21, 2008 19. Graphs 56

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 Li • 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

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

October 21, 2008 19. Graphs 57

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

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

October 21, 2008 19. Graphs 58

DFS vs. BFS

CB

A

E

D

L0

L1

FL2

CB

A

E

D

F

DFS BFS

Applications DFS BFSSpanning forest, connected components, paths, cycles

Shortest paths

Biconnected components

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

October 21, 2008 19. Graphs 59

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

L0

L1

FL2

CB

A

E

D

F

DFS BFS