0% found this document useful (0 votes)
17 views41 pages

Lecture 02 BFS

Uploaded by

asif01cse
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views41 pages

Lecture 02 BFS

Uploaded by

asif01cse
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 41

Graph & BFS

Dr. Md Masbaul Alam Polash


Associate Professor
Computer Science and Engineering
Jagannath University
Graph & BFS / Slide 2

Graphs
 Extremely useful tool in modeling problems
 Consist of:
 Vertices
Vertices can be
 Edges D considered “sites”
E
or locations.
C
A Edges represent
F connections.
B
Vertex
Edge
Graph & BFS / Slide 3

Application
• Each vertex represents a city
• Each edge represents a direct
flight between two cities
• A query on direct flights = a
query on whether an edge exists
• A query on how to get to a
location = does a path exist from A
to B
• We can even associate costs to
edges (weighted graphs), then ask
“what is the cheapest path from A
to B”
Graph & BFS / Slide 4

Definition
 A graph G=(V, E) consists a set of vertices, V, and a set of edges, E.
 Each edge is a pair of (v, w), where v, w belongs to V
 If the pair is unordered, the graph is undirected; otherwise it is directed

{a,b} {a,c}

{b,d} {c,d}

{b,e} {c,f}

{e,f}

An undirected graph
Graph & BFS / Slide 5

Terminology
1. If v1 and v2 are connected, they are said to be
adjacent vertices
 v1 and v2 are endpoints of the edge {v1, v2}

2. If an edge e is connected to v, then v is said to


be incident on e. Also, the edge e is said to be
incident on v.
Graph & BFS / Slide 6

Terminology
 In directed graphs, edges have direction
 This means that {v ,v } ≠ {v ,v } . Directed
1 2 2 1
graphs are drawn with arrows between
edges.
 This means {A,B} only, not {B,A}

A B
Graph & BFS / Slide 7

Graph Variations
 Variations:
 A connected graph has a path from every
vertex to every other
 A complete graph is a graph in which each pair
of vertices is connected by an edge
Graph & BFS / Slide 8

Graph Variations
 Variations:
 In an undirected graph:
Edge (u,v) = edge (v,u)

No self-loops

 In a directed graph:
Edge (u,v) goes from vertex u to vertex v, notated uv
Graph & BFS / Slide 9

Graph Variations
 More variations:
 A weighted graph associates weights with
either the edges or the vertices
E.g., a road map: edges might be weighted w/ distance

 A multigraph allows multiple edges between


the same vertices
E.g., the call graph in a program (a function can get called

from multiple points in another function)


Graph & BFS / Slide 10

Graphs
 We will typically express running times in
terms of |E| and |V|
 If |E|  |V|2 the graph is dense
 If |E|  |V| the graph is sparse
Graph & BFS / Slide 11

Graph Representation
 Two popular computer representations of a
graph. Both represent the vertex set and
the edge set, but in different ways.
1. Adjacency Matrix
Use a 2D matrix to represent the graph

2. Adjacency List
Use a 1D array of linked lists
Adjacency Matrix
Graph & BFS / Slide 12

 2D array A[0..n-1, 0..n-1], where n is the number of vertices in the graph


 Each row and column is indexed by the vertex id
 e,g a=0, b=1, c=2, d=3, e=4
 A[i][j]=1 if there is an edge connecting vertices i and j; otherwise, A[i][j]=0
 The storage requirement is Θ(n2). It is not efficient if the graph has few edges. An
adjacency matrix is an appropriate representation if the graph is dense: |E|=Θ(|V|
2
)
 We can detect in O(1) time whether two vertices are connected.
Graph & BFS / Slide 13

Adjacency List

 If the graph is not dense, in other words, sparse, a better solution is an


adjacency list
 The adjacency list is an array A[0..n-1] of lists, where n is the number of
vertices in the graph.
 Each array entry is indexed by the vertex id
 Each list A[i] stores the ids of the vertices adjacent to vertex i
Graph & BFS / Slide 14

Adjacency Matrix Example

0 0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 1 0
8
1 0 0 1 1 0 0 0 1 0 1
2 9 2 0 1 0 0 1 0 0 0 1 0
1 3 0 1 0 0 1 1 0 0 0 0
4 0 0 1 1 0 0 0 0 0 0
3 7
6 5 0 0 0 1 0 0 1 0 0 0
4 6 0 0 0 0 0 1 0 1 0 0
5
7 0 1 0 0 0 0 1 0 0 0
8 1 0 1 0 0 0 0 0 0 1
9 0 1 0 0 0 0 0 0 1 0
Graph & BFS / Slide 15

Adjacency List Example

0 8
0
1 2 3 7 9
8
2 1 4 8

2 9 3 1 4 5

1 4 2 3
5 3 6
3 7
6 5 7
6
4 7 1 6
5
8 0 2 9
9 1 8
Graph & BFS / Slide 16

Storage of Adjacency List


 The array takes up Θ(n) space
 Define degree of v, deg(v), to be the number of edges
incident to v. Then, the total space to store the graph is
proportional to:

 deg(v)
vertex v
Graph & BFS / Slide 17

Storage of Adjacency List


 An edge e={u,v} of the graph contributes a count of 1 to
deg(u) and contributes a count 1 to deg(v)
 So, Σvertex vdeg(v) = 2m, where m is the total number of edges
 In all, the adjacency list takes up Θ(n+m) space
 However, one cannot tell in O(1) time whether two vertices
are connected
Graph & BFS / Slide 18

Adjacency List vs. Matrix


 Adjacency List
 More compact than adjacency matrices if graph has few
edges
 Requires more time to find if an edge exists

 Adjacency Matrix
 Always require n2 space
This can waste a lot of space if the number of edges are sparse
 Can quickly find if an edge exists
Graph & BFS / Slide 19

Path between Vertices


 A path is a sequence of vertices (v0, v1, v2,…
vk) such that:
 For 0 ≤ i < k, {vi, vi+1} is an edge
Note: a path is allowed to go through the same vertex or the same
edge any number of times!

 The length of a path is the number of edges


on the path
Graph & BFS / Slide 20

Types of paths

A path is simple if and only if it does


not contain a vertex more than once.
A path is a cycle if and only if v0= vk
The beginning and end are the same vertex!

 A path contains a cycle as its sub-path if


some vertex appears twice or more
Graph & BFS / Slide 21

Path Examples Are these paths?

Any cycles?

What is the path’s length?

1. {a,c,f,e}

2. {a,b,d,c,f,e}

3. {a, c, d, b, d, c, f, e}

4. {a,c,d,b,a}

5. {a,c,f,e,b,d,c,a}
Graph & BFS / Slide 22

Graph Traversal
 Given a graph representation and a vertex s
in the graph, find all paths from s to other
vertices
 Two common graph traversal algorithms
 Breadth-First Search (BFS)
Find the shortest paths in an unweighted graph

 Depth-First Search (DFS)


 Topological sort

 Find strongly connected components


Graph & BFS / Slide 23

BFS and Shortest Path Problem


 Given any source vertex s, BFS visits the other vertices at
increasing distances away from s. In doing so, BFS
discovers paths from s to other vertices
 What do we mean by “distance”? The number of edges on
a path from s
Example
0
Consider s=vertex 1
8
2
Nodes at distance 1?
1 2 s 9 1 2, 3, 7, 9
1
1
Nodes at distance 2?
3 7 8, 6, 5, 4
1
6 2
4 Nodes at distance 3?
5
2 2 0
Graph & BFS / Slide 24

Graph Searching
 Given: a graph G = (V, E), directed or
undirected
 Goal: methodically explore every vertex and
every edge
 Ultimately: build a tree on the graph
 Pick a vertex as the root
 Choose certain edges to produce a tree
 Note: might also build a forest if graph is not
connected
Graph & BFS / Slide 25

Breadth-First Search
 “Explore” a graph, turning it into a tree
 One vertex at a time
 Expand frontier of explored vertices across the
breadth of the frontier
 Builds a tree over the graph
 Pick a source vertex to be the root
 Find (“discover”) its children, then their
children, etc.
Graph & BFS / Slide 26

Breadth-First Search
 Again will associate vertex “colors” to guide the
algorithm
 White vertices have not been discovered
All vertices start out white

 Grey vertices are discovered but not fully explored


They may be adjacent to white vertices

 Black vertices are discovered and fully explored


They are adjacent only to black and gray vertices

 Explore vertices by scanning adjacency list of grey


vertices
Graph & BFS / Slide 27

Breadth-First Search
BFS(G, s) {
initialize vertices;
Q = {s}; // Q is a queue (duh); initialize to s
while (Q not empty) {
u = RemoveTop(Q);
for each v  u->adj {
if (v->color == WHITE)
v->color = GREY;
v->d = u->d + 1; What does v->d represent?
v->p = u; What does v->p represent?
Enqueue(Q, v);
}
u->color = BLACK;
}
}
Graph & BFS / Slide 28

Breadth-First Search: Example


r s t u

   

   
v w x y
Graph & BFS / Slide 29

Breadth-First Search: Example


r s t u

 0  

   
v w x y

Q: s
Graph & BFS / Slide 30

Breadth-First Search: Example


r s t u

1 0  

 1  
v w x y

Q: w r
Graph & BFS / Slide 31

Breadth-First Search: Example


r s t u

1 0 2 

 1 2 
v w x y

Q: r t x
Graph & BFS / Slide 32

Breadth-First Search: Example


r s t u

1 0 2 

2 1 2 
v w x y

Q: t x v
Graph & BFS / Slide 33

Breadth-First Search: Example


r s t u

1 0 2 3

2 1 2 
v w x y

Q: x v u
Graph & BFS / Slide 34

Breadth-First Search: Example


r s t u

1 0 2 3

2 1 2 3
v w x y

Q: v u y
Graph & BFS / Slide 35

Breadth-First Search: Example


r s t u

1 0 2 3

2 1 2 3
v w x y

Q: u y
Graph & BFS / Slide 36

Breadth-First Search: Example


r s t u

1 0 2 3

2 1 2 3
v w x y

Q: y
Graph & BFS / Slide 37

Breadth-First Search: Example


r s t u

1 0 2 3

2 1 2 3
v w x y

Q: Ø
Graph & BFS / Slide 38

Exercise
 Source Vertex: G
Graph & BFS / Slide 39

BFS: The Code Again


BFS(G, s) {
initialize vertices; Touch every vertex: O(V)
Q = {s};
while (Q not empty) {
u = RemoveTop(Q); u = every vertex, but only once
for each v  u->adj { (Why?)
if (v->color == WHITE)
So v = every vertex v->color = GREY;
that appears in v->d = u->d + 1;
some other vert’sv->p = u;
adjacency list Enqueue(Q, v);
}
u->color = BLACK; What will be the running time?
} Total running time: O(V+E)
}
Graph & BFS / Slide 40

Breadth-First Search: Properties


 BFS calculates the shortest-path distance to the
source node
 Shortest-path distance (s,v) = minimum number of
edges from s to v, or  if v not reachable from s
 Proof given in the book (p. 472-5)
 BFS builds breadth-first tree, in which paths to
root represent shortest paths in G
 Thus can use BFS to calculate shortest path from one
vertex to another in O(V+E) time
Thank You

You might also like