SlideShare a Scribd company logo
1 of 19
Reference: Data Structures and Algorithm
Analysis in C++ by Weiss Ch. 9
Prepared by Nisha Soms
Graph Traversals
2
Graphs
2
 graph: A data structure containing:
 a set of vertices V, (sometimes called nodes)
 a set of edges E, where an edge
represents a connection between 2 vertices.
 Graph G = (V, E)
 an edge is a pair (v, w) where v, w are in V
 the graph at right:
 V = {a, b, c, d}
 E = {(a, c), (b, c), (b, d), (c, d)}
 degree: number of edges touching a given vertex.
 at right: a=1, b=2, c=3, d=2
a
c
b
d
3
Graph examples
3
 Web pages with links
 Methods in a program that call each other
 Road maps (e.g., Google maps)
 Airline routes
 Facebook friends
 Course pre-requisites
 Family trees
 Paths through a maze
4
Paths
4
 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, one path from V to Z: {b, h} or {V, X, Z}
 What are two paths from U to Y?
 path length: Number of vertices
or edges contained in the path.
 neighbor or adjacent: Two vertices
connected directly by an edge.
 example: V and X
X
U
V
W
Z
Y
a
c
b
e
d
f
g
h
5
Reachability & Connectedness
5
 reachable: Vertex a is reachable from b
if a path exists from a to b.
 connected: A graph is connected if every
vertex is reachable from any other.
 strongly connected: When every vertex
has an edge to every other vertex.
X
U
V
W
Z
Y
a
c
b
e
d
f
g
h
a
c
b
d
a
c
b
d
e
6
Loops and cycles
6
 cycle: A path that begins and ends at the same node.
 example: {b, g, f, c, a} or {V, X, Y, W, U, V}.
 example: {c, d, a} or {U, W, V, U}.
 acyclic graph: One that does
not contain any cycles.
 loop: An edge directly from
a node to itself.
 Many graphs don't allow loops.
X
U
V
W
Z
Y
a
c
b
e
d
f
g
h
7
Weighted graphs
7
 weight: Cost associated with a given edge.
 Some graphs have weighted edges, and some are
unweighted.
 Edges in an unweighted graph can be thought of as having
equal weight (e.g. all 0, or all 1, etc.)
 Most graphs do not allow negative weights.
 example: graph of airline flights, weighted by miles
between cities:
ORD
PVD
MIA
DFW
SFO
LAX
LGA
HNL
8
Directed graphs
8
 directed graph ("digraph"): One where edges are one-way
connections between vertices.
 If graph is directed, a vertex has a separate in/out degree.
 A digraph can be weighted or unweighted.
 Is the graph below connected? Why or why not?
a
d
b
e
g
f
c
9
Linked Lists, Trees, Graphs
9
 A binary tree is a graph with some restrictions:
 The tree is an unweighted, directed, acyclic graph (DAG).
 Each node's in-degree is at most 1, and out-degree is at most
2.
 There is exactly one path from the root to every node.
 A linked list is also a graph:
 Unweighted DAG.
 In/out degree of at most 1 for all nodes.
F
B
A E
K
H
J
G
A B D
C
10
Searching for paths
10
 Searching for a path from one vertex to another:
 Sometimes, we just want any path (or want to know there is a
path).
 Sometimes, we want to minimize path length (# of edges).
 Sometimes, we want to minimize path cost (sum of edge
weights).
 What is the shortest path from MIA to SFO?
Which path has the minimum cost?
ORD
PVD
MIA
DFW
SFO
LAX
LGA
HNL
$500
11
Depth-first search
11
 Depth-first search (DFS): Finds a path between two
vertices by exploring each possible path as far as possible
before backtracking.
 Often implemented recursively.
 Many graph algorithms involve visiting or marking vertices.
 Depth-first paths from a to all vertices (assuming ABC edge
order):
 to b: {a, b}
 to c: {a, b, e, f, c}
 to d: {a, d}
 to e: {a, b, e}
 to f: {a, b, e, f}
a
e
b c
h
g
d f
12
DFS pseudocode
12
function dfs(v1, v2):
dfs(v1, v2, { }).
function dfs(v1, v2, path):
path += v1.
mark v1 as visited.
if v1 is v2:
a path is found!
for each unvisited neighbor n of v1:
if dfs(n, v2, path) finds a path: a path is found!
path -= v1. // path is not found.
a
e
b c
h
g
d f
13
DFS observations
13
 discovery: DFS is guaranteed to
find a path if one exists.
 retrieval: It is easy to retrieve exactly
what the path is (the sequence of
edges taken) if we find it
 optimality: not optimal. DFS is guaranteed to find a path,
not necessarily the best/shortest path
 Example: dfs(a, f) returns {a, d, c, f} rather than {a, d, f}.
a
e
b c
h
g
d f
14
Breadth-first search
14
 Breadth-first search (BFS): Finds a path between two
nodes by taking one step down all paths and then
immediately backtracking.
 Often implemented by maintaining a queue of vertices to visit.
 BFS always returns the shortest path (the one with the
fewest edges) between the start and the end vertices.
 to b: {a, b}
 to c: {a, e, f, c}
 to d: {a, d}
 to e: {a, e}
 to f: {a, e, f}
 to g: {a, d, g}
 to h: {a, d, h}
a
e
b c
h
g
d f
15
BFS pseudocode
15
function bfs(v1, v2):
queue := {v1}.
mark v1 as visited.
while queue is not empty:
v := queue.removeFirst().
if v is v2:
a path is found!
for each unvisited neighbor n of v:
mark n as visited.
queue.addLast(n).
// path is not found.
a
e
b c
h
g
d f
16
BFS observations
16
 Optimality:
 always finds the shortest path (fewest edges).
 In unweighted graphs, finds optimal cost path.
 In weighted graphs, not always optimal cost.
 Retrieval: harder to reconstruct the actual sequence of
vertices or edges in the path 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
 solution: We can keep track of the path by storing
predecessors for each vertex (each vertex can store a
reference to a previous vertex).
 DFS uses less memory than BFS, easier to reconstruct the
a
e
b c
h
g
d f
17
DFS, BFS runtime
17
 What is the expected runtime of DFS and BFS, in terms of
the number of vertices V and the number of edges E ?
 Answer: O(|V| + |E|)
 where |V| = number of vertices, |E| = number of edges
 Must potentially visit every node and/or examine every edge
once.
18
BFS that finds path
18
function bfs(v1, v2):
queue := {v1}.
mark v1 as visited.
while queue is not empty:
v := queue.removeFirst().
if v is v2:
a path is found! (reconstruct it by following .prev back
to v1.)
for each unvisited neighbor n of v:
mark n as visited. (set n.prev = v.)
queue.addLast(n).
// path is not found.
a
e
b c
h
g
d f
prev
Thank you

More Related Content

What's hot

Bellman ford algorithm
Bellman ford algorithmBellman ford algorithm
Bellman ford algorithmRuchika Sinha
 
Lecture 14 run time environment
Lecture 14 run time environmentLecture 14 run time environment
Lecture 14 run time environmentIffat Anjum
 
Unit 3 graph chapter6
Unit 3  graph chapter6Unit 3  graph chapter6
Unit 3 graph chapter6DrkhanchanaR
 
Prim Algorithm and kruskal algorithm
Prim Algorithm and kruskal algorithmPrim Algorithm and kruskal algorithm
Prim Algorithm and kruskal algorithmAcad
 
Breadth First Search & Depth First Search
Breadth First Search & Depth First SearchBreadth First Search & Depth First Search
Breadth First Search & Depth First SearchKevin Jadiya
 
Hashing Technique In Data Structures
Hashing Technique In Data StructuresHashing Technique In Data Structures
Hashing Technique In Data StructuresSHAKOOR AB
 
RECURSION IN C
RECURSION IN C RECURSION IN C
RECURSION IN C v_jk
 
Graph theory concepts complex networks presents-rouhollah nabati
Graph theory concepts   complex networks presents-rouhollah nabatiGraph theory concepts   complex networks presents-rouhollah nabati
Graph theory concepts complex networks presents-rouhollah nabatinabati
 
Graphs in Data Structure
 Graphs in Data Structure Graphs in Data Structure
Graphs in Data Structurehafsa komal
 
Graph Theory Introduction
Graph Theory IntroductionGraph Theory Introduction
Graph Theory IntroductionMANISH T I
 

What's hot (20)

Bellman ford algorithm
Bellman ford algorithmBellman ford algorithm
Bellman ford algorithm
 
Graph data structure and algorithms
Graph data structure and algorithmsGraph data structure and algorithms
Graph data structure and algorithms
 
Lecture 14 run time environment
Lecture 14 run time environmentLecture 14 run time environment
Lecture 14 run time environment
 
Hamilton path and euler path
Hamilton path and euler pathHamilton path and euler path
Hamilton path and euler path
 
Unit 3 graph chapter6
Unit 3  graph chapter6Unit 3  graph chapter6
Unit 3 graph chapter6
 
Dijkstra
DijkstraDijkstra
Dijkstra
 
Data Structures- Hashing
Data Structures- Hashing Data Structures- Hashing
Data Structures- Hashing
 
Prim Algorithm and kruskal algorithm
Prim Algorithm and kruskal algorithmPrim Algorithm and kruskal algorithm
Prim Algorithm and kruskal algorithm
 
Planar graph
Planar graphPlanar graph
Planar graph
 
Hash table
Hash tableHash table
Hash table
 
DFS and BFS
DFS and BFSDFS and BFS
DFS and BFS
 
Data Structures - Lecture 10 [Graphs]
Data Structures - Lecture 10 [Graphs]Data Structures - Lecture 10 [Graphs]
Data Structures - Lecture 10 [Graphs]
 
Breadth First Search & Depth First Search
Breadth First Search & Depth First SearchBreadth First Search & Depth First Search
Breadth First Search & Depth First Search
 
Chapter1p1
Chapter1p1Chapter1p1
Chapter1p1
 
Hashing Technique In Data Structures
Hashing Technique In Data StructuresHashing Technique In Data Structures
Hashing Technique In Data Structures
 
RECURSION IN C
RECURSION IN C RECURSION IN C
RECURSION IN C
 
Graph theory concepts complex networks presents-rouhollah nabati
Graph theory concepts   complex networks presents-rouhollah nabatiGraph theory concepts   complex networks presents-rouhollah nabati
Graph theory concepts complex networks presents-rouhollah nabati
 
Graphs in Data Structure
 Graphs in Data Structure Graphs in Data Structure
Graphs in Data Structure
 
Single linked list
Single linked listSingle linked list
Single linked list
 
Graph Theory Introduction
Graph Theory IntroductionGraph Theory Introduction
Graph Theory Introduction
 

Similar to Depth First Search and Breadth First Search

Talk on Graph Theory - I
Talk on Graph Theory - ITalk on Graph Theory - I
Talk on Graph Theory - IAnirudh Raja
 
22-graphs1-dfs-bfs.ppt
22-graphs1-dfs-bfs.ppt22-graphs1-dfs-bfs.ppt
22-graphs1-dfs-bfs.pptKarunaBiswas3
 
22-graphs1-dfs-bfs.ppt odiehehei7hoh97ho7bi6vi6go7gp
22-graphs1-dfs-bfs.ppt odiehehei7hoh97ho7bi6vi6go7gp22-graphs1-dfs-bfs.ppt odiehehei7hoh97ho7bi6vi6go7gp
22-graphs1-dfs-bfs.ppt odiehehei7hoh97ho7bi6vi6go7gpchandrashekarr799
 
Tn 110 lecture 8
Tn 110 lecture 8Tn 110 lecture 8
Tn 110 lecture 8ITNet
 
B.tech admission in india
B.tech admission in indiaB.tech admission in india
B.tech admission in indiaEdhole.com
 
Graphical reprsentation dsa (DATA STRUCTURE ALGORITHM)
Graphical reprsentation dsa (DATA STRUCTURE ALGORITHM)Graphical reprsentation dsa (DATA STRUCTURE ALGORITHM)
Graphical reprsentation dsa (DATA STRUCTURE ALGORITHM)Abdul Naqashbandi
 
Graph ASS DBATU.pptx
Graph ASS DBATU.pptxGraph ASS DBATU.pptx
Graph ASS DBATU.pptxARVIND SARDAR
 
Graphs in data structures
Graphs in data structuresGraphs in data structures
Graphs in data structuresSavit Chandra
 
graph.pptx
graph.pptxgraph.pptx
graph.pptxhijigaf
 
Lecture 5b graphs and hashing
Lecture 5b graphs and hashingLecture 5b graphs and hashing
Lecture 5b graphs and hashingVictor Palmar
 
lec 09-graphs-bfs-dfs.ppt
lec 09-graphs-bfs-dfs.pptlec 09-graphs-bfs-dfs.ppt
lec 09-graphs-bfs-dfs.pptTalhaFarooqui12
 

Similar to Depth First Search and Breadth First Search (20)

Talk on Graph Theory - I
Talk on Graph Theory - ITalk on Graph Theory - I
Talk on Graph Theory - I
 
22-graphs1-dfs-bfs.ppt
22-graphs1-dfs-bfs.ppt22-graphs1-dfs-bfs.ppt
22-graphs1-dfs-bfs.ppt
 
22-graphs1-dfs-bfs.ppt odiehehei7hoh97ho7bi6vi6go7gp
22-graphs1-dfs-bfs.ppt odiehehei7hoh97ho7bi6vi6go7gp22-graphs1-dfs-bfs.ppt odiehehei7hoh97ho7bi6vi6go7gp
22-graphs1-dfs-bfs.ppt odiehehei7hoh97ho7bi6vi6go7gp
 
09-graphs.ppt
09-graphs.ppt09-graphs.ppt
09-graphs.ppt
 
Graph therory
Graph theroryGraph therory
Graph therory
 
Tn 110 lecture 8
Tn 110 lecture 8Tn 110 lecture 8
Tn 110 lecture 8
 
Breadth first search
Breadth first searchBreadth first search
Breadth first search
 
graph ASS (1).ppt
graph ASS (1).pptgraph ASS (1).ppt
graph ASS (1).ppt
 
Graphs
GraphsGraphs
Graphs
 
B.tech admission in india
B.tech admission in indiaB.tech admission in india
B.tech admission in india
 
Graphical reprsentation dsa (DATA STRUCTURE ALGORITHM)
Graphical reprsentation dsa (DATA STRUCTURE ALGORITHM)Graphical reprsentation dsa (DATA STRUCTURE ALGORITHM)
Graphical reprsentation dsa (DATA STRUCTURE ALGORITHM)
 
19-graph1 (1).ppt
19-graph1 (1).ppt19-graph1 (1).ppt
19-graph1 (1).ppt
 
Graph ASS DBATU.pptx
Graph ASS DBATU.pptxGraph ASS DBATU.pptx
Graph ASS DBATU.pptx
 
Graphs in data structures
Graphs in data structuresGraphs in data structures
Graphs in data structures
 
Graphs
GraphsGraphs
Graphs
 
graph.pptx
graph.pptxgraph.pptx
graph.pptx
 
Lecture 5b graphs and hashing
Lecture 5b graphs and hashingLecture 5b graphs and hashing
Lecture 5b graphs and hashing
 
lec 09-graphs-bfs-dfs.ppt
lec 09-graphs-bfs-dfs.pptlec 09-graphs-bfs-dfs.ppt
lec 09-graphs-bfs-dfs.ppt
 
Magtibay buk bind#2
Magtibay buk bind#2Magtibay buk bind#2
Magtibay buk bind#2
 
Graps 2
Graps 2Graps 2
Graps 2
 

More from Nisha Soms

Asymptotic analysis
Asymptotic analysisAsymptotic analysis
Asymptotic analysisNisha Soms
 
Algorithm analysis
Algorithm analysisAlgorithm analysis
Algorithm analysisNisha Soms
 
Notion of an algorithm
Notion of an algorithmNotion of an algorithm
Notion of an algorithmNisha Soms
 
Divide and conquer strategy
Divide and conquer strategyDivide and conquer strategy
Divide and conquer strategyNisha Soms
 
Linear and Binary search
Linear and Binary searchLinear and Binary search
Linear and Binary searchNisha Soms
 

More from Nisha Soms (6)

Asymptotic analysis
Asymptotic analysisAsymptotic analysis
Asymptotic analysis
 
Algorithm analysis
Algorithm analysisAlgorithm analysis
Algorithm analysis
 
Notion of an algorithm
Notion of an algorithmNotion of an algorithm
Notion of an algorithm
 
Divide and conquer strategy
Divide and conquer strategyDivide and conquer strategy
Divide and conquer strategy
 
Merge sort
Merge sortMerge sort
Merge sort
 
Linear and Binary search
Linear and Binary searchLinear and Binary search
Linear and Binary search
 

Recently uploaded

Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...EduSkills OECD
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxmanuelaromero2013
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxheathfieldcps1
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introductionMaksud Ahmed
 
MENTAL STATUS EXAMINATION format.docx
MENTAL     STATUS EXAMINATION format.docxMENTAL     STATUS EXAMINATION format.docx
MENTAL STATUS EXAMINATION format.docxPoojaSen20
 
mini mental status format.docx
mini    mental       status     format.docxmini    mental       status     format.docx
mini mental status format.docxPoojaSen20
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon AUnboundStockton
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptxVS Mahajan Coaching Centre
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxpboyjonauth
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxGaneshChakor2
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Krashi Coaching
 
URLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppURLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppCeline George
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 
Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationnomboosow
 
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting DataJhengPantaleon
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13Steve Thomason
 
Hybridoma Technology ( Production , Purification , and Application )
Hybridoma Technology  ( Production , Purification , and Application  ) Hybridoma Technology  ( Production , Purification , and Application  )
Hybridoma Technology ( Production , Purification , and Application ) Sakshi Ghasle
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsanshu789521
 

Recently uploaded (20)

TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptx
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 
MENTAL STATUS EXAMINATION format.docx
MENTAL     STATUS EXAMINATION format.docxMENTAL     STATUS EXAMINATION format.docx
MENTAL STATUS EXAMINATION format.docx
 
mini mental status format.docx
mini    mental       status     format.docxmini    mental       status     format.docx
mini mental status format.docx
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon A
 
Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptx
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptx
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
 
URLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppURLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website App
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communication
 
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13
 
Hybridoma Technology ( Production , Purification , and Application )
Hybridoma Technology  ( Production , Purification , and Application  ) Hybridoma Technology  ( Production , Purification , and Application  )
Hybridoma Technology ( Production , Purification , and Application )
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha elections
 

Depth First Search and Breadth First Search

  • 1. Reference: Data Structures and Algorithm Analysis in C++ by Weiss Ch. 9 Prepared by Nisha Soms Graph Traversals
  • 2. 2 Graphs 2  graph: A data structure containing:  a set of vertices V, (sometimes called nodes)  a set of edges E, where an edge represents a connection between 2 vertices.  Graph G = (V, E)  an edge is a pair (v, w) where v, w are in V  the graph at right:  V = {a, b, c, d}  E = {(a, c), (b, c), (b, d), (c, d)}  degree: number of edges touching a given vertex.  at right: a=1, b=2, c=3, d=2 a c b d
  • 3. 3 Graph examples 3  Web pages with links  Methods in a program that call each other  Road maps (e.g., Google maps)  Airline routes  Facebook friends  Course pre-requisites  Family trees  Paths through a maze
  • 4. 4 Paths 4  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, one path from V to Z: {b, h} or {V, X, Z}  What are two paths from U to Y?  path length: Number of vertices or edges contained in the path.  neighbor or adjacent: Two vertices connected directly by an edge.  example: V and X X U V W Z Y a c b e d f g h
  • 5. 5 Reachability & Connectedness 5  reachable: Vertex a is reachable from b if a path exists from a to b.  connected: A graph is connected if every vertex is reachable from any other.  strongly connected: When every vertex has an edge to every other vertex. X U V W Z Y a c b e d f g h a c b d a c b d e
  • 6. 6 Loops and cycles 6  cycle: A path that begins and ends at the same node.  example: {b, g, f, c, a} or {V, X, Y, W, U, V}.  example: {c, d, a} or {U, W, V, U}.  acyclic graph: One that does not contain any cycles.  loop: An edge directly from a node to itself.  Many graphs don't allow loops. X U V W Z Y a c b e d f g h
  • 7. 7 Weighted graphs 7  weight: Cost associated with a given edge.  Some graphs have weighted edges, and some are unweighted.  Edges in an unweighted graph can be thought of as having equal weight (e.g. all 0, or all 1, etc.)  Most graphs do not allow negative weights.  example: graph of airline flights, weighted by miles between cities: ORD PVD MIA DFW SFO LAX LGA HNL
  • 8. 8 Directed graphs 8  directed graph ("digraph"): One where edges are one-way connections between vertices.  If graph is directed, a vertex has a separate in/out degree.  A digraph can be weighted or unweighted.  Is the graph below connected? Why or why not? a d b e g f c
  • 9. 9 Linked Lists, Trees, Graphs 9  A binary tree is a graph with some restrictions:  The tree is an unweighted, directed, acyclic graph (DAG).  Each node's in-degree is at most 1, and out-degree is at most 2.  There is exactly one path from the root to every node.  A linked list is also a graph:  Unweighted DAG.  In/out degree of at most 1 for all nodes. F B A E K H J G A B D C
  • 10. 10 Searching for paths 10  Searching for a path from one vertex to another:  Sometimes, we just want any path (or want to know there is a path).  Sometimes, we want to minimize path length (# of edges).  Sometimes, we want to minimize path cost (sum of edge weights).  What is the shortest path from MIA to SFO? Which path has the minimum cost? ORD PVD MIA DFW SFO LAX LGA HNL $500
  • 11. 11 Depth-first search 11  Depth-first search (DFS): Finds a path between two vertices by exploring each possible path as far as possible before backtracking.  Often implemented recursively.  Many graph algorithms involve visiting or marking vertices.  Depth-first paths from a to all vertices (assuming ABC edge order):  to b: {a, b}  to c: {a, b, e, f, c}  to d: {a, d}  to e: {a, b, e}  to f: {a, b, e, f} a e b c h g d f
  • 12. 12 DFS pseudocode 12 function dfs(v1, v2): dfs(v1, v2, { }). function dfs(v1, v2, path): path += v1. mark v1 as visited. if v1 is v2: a path is found! for each unvisited neighbor n of v1: if dfs(n, v2, path) finds a path: a path is found! path -= v1. // path is not found. a e b c h g d f
  • 13. 13 DFS observations 13  discovery: DFS is guaranteed to find a path if one exists.  retrieval: It is easy to retrieve exactly what the path is (the sequence of edges taken) if we find it  optimality: not optimal. DFS is guaranteed to find a path, not necessarily the best/shortest path  Example: dfs(a, f) returns {a, d, c, f} rather than {a, d, f}. a e b c h g d f
  • 14. 14 Breadth-first search 14  Breadth-first search (BFS): Finds a path between two nodes by taking one step down all paths and then immediately backtracking.  Often implemented by maintaining a queue of vertices to visit.  BFS always returns the shortest path (the one with the fewest edges) between the start and the end vertices.  to b: {a, b}  to c: {a, e, f, c}  to d: {a, d}  to e: {a, e}  to f: {a, e, f}  to g: {a, d, g}  to h: {a, d, h} a e b c h g d f
  • 15. 15 BFS pseudocode 15 function bfs(v1, v2): queue := {v1}. mark v1 as visited. while queue is not empty: v := queue.removeFirst(). if v is v2: a path is found! for each unvisited neighbor n of v: mark n as visited. queue.addLast(n). // path is not found. a e b c h g d f
  • 16. 16 BFS observations 16  Optimality:  always finds the shortest path (fewest edges).  In unweighted graphs, finds optimal cost path.  In weighted graphs, not always optimal cost.  Retrieval: harder to reconstruct the actual sequence of vertices or edges in the path 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  solution: We can keep track of the path by storing predecessors for each vertex (each vertex can store a reference to a previous vertex).  DFS uses less memory than BFS, easier to reconstruct the a e b c h g d f
  • 17. 17 DFS, BFS runtime 17  What is the expected runtime of DFS and BFS, in terms of the number of vertices V and the number of edges E ?  Answer: O(|V| + |E|)  where |V| = number of vertices, |E| = number of edges  Must potentially visit every node and/or examine every edge once.
  • 18. 18 BFS that finds path 18 function bfs(v1, v2): queue := {v1}. mark v1 as visited. while queue is not empty: v := queue.removeFirst(). if v is v2: a path is found! (reconstruct it by following .prev back to v1.) for each unvisited neighbor n of v: mark n as visited. (set n.prev = v.) queue.addLast(n). // path is not found. a e b c h g d f prev