SlideShare una empresa de Scribd logo
1 de 56
Descargar para leer sin conexión
Iris Hui-Ru Jiang Fall 2014
CHAPTER 3
GRAPHS
IRIS H.-R. JIANG
Outline
¨ Content:
¤ Basic definitions and applications
¤ Graph connectivity and graph traversal
¤ Implementation
¤ Testing bipartiteness: an application of BFS
¤ Connectivity in directed graphs
¤ Directed acyclic graphs and topological ordering
¨ Reading:
¤ Chapter 3
Graphs
2
IRIS H.-R. JIANG
Keys to Success: CAR Theorem
¨ Extract the essence
¤ Identify the clean core
¤ Remove extraneous detail
¨ Represent in an abstract form
¤ First think at high-level
n Devise the algorithm
¤ Then go down to low-level
n Complete implementation
¨ Simplify unimportant things
¤ List the limitations
¤ Show how to extend
Prof. Chang’s CAR Theorem Iris: Recap stable matching
3
Graphs
Criticality
Abstraction
Restriction
© Prof. Yao-Wen Chang@NTU
Definitions and applications
Basics
4
Graphs
Iris Hui-Ru Jiang Fall 2014
CHAPTER 3
GRAPHS
IRIS H.-R. JIANG
Outline
¨ Content:
¤ Basic definitions and applications
¤ Graph connectivity and graph traversal
¤ Implementation
¤ Testing bipartiteness: an application of BFS
¤ Connectivity in directed graphs
¤ Directed acyclic graphs and topological ordering
¨ Reading:
¤ Chapter 3
Graphs
2
IRIS H.-R. JIANG
Keys to Success: CAR Theorem
¨ Extract the essence
¤ Identify the clean core
¤ Remove extraneous detail
¨ Represent in an abstract form
¤ First think at high-level
n Devise the algorithm
¤ Then go down to low-level
n Complete implementation
¨ Simplify unimportant things
¤ List the limitations
¤ Show how to extend
Prof. Chang’s CAR Theorem Iris: Recap stable matching
3
Graphs
Criticality
Abstraction
Restriction
© Prof. Yao-Wen Chang@NTU
Definitions and applications
Basics
4
Graphs
Iris Hui-Ru Jiang Fall 2014
CHAPTER 3
GRAPHS
IRIS H.-R. JIANG
Outline
¨ Content:
¤ Basic definitions and applications
¤ Graph connectivity and graph traversal
¤ Implementation
¤ Testing bipartiteness: an application of BFS
¤ Connectivity in directed graphs
¤ Directed acyclic graphs and topological ordering
¨ Reading:
¤ Chapter 3
Graphs
2
IRIS H.-R. JIANG
Keys to Success: CAR Theorem
¨ Extract the essence
¤ Identify the clean core
¤ Remove extraneous detail
¨ Represent in an abstract form
¤ First think at high-level
n Devise the algorithm
¤ Then go down to low-level
n Complete implementation
¨ Simplify unimportant things
¤ List the limitations
¤ Show how to extend
Prof. Chang’s CAR Theorem Iris: Recap stable matching
3
Graphs
Criticality
Abstraction
Restriction
© Prof. Yao-Wen Chang@NTU
Definitions and applications
Basics
4
Graphs
Iris Hui-Ru Jiang Fall 2014
CHAPTER 3
GRAPHS
IRIS H.-R. JIANG
Outline
¨ Content:
¤ Basic definitions and applications
¤ Graph connectivity and graph traversal
¤ Implementation
¤ Testing bipartiteness: an application of BFS
¤ Connectivity in directed graphs
¤ Directed acyclic graphs and topological ordering
¨ Reading:
¤ Chapter 3
Graphs
2
IRIS H.-R. JIANG
Keys to Success: CAR Theorem
¨ Extract the essence
¤ Identify the clean core
¤ Remove extraneous detail
¨ Represent in an abstract form
¤ First think at high-level
n Devise the algorithm
¤ Then go down to low-level
n Complete implementation
¨ Simplify unimportant things
¤ List the limitations
¤ Show how to extend
Prof. Chang’s CAR Theorem Iris: Recap stable matching
3
Graphs
Criticality
Abstraction
Restriction
© Prof. Yao-Wen Chang@NTU
Definitions and applications
Basics
4
Graphs
IRIS H.-R. JIANG
Salute to Euler!
¨ Our focus in this course is on problems with a discrete flavor.
¨ One of the most fundamental and expressive of combinatorial
structures is the graph.
¤ Invented by L. Euler based on his proof on the Königsberg bridge
problem (the seven bridge problem) in 1736.
n Is it possible to walk across all the bridges exactly once and
return to the starting land area?
n Abstraction!
Graphs
5
No
Eulerian
walk
L. Euler, Solutioproblematis ad geometriamsituspertinentis,
Commentarii Academiae Scientiarum Imperialis Petropolitanae,
Vol. 8, pp. 128—140, 1736 (published 1741).
IRIS H.-R. JIANG
Graph
¨ A graph is simply a way of encoding pairwise relationships
among a set of objects.
¨ A graphG = (V, E) consists of
¤ A collection V of nodes (a.k.a. vertices)
¤ A collection E of edges
n Each edge joins two nodes
n e = {u, v} Î E for some u, vÎ V
¨ In an undirected graph: symmetric relationships
¤ Edges are undirected, i.e., {u, v} == {v, u}
n e.g., u and v are family.
¨ In a directed graph: asymmetric relationships
¤ Edges are directed, i.e., (u, v) != (v, u)
n e.g., u knows v (celebrity), while v doesn’t know u.
¨ v is one of u’sneighbor if there is an edge (u, v)
¤ Adjacency
Graphs
6
u v
u v
tail head
⚾婾㗗ᶨ攨㍊妶䈑ẞᷳ攻⤪ỽ䚠忋䘬⬠⓷
ᶫ㧳⓷柴㛔岒⌛㗗㍊妶映⛘ᷳ攻(德忶㧳㠩)䘬忋䳸斄Ὢ
IRIS H.-R. JIANG
Examples of Graphs (1/6)
¨ It’s useful to digest the meaning of the nodes and the meaning
of the edges in the following examples.
¤ It’s not important to remember them.
¨ Transportation networks:
Graphs
7
London underground map
(node: station; edge: adjacent stations)
ᷴ㔾䵺⅟娔姯—‒㕍✗搜✗⛽ (H. Beck, 1933)
http://mag.udn.com/mag/world/storypage.jsp?f_ART_ID=207102
China Airlines international route map
(node: city; edge: non-stop flight)
IRIS H.-R. JIANG
Examples of Graphs (2/6)
¨ Communication networks
Graphs
8
Wireless sensor network
(node: sensor; edge: signal broadcasting)
IRIS H.-R. JIANG
Salute to Euler!
¨ Our focus in this course is on problems with a discrete flavor.
¨ One of the most fundamental and expressive of combinatorial
structures is the graph.
¤ Invented by L. Euler based on his proof on the Königsberg bridge
problem (the seven bridge problem) in 1736.
n Is it possible to walk across all the bridges exactly once and
return to the starting land area?
n Abstraction!
Graphs
5
No
Eulerian
walk
L. Euler, Solutioproblematis ad geometriamsituspertinentis,
Commentarii Academiae Scientiarum Imperialis Petropolitanae,
Vol. 8, pp. 128—140, 1736 (published 1741).
IRIS H.-R. JIANG
Graph
¨ A graph is simply a way of encoding pairwise relationships
among a set of objects.
¨ A graphG = (V, E) consists of
¤ A collection V of nodes (a.k.a. vertices)
¤ A collection E of edges
n Each edge joins two nodes
n e = {u, v} Î E for some u, vÎ V
¨ In an undirected graph: symmetric relationships
¤ Edges are undirected, i.e., {u, v} == {v, u}
n e.g., u and v are family.
¨ In a directed graph: asymmetric relationships
¤ Edges are directed, i.e., (u, v) != (v, u)
n e.g., u knows v (celebrity), while v doesn’t know u.
¨ v is one of u’sneighbor if there is an edge (u, v)
¤ Adjacency
Graphs
6
u v
u v
tail head
⚾婾㗗ᶨ攨㍊妶䈑ẞᷳ攻⤪ỽ䚠忋䘬⬠⓷
ᶫ㧳⓷柴㛔岒⌛㗗㍊妶映⛘ᷳ攻(德忶㧳㠩)䘬忋䳸斄Ὢ
IRIS H.-R. JIANG
Examples of Graphs (1/6)
¨ It’s useful to digest the meaning of the nodes and the meaning
of the edges in the following examples.
¤ It’s not important to remember them.
¨ Transportation networks:
Graphs
7
London underground map
(node: station; edge: adjacent stations)
ᷴ㔾䵺⅟娔姯—‒㕍✗搜✗⛽ (H. Beck, 1933)
http://mag.udn.com/mag/world/storypage.jsp?f_ART_ID=207102
China Airlines international route map
(node: city; edge: non-stop flight)
IRIS H.-R. JIANG
Examples of Graphs (2/6)
¨ Communication networks
Graphs
8
Wireless sensor network
(node: sensor; edge: signal broadcasting)
IRIS H.-R. JIANG
Salute to Euler!
¨ Our focus in this course is on problems with a discrete flavor.
¨ One of the most fundamental and expressive of combinatorial
structures is the graph.
¤ Invented by L. Euler based on his proof on the Königsberg bridge
problem (the seven bridge problem) in 1736.
n Is it possible to walk across all the bridges exactly once and
return to the starting land area?
n Abstraction!
Graphs
5
No
Eulerian
walk
L. Euler, Solutioproblematis ad geometriamsituspertinentis,
Commentarii Academiae Scientiarum Imperialis Petropolitanae,
Vol. 8, pp. 128—140, 1736 (published 1741).
IRIS H.-R. JIANG
Graph
¨ A graph is simply a way of encoding pairwise relationships
among a set of objects.
¨ A graphG = (V, E) consists of
¤ A collection V of nodes (a.k.a. vertices)
¤ A collection E of edges
n Each edge joins two nodes
n e = {u, v} Î E for some u, vÎ V
¨ In an undirected graph: symmetric relationships
¤ Edges are undirected, i.e., {u, v} == {v, u}
n e.g., u and v are family.
¨ In a directed graph: asymmetric relationships
¤ Edges are directed, i.e., (u, v) != (v, u)
n e.g., u knows v (celebrity), while v doesn’t know u.
¨ v is one of u’sneighbor if there is an edge (u, v)
¤ Adjacency
Graphs
6
u v
u v
tail head
⚾婾㗗ᶨ攨㍊妶䈑ẞᷳ攻⤪ỽ䚠忋䘬⬠⓷
ᶫ㧳⓷柴㛔岒⌛㗗㍊妶映⛘ᷳ攻(德忶㧳㠩)䘬忋䳸斄Ὢ
IRIS H.-R. JIANG
Examples of Graphs (1/6)
¨ It’s useful to digest the meaning of the nodes and the meaning
of the edges in the following examples.
¤ It’s not important to remember them.
¨ Transportation networks:
Graphs
7
London underground map
(node: station; edge: adjacent stations)
ᷴ㔾䵺⅟娔姯—‒㕍✗搜✗⛽ (H. Beck, 1933)
http://mag.udn.com/mag/world/storypage.jsp?f_ART_ID=207102
China Airlines international route map
(node: city; edge: non-stop flight)
IRIS H.-R. JIANG
Examples of Graphs (2/6)
¨ Communication networks
Graphs
8
Wireless sensor network
(node: sensor; edge: signal broadcasting)
IRIS H.-R. JIANG
Salute to Euler!
¨ Our focus in this course is on problems with a discrete flavor.
¨ One of the most fundamental and expressive of combinatorial
structures is the graph.
¤ Invented by L. Euler based on his proof on the Königsberg bridge
problem (the seven bridge problem) in 1736.
n Is it possible to walk across all the bridges exactly once and
return to the starting land area?
n Abstraction!
Graphs
5
No
Eulerian
walk
L. Euler, Solutioproblematis ad geometriamsituspertinentis,
Commentarii Academiae Scientiarum Imperialis Petropolitanae,
Vol. 8, pp. 128—140, 1736 (published 1741).
IRIS H.-R. JIANG
Graph
¨ A graph is simply a way of encoding pairwise relationships
among a set of objects.
¨ A graphG = (V, E) consists of
¤ A collection V of nodes (a.k.a. vertices)
¤ A collection E of edges
n Each edge joins two nodes
n e = {u, v} Î E for some u, vÎ V
¨ In an undirected graph: symmetric relationships
¤ Edges are undirected, i.e., {u, v} == {v, u}
n e.g., u and v are family.
¨ In a directed graph: asymmetric relationships
¤ Edges are directed, i.e., (u, v) != (v, u)
n e.g., u knows v (celebrity), while v doesn’t know u.
¨ v is one of u’sneighbor if there is an edge (u, v)
¤ Adjacency
Graphs
6
u v
u v
tail head
⚾婾㗗ᶨ攨㍊妶䈑ẞᷳ攻⤪ỽ䚠忋䘬⬠⓷
ᶫ㧳⓷柴㛔岒⌛㗗㍊妶映⛘ᷳ攻(德忶㧳㠩)䘬忋䳸斄Ὢ
IRIS H.-R. JIANG
Examples of Graphs (1/6)
¨ It’s useful to digest the meaning of the nodes and the meaning
of the edges in the following examples.
¤ It’s not important to remember them.
¨ Transportation networks:
Graphs
7
London underground map
(node: station; edge: adjacent stations)
ᷴ㔾䵺⅟娔姯—‒㕍✗搜✗⛽ (H. Beck, 1933)
http://mag.udn.com/mag/world/storypage.jsp?f_ART_ID=207102
China Airlines international route map
(node: city; edge: non-stop flight)
IRIS H.-R. JIANG
Examples of Graphs (2/6)
¨ Communication networks
Graphs
8
Wireless sensor network
(node: sensor; edge: signal broadcasting)
IRIS H.-R. JIANG
Examples of Graphs (3/6)
¨ Information networks
Graphs
9
World Wide Web
(node: webpage; edge: hyperlink)
IRIS H.-R. JIANG
Examples of Graphs (4/6)
¨ Social networks
Graphs
10
Facebook
(node: people; edge: friendship)
http://en.wikipedia.org/wiki/Facebook
IRIS H.-R. JIANG
Examples of Graphs (5/6)
¨ Dependency networks
Graphs
11
Food chain/web
(node: species; edge: from prey to predator)
IRIS H.-R. JIANG
Examples of Graphs (6/6)
¨ Technological Network
Graphs
12
Finite state machine
(node: state; edge: state transition)
IRIS H.-R. JIANG
Examples of Graphs (3/6)
¨ Information networks
Graphs
9
World Wide Web
(node: webpage; edge: hyperlink)
IRIS H.-R. JIANG
Examples of Graphs (4/6)
¨ Social networks
Graphs
10
Facebook
(node: people; edge: friendship)
http://en.wikipedia.org/wiki/Facebook
IRIS H.-R. JIANG
Examples of Graphs (5/6)
¨ Dependency networks
Graphs
11
Food chain/web
(node: species; edge: from prey to predator)
IRIS H.-R. JIANG
Examples of Graphs (6/6)
¨ Technological Network
Graphs
12
Finite state machine
(node: state; edge: state transition)
IRIS H.-R. JIANG
Examples of Graphs (3/6)
¨ Information networks
Graphs
9
World Wide Web
(node: webpage; edge: hyperlink)
IRIS H.-R. JIANG
Examples of Graphs (4/6)
¨ Social networks
Graphs
10
Facebook
(node: people; edge: friendship)
http://en.wikipedia.org/wiki/Facebook
IRIS H.-R. JIANG
Examples of Graphs (5/6)
¨ Dependency networks
Graphs
11
Food chain/web
(node: species; edge: from prey to predator)
IRIS H.-R. JIANG
Examples of Graphs (6/6)
¨ Technological Network
Graphs
12
Finite state machine
(node: state; edge: state transition)
IRIS H.-R. JIANG
Examples of Graphs (3/6)
¨ Information networks
Graphs
9
World Wide Web
(node: webpage; edge: hyperlink)
IRIS H.-R. JIANG
Examples of Graphs (4/6)
¨ Social networks
Graphs
10
Facebook
(node: people; edge: friendship)
http://en.wikipedia.org/wiki/Facebook
IRIS H.-R. JIANG
Examples of Graphs (5/6)
¨ Dependency networks
Graphs
11
Food chain/web
(node: species; edge: from prey to predator)
IRIS H.-R. JIANG
Examples of Graphs (6/6)
¨ Technological Network
Graphs
12
Finite state machine
(node: state; edge: state transition)
IRIS H.-R. JIANG
Paths and Connectivity (1/2)
¨ One of the fundamental operations in a graph is that of
traversing a sequence of nodes connected by edges.
¤ Browse Web pages by following hyperlinks
¤ Join a 10-day tour from Taipei to Europe on a sequence of flights
¤ Pass gossip by word of mouth (by message of mobile phone)
from you to someone far away
n “Hey upper east siders, Gossip Girl here!”
-- Gossip Girl
Graphs
13
IRIS H.-R. JIANG
Paths and Connectivity (2/2)
¨ A path in an undirected graph G = (V, E) is a sequence P of
nodes v1, v2, …, vk-1, vk with the property that each consecutive
pair vi, vi+1 is joined by an edge in E.
¨ A path is simple if all nodes are distinct.
¨ A cycle is a path v1, v2, …, vk-1, vk in which v1 = vk, k> 2, and the
first k-1 nodes are all distinct.
¨ An undirected graph is connected if, for every pair of nodes u
and v, there is a path from u to v.
¨ The distance between nodes u and v is the minimum number of
edges in a u-v path. (¥ for disconnected)
¨ Note: These definitions carry over naturally to directed graphs
with respect to the directionality of edges.
Graphs
14
Path P = 1, 2, 4, 5, 3, 7, 8
Cycle C = 1, 2, 4, 5, 3, 1
1
2 3
4 5
6
7
8
IRIS H.-R. JIANG
Trees
¨ An undirected graph is a tree if it is connected and does not
contain a cycle.
¤ Trees are the simplest kind of connected graph: deleting any
edge will disconnect it.
¨ Thm: Let G be an undirected graph on n nodes. Any two of the
following statements imply the third.
¤ G is connected.
¤ G does not contain a cycle.
¤ G has n-1 edges.
Graphs
15
2
3
1
4
5
6
7
9
8
2
3
1
4
5
6
7
9
8
Grab 1 and let
the rest hang
downward
Tree? Yes!
G is a tree if it
satisfies any two of
the three statements
IRIS H.-R. JIANG
Rooted Trees
¨ A rooted tree is a tree with its root at r.
¨ Rooted trees encode the notion of a hierarchy.
¤ e.g., sitemap of a Web site
n The tree-like structure facilitates navigation (root: entry page)
Graphs
16
a tree the same tree, rooted at 1
v
v’s parent
v’s child
root r
2
3
1
4
5
6
7
9
8
2
3
1
4
5
6
7
9
8
Grab 1 and let
the rest hang
downward leaf
Directed edges:
asymmetric
relationship
IRIS H.-R. JIANG
Paths and Connectivity (1/2)
¨ One of the fundamental operations in a graph is that of
traversing a sequence of nodes connected by edges.
¤ Browse Web pages by following hyperlinks
¤ Join a 10-day tour from Taipei to Europe on a sequence of flights
¤ Pass gossip by word of mouth (by message of mobile phone)
from you to someone far away
n “Hey upper east siders, Gossip Girl here!”
-- Gossip Girl
Graphs
13
IRIS H.-R. JIANG
Paths and Connectivity (2/2)
¨ A path in an undirected graph G = (V, E) is a sequence P of
nodes v1, v2, …, vk-1, vk with the property that each consecutive
pair vi, vi+1 is joined by an edge in E.
¨ A path is simple if all nodes are distinct.
¨ A cycle is a path v1, v2, …, vk-1, vk in which v1 = vk, k> 2, and the
first k-1 nodes are all distinct.
¨ An undirected graph is connected if, for every pair of nodes u
and v, there is a path from u to v.
¨ The distance between nodes u and v is the minimum number of
edges in a u-v path. (¥ for disconnected)
¨ Note: These definitions carry over naturally to directed graphs
with respect to the directionality of edges.
Graphs
14
Path P = 1, 2, 4, 5, 3, 7, 8
Cycle C = 1, 2, 4, 5, 3, 1
1
2 3
4 5
6
7
8
IRIS H.-R. JIANG
Trees
¨ An undirected graph is a tree if it is connected and does not
contain a cycle.
¤ Trees are the simplest kind of connected graph: deleting any
edge will disconnect it.
¨ Thm: Let G be an undirected graph on n nodes. Any two of the
following statements imply the third.
¤ G is connected.
¤ G does not contain a cycle.
¤ G has n-1 edges.
Graphs
15
2
3
1
4
5
6
7
9
8
2
3
1
4
5
6
7
9
8
Grab 1 and let
the rest hang
downward
Tree? Yes!
G is a tree if it
satisfies any two of
the three statements
IRIS H.-R. JIANG
Rooted Trees
¨ A rooted tree is a tree with its root at r.
¨ Rooted trees encode the notion of a hierarchy.
¤ e.g., sitemap of a Web site
n The tree-like structure facilitates navigation (root: entry page)
Graphs
16
a tree the same tree, rooted at 1
v
v’s parent
v’s child
root r
2
3
1
4
5
6
7
9
8
2
3
1
4
5
6
7
9
8
Grab 1 and let
the rest hang
downward leaf
Directed edges:
asymmetric
relationship
IRIS H.-R. JIANG
Paths and Connectivity (1/2)
¨ One of the fundamental operations in a graph is that of
traversing a sequence of nodes connected by edges.
¤ Browse Web pages by following hyperlinks
¤ Join a 10-day tour from Taipei to Europe on a sequence of flights
¤ Pass gossip by word of mouth (by message of mobile phone)
from you to someone far away
n “Hey upper east siders, Gossip Girl here!”
-- Gossip Girl
Graphs
13
IRIS H.-R. JIANG
Paths and Connectivity (2/2)
¨ A path in an undirected graph G = (V, E) is a sequence P of
nodes v1, v2, …, vk-1, vk with the property that each consecutive
pair vi, vi+1 is joined by an edge in E.
¨ A path is simple if all nodes are distinct.
¨ A cycle is a path v1, v2, …, vk-1, vk in which v1 = vk, k> 2, and the
first k-1 nodes are all distinct.
¨ An undirected graph is connected if, for every pair of nodes u
and v, there is a path from u to v.
¨ The distance between nodes u and v is the minimum number of
edges in a u-v path. (¥ for disconnected)
¨ Note: These definitions carry over naturally to directed graphs
with respect to the directionality of edges.
Graphs
14
Path P = 1, 2, 4, 5, 3, 7, 8
Cycle C = 1, 2, 4, 5, 3, 1
1
2 3
4 5
6
7
8
IRIS H.-R. JIANG
Trees
¨ An undirected graph is a tree if it is connected and does not
contain a cycle.
¤ Trees are the simplest kind of connected graph: deleting any
edge will disconnect it.
¨ Thm: Let G be an undirected graph on n nodes. Any two of the
following statements imply the third.
¤ G is connected.
¤ G does not contain a cycle.
¤ G has n-1 edges.
Graphs
15
2
3
1
4
5
6
7
9
8
2
3
1
4
5
6
7
9
8
Grab 1 and let
the rest hang
downward
Tree? Yes!
G is a tree if it
satisfies any two of
the three statements
IRIS H.-R. JIANG
Rooted Trees
¨ A rooted tree is a tree with its root at r.
¨ Rooted trees encode the notion of a hierarchy.
¤ e.g., sitemap of a Web site
n The tree-like structure facilitates navigation (root: entry page)
Graphs
16
a tree the same tree, rooted at 1
v
v’s parent
v’s child
root r
2
3
1
4
5
6
7
9
8
2
3
1
4
5
6
7
9
8
Grab 1 and let
the rest hang
downward leaf
Directed edges:
asymmetric
relationship
IRIS H.-R. JIANG
Paths and Connectivity (1/2)
¨ One of the fundamental operations in a graph is that of
traversing a sequence of nodes connected by edges.
¤ Browse Web pages by following hyperlinks
¤ Join a 10-day tour from Taipei to Europe on a sequence of flights
¤ Pass gossip by word of mouth (by message of mobile phone)
from you to someone far away
n “Hey upper east siders, Gossip Girl here!”
-- Gossip Girl
Graphs
13
IRIS H.-R. JIANG
Paths and Connectivity (2/2)
¨ A path in an undirected graph G = (V, E) is a sequence P of
nodes v1, v2, …, vk-1, vk with the property that each consecutive
pair vi, vi+1 is joined by an edge in E.
¨ A path is simple if all nodes are distinct.
¨ A cycle is a path v1, v2, …, vk-1, vk in which v1 = vk, k> 2, and the
first k-1 nodes are all distinct.
¨ An undirected graph is connected if, for every pair of nodes u
and v, there is a path from u to v.
¨ The distance between nodes u and v is the minimum number of
edges in a u-v path. (¥ for disconnected)
¨ Note: These definitions carry over naturally to directed graphs
with respect to the directionality of edges.
Graphs
14
Path P = 1, 2, 4, 5, 3, 7, 8
Cycle C = 1, 2, 4, 5, 3, 1
1
2 3
4 5
6
7
8
IRIS H.-R. JIANG
Trees
¨ An undirected graph is a tree if it is connected and does not
contain a cycle.
¤ Trees are the simplest kind of connected graph: deleting any
edge will disconnect it.
¨ Thm: Let G be an undirected graph on n nodes. Any two of the
following statements imply the third.
¤ G is connected.
¤ G does not contain a cycle.
¤ G has n-1 edges.
Graphs
15
2
3
1
4
5
6
7
9
8
2
3
1
4
5
6
7
9
8
Grab 1 and let
the rest hang
downward
Tree? Yes!
G is a tree if it
satisfies any two of
the three statements
IRIS H.-R. JIANG
Rooted Trees
¨ A rooted tree is a tree with its root at r.
¨ Rooted trees encode the notion of a hierarchy.
¤ e.g., sitemap of a Web site
n The tree-like structure facilitates navigation (root: entry page)
Graphs
16
a tree the same tree, rooted at 1
v
v’s parent
v’s child
root r
2
3
1
4
5
6
7
9
8
2
3
1
4
5
6
7
9
8
Grab 1 and let
the rest hang
downward leaf
Directed edges:
asymmetric
relationship
BFS
DFS
Graph Connectivity and Graph Traversal
17
Graphs
1
2 3
4 5
6
7
8
9
10
11
12
13
IRIS H.-R. JIANG
Node-to-Node Connectivity
¨ Q: Given a graph G = (V, E) and two particular nodes s and t, is
there a path from s to t in G?
¤ The s-t connectivity problem
¤ The maze-solving problem
¨ A:
¤ For small graphs, easy! (visual inspection)
n 1-6 connectivity? 7-13 connectivity?
¤ What if large graphs? How efficiently can we do?
Graphs
18
1
2 3
4 5
6
7
8
9
10
11
12
13
room
hallway
IRIS H.-R. JIANG
Breadth-First-Search (BFS)
Graphs
19
1
2 3
4 5
6
7
8
1
2 3
4 5
6
7
8
9
10
11
12
13
L0
L1
L2
L3
¨ Breadth-first search (BFS): propagate the waves
¤ Start at s and flood the graph with an expanding wave that grows
to visit all nodes that it can reach.
¤ Layer Li: i is the time that a node is reached.
n Layer L0 = {s}; layer L1 = all neighbors of L0.
n Layer Lj+1 = all nodes that do not belong to an earlier layer and
that are neighbors of Lj.
n i = distance between s to the nodes that belong to layer Li.
Adjacent nodes
IRIS H.-R. JIANG
BFS Tree
Graphs
20
L0
L1
L2
L3 1
2 3
4 5
6
7
8
Nontree edge
Tree edge
BFS tree
¨ Let T be a BFS tree, let x and y be nodes in T belonging to
layers Li and Lj respectively, and let (x, y) be an edge of G. Then
i and j differ by at most 1.
¨ Pf:
¤ Without loss of generality, suppose j – i > 1.
¤ By definition, xÎLi , x’s neighbors belongs to Li+1 or earlier.
¤ Since (x, y) is an edge of G, y is x’s neighbor, yÎ Lj and j ! i+1.
¤ ®¬
1
2 3
4 5
6
8
7
L0
L1
L2
L3
BFS tree
BFS
DFS
Graph Connectivity and Graph Traversal
17
Graphs
1
2 3
4 5
6
7
8
9
10
11
12
13
IRIS H.-R. JIANG
Node-to-Node Connectivity
¨ Q: Given a graph G = (V, E) and two particular nodes s and t, is
there a path from s to t in G?
¤ The s-t connectivity problem
¤ The maze-solving problem
¨ A:
¤ For small graphs, easy! (visual inspection)
n 1-6 connectivity? 7-13 connectivity?
¤ What if large graphs? How efficiently can we do?
Graphs
18
1
2 3
4 5
6
7
8
9
10
11
12
13
room
hallway
IRIS H.-R. JIANG
Breadth-First-Search (BFS)
Graphs
19
1
2 3
4 5
6
7
8
1
2 3
4 5
6
7
8
9
10
11
12
13
L0
L1
L2
L3
¨ Breadth-first search (BFS): propagate the waves
¤ Start at s and flood the graph with an expanding wave that grows
to visit all nodes that it can reach.
¤ Layer Li: i is the time that a node is reached.
n Layer L0 = {s}; layer L1 = all neighbors of L0.
n Layer Lj+1 = all nodes that do not belong to an earlier layer and
that are neighbors of Lj.
n i = distance between s to the nodes that belong to layer Li.
Adjacent nodes
IRIS H.-R. JIANG
BFS Tree
Graphs
20
L0
L1
L2
L3 1
2 3
4 5
6
7
8
Nontree edge
Tree edge
BFS tree
¨ Let T be a BFS tree, let x and y be nodes in T belonging to
layers Li and Lj respectively, and let (x, y) be an edge of G. Then
i and j differ by at most 1.
¨ Pf:
¤ Without loss of generality, suppose j – i > 1.
¤ By definition, xÎLi , x’s neighbors belongs to Li+1 or earlier.
¤ Since (x, y) is an edge of G, y is x’s neighbor, yÎ Lj and j ! i+1.
¤ ®¬
1
2 3
4 5
6
8
7
L0
L1
L2
L3
BFS tree
BFS
DFS
Graph Connectivity and Graph Traversal
17
Graphs
1
2 3
4 5
6
7
8
9
10
11
12
13
IRIS H.-R. JIANG
Node-to-Node Connectivity
¨ Q: Given a graph G = (V, E) and two particular nodes s and t, is
there a path from s to t in G?
¤ The s-t connectivity problem
¤ The maze-solving problem
¨ A:
¤ For small graphs, easy! (visual inspection)
n 1-6 connectivity? 7-13 connectivity?
¤ What if large graphs? How efficiently can we do?
Graphs
18
1
2 3
4 5
6
7
8
9
10
11
12
13
room
hallway
IRIS H.-R. JIANG
Breadth-First-Search (BFS)
Graphs
19
1
2 3
4 5
6
7
8
1
2 3
4 5
6
7
8
9
10
11
12
13
L0
L1
L2
L3
¨ Breadth-first search (BFS): propagate the waves
¤ Start at s and flood the graph with an expanding wave that grows
to visit all nodes that it can reach.
¤ Layer Li: i is the time that a node is reached.
n Layer L0 = {s}; layer L1 = all neighbors of L0.
n Layer Lj+1 = all nodes that do not belong to an earlier layer and
that are neighbors of Lj.
n i = distance between s to the nodes that belong to layer Li.
Adjacent nodes
IRIS H.-R. JIANG
BFS Tree
Graphs
20
L0
L1
L2
L3 1
2 3
4 5
6
7
8
Nontree edge
Tree edge
BFS tree
¨ Let T be a BFS tree, let x and y be nodes in T belonging to
layers Li and Lj respectively, and let (x, y) be an edge of G. Then
i and j differ by at most 1.
¨ Pf:
¤ Without loss of generality, suppose j – i > 1.
¤ By definition, xÎLi , x’s neighbors belongs to Li+1 or earlier.
¤ Since (x, y) is an edge of G, y is x’s neighbor, yÎ Lj and j ! i+1.
¤ ®¬
1
2 3
4 5
6
8
7
L0
L1
L2
L3
BFS tree
BFS
DFS
Graph Connectivity and Graph Traversal
17
Graphs
1
2 3
4 5
6
7
8
9
10
11
12
13
IRIS H.-R. JIANG
Node-to-Node Connectivity
¨ Q: Given a graph G = (V, E) and two particular nodes s and t, is
there a path from s to t in G?
¤ The s-t connectivity problem
¤ The maze-solving problem
¨ A:
¤ For small graphs, easy! (visual inspection)
n 1-6 connectivity? 7-13 connectivity?
¤ What if large graphs? How efficiently can we do?
Graphs
18
1
2 3
4 5
6
7
8
9
10
11
12
13
room
hallway
IRIS H.-R. JIANG
Breadth-First-Search (BFS)
Graphs
19
1
2 3
4 5
6
7
8
1
2 3
4 5
6
7
8
9
10
11
12
13
L0
L1
L2
L3
¨ Breadth-first search (BFS): propagate the waves
¤ Start at s and flood the graph with an expanding wave that grows
to visit all nodes that it can reach.
¤ Layer Li: i is the time that a node is reached.
n Layer L0 = {s}; layer L1 = all neighbors of L0.
n Layer Lj+1 = all nodes that do not belong to an earlier layer and
that are neighbors of Lj.
n i = distance between s to the nodes that belong to layer Li.
Adjacent nodes
IRIS H.-R. JIANG
BFS Tree
Graphs
20
L0
L1
L2
L3 1
2 3
4 5
6
7
8
Nontree edge
Tree edge
BFS tree
¨ Let T be a BFS tree, let x and y be nodes in T belonging to
layers Li and Lj respectively, and let (x, y) be an edge of G. Then
i and j differ by at most 1.
¨ Pf:
¤ Without loss of generality, suppose j – i > 1.
¤ By definition, xÎLi , x’s neighbors belongs to Li+1 or earlier.
¤ Since (x, y) is an edge of G, y is x’s neighbor, yÎ Lj and j ! i+1.
¤ ®¬
1
2 3
4 5
6
8
7
L0
L1
L2
L3
BFS tree
IRIS H.-R. JIANG
Connected Component
¨ A connected component containing s is the set of nodes that
are reachable from s.
¤ Connected component containing node 1 is {1, 2, 3, 4, 5, 6, 7, 8}.
¤ There are three connected components.
n The other two are {9, 10} and {11, 12, 13}.
Graphs
21
1
2 3
4 5
6
7
8
9
10
11
12
13
IRIS H.-R. JIANG
Color Fill
¨ Q: Given lime green pixel in an image, how to change color of
entire blob of neighboring lime pixels to blue?
¨ A: Model the image as a graph.
¤ Node: pixel.
¤ Edge: two neighboring lime pixels.
¤ Blob: connected component of lime pixels.
Graphs
22
recolor lime green blob to blue
IRIS H.-R. JIANG
Connected Component
¨ Find all nodes reachable from s:
¨ Correctness: Upon termination, R is the connected component
containing s.
¨ Pf:
¤ Q: How about any node vÎR?
¤ Q: How about a node wÏR?
¨ Q: How to recover the actual path from s to any node tÎR?
¨ Q: How to explore a new edge in line 2?
¤ BFS: explore in order of distance from s.
¤ Any method else?
Graphs
23
Connected-Component(s)
// R will consist of nodes to which s has a path
1. initialize R = {s}
2. while (there is an edge (u, v) where uÎR andvÏR) do
3. R = R + {v}
it's safe to add v
s
u
v
R
IRIS H.-R. JIANG
Depth-First Search (DFS)
¨ Depth-first search (DFS): Go as deeply as possible or retreat
¤ Start from s and try the first edge leading out, and so on, until
reach a dead end. Backtrack and repeat.
n A mouse in a maze without the map.
¤ Another method for finding connected component
Graphs
24
1
2 3
4 5
6
7
8
1
2 3
4 5
6
7
8
DFS(u)
1. mark u as explored and add u to R
2. foreach edge (u, v) incident to u do
3. if (v is not marked as explored) then
4. recursively invoke DFS(v)
IRIS H.-R. JIANG
Connected Component
¨ A connected component containing s is the set of nodes that
are reachable from s.
¤ Connected component containing node 1 is {1, 2, 3, 4, 5, 6, 7, 8}.
¤ There are three connected components.
n The other two are {9, 10} and {11, 12, 13}.
Graphs
21
1
2 3
4 5
6
7
8
9
10
11
12
13
IRIS H.-R. JIANG
Color Fill
¨ Q: Given lime green pixel in an image, how to change color of
entire blob of neighboring lime pixels to blue?
¨ A: Model the image as a graph.
¤ Node: pixel.
¤ Edge: two neighboring lime pixels.
¤ Blob: connected component of lime pixels.
Graphs
22
recolor lime green blob to blue
IRIS H.-R. JIANG
Connected Component
¨ Find all nodes reachable from s:
¨ Correctness: Upon termination, R is the connected component
containing s.
¨ Pf:
¤ Q: How about any node vÎR?
¤ Q: How about a node wÏR?
¨ Q: How to recover the actual path from s to any node tÎR?
¨ Q: How to explore a new edge in line 2?
¤ BFS: explore in order of distance from s.
¤ Any method else?
Graphs
23
Connected-Component(s)
// R will consist of nodes to which s has a path
1. initialize R = {s}
2. while (there is an edge (u, v) where uÎR andvÏR) do
3. R = R + {v}
it's safe to add v
s
u
v
R
IRIS H.-R. JIANG
Depth-First Search (DFS)
¨ Depth-first search (DFS): Go as deeply as possible or retreat
¤ Start from s and try the first edge leading out, and so on, until
reach a dead end. Backtrack and repeat.
n A mouse in a maze without the map.
¤ Another method for finding connected component
Graphs
24
1
2 3
4 5
6
7
8
1
2 3
4 5
6
7
8
DFS(u)
1. mark u as explored and add u to R
2. foreach edge (u, v) incident to u do
3. if (v is not marked as explored) then
4. recursively invoke DFS(v)
IRIS H.-R. JIANG
Connected Component
¨ A connected component containing s is the set of nodes that
are reachable from s.
¤ Connected component containing node 1 is {1, 2, 3, 4, 5, 6, 7, 8}.
¤ There are three connected components.
n The other two are {9, 10} and {11, 12, 13}.
Graphs
21
1
2 3
4 5
6
7
8
9
10
11
12
13
IRIS H.-R. JIANG
Color Fill
¨ Q: Given lime green pixel in an image, how to change color of
entire blob of neighboring lime pixels to blue?
¨ A: Model the image as a graph.
¤ Node: pixel.
¤ Edge: two neighboring lime pixels.
¤ Blob: connected component of lime pixels.
Graphs
22
recolor lime green blob to blue
IRIS H.-R. JIANG
Connected Component
¨ Find all nodes reachable from s:
¨ Correctness: Upon termination, R is the connected component
containing s.
¨ Pf:
¤ Q: How about any node vÎR?
¤ Q: How about a node wÏR?
¨ Q: How to recover the actual path from s to any node tÎR?
¨ Q: How to explore a new edge in line 2?
¤ BFS: explore in order of distance from s.
¤ Any method else?
Graphs
23
Connected-Component(s)
// R will consist of nodes to which s has a path
1. initialize R = {s}
2. while (there is an edge (u, v) where uÎR andvÏR) do
3. R = R + {v}
it's safe to add v
s
u
v
R
IRIS H.-R. JIANG
Depth-First Search (DFS)
¨ Depth-first search (DFS): Go as deeply as possible or retreat
¤ Start from s and try the first edge leading out, and so on, until
reach a dead end. Backtrack and repeat.
n A mouse in a maze without the map.
¤ Another method for finding connected component
Graphs
24
1
2 3
4 5
6
7
8
1
2 3
4 5
6
7
8
DFS(u)
1. mark u as explored and add u to R
2. foreach edge (u, v) incident to u do
3. if (v is not marked as explored) then
4. recursively invoke DFS(v)
IRIS H.-R. JIANG
Connected Component
¨ A connected component containing s is the set of nodes that
are reachable from s.
¤ Connected component containing node 1 is {1, 2, 3, 4, 5, 6, 7, 8}.
¤ There are three connected components.
n The other two are {9, 10} and {11, 12, 13}.
Graphs
21
1
2 3
4 5
6
7
8
9
10
11
12
13
IRIS H.-R. JIANG
Color Fill
¨ Q: Given lime green pixel in an image, how to change color of
entire blob of neighboring lime pixels to blue?
¨ A: Model the image as a graph.
¤ Node: pixel.
¤ Edge: two neighboring lime pixels.
¤ Blob: connected component of lime pixels.
Graphs
22
recolor lime green blob to blue
IRIS H.-R. JIANG
Connected Component
¨ Find all nodes reachable from s:
¨ Correctness: Upon termination, R is the connected component
containing s.
¨ Pf:
¤ Q: How about any node vÎR?
¤ Q: How about a node wÏR?
¨ Q: How to recover the actual path from s to any node tÎR?
¨ Q: How to explore a new edge in line 2?
¤ BFS: explore in order of distance from s.
¤ Any method else?
Graphs
23
Connected-Component(s)
// R will consist of nodes to which s has a path
1. initialize R = {s}
2. while (there is an edge (u, v) where uÎR andvÏR) do
3. R = R + {v}
it's safe to add v
s
u
v
R
IRIS H.-R. JIANG
Depth-First Search (DFS)
¨ Depth-first search (DFS): Go as deeply as possible or retreat
¤ Start from s and try the first edge leading out, and so on, until
reach a dead end. Backtrack and repeat.
n A mouse in a maze without the map.
¤ Another method for finding connected component
Graphs
24
1
2 3
4 5
6
7
8
1
2 3
4 5
6
7
8
DFS(u)
1. mark u as explored and add u to R
2. foreach edge (u, v) incident to u do
3. if (v is not marked as explored) then
4. recursively invoke DFS(v)
IRIS H.-R. JIANG
DFS Tree
¨ Let T be a DFS tree, let x and y be nodes in T, and let (x, y) be a
nontree edge. Then one of x or y is an ancestor of the other.
¨ Pf:
¤ WLOG, suppose x is reached first by DFS.
¤ When (x, y) is examined during DFS(x), it is not added to T
because y is marked explored.
¤ Since y is not marked as explored when DFS(x) was first
invoked, it is a node that was discovered between the invocation
and end of the recursive call DFS(x).
¤ y is a descendant of x.
Graphs
25
DFS tree
1
2
4
5
6
7
8
1
2 3
4 5
6
7
8
DFS tree
Nontree edge
Tree edge
descendant
IRIS H.-R. JIANG
Summary: BFS and DFS
¨ Similarity: BFS/DFS builds the connected component
containing s.
¨ Difference: BFS tree is flat/short; DFS tree is narrow/deep.
¤ What are the nontree edges in BFS/DFS?
¨ Q: How to produce all the connected components of a graph?
¨ A:
Graphs
26
1
2 3
4 5
6
7
8
9
10
11
12
13
Lists / arrays
Queues / stacks
Implementation
27
Graphs
1
2 3
4 5
6
7
8
9
10
11
12
13
IRIS H.-R. JIANG
Representing Graphs
¨ A graph G = (V, E)
¤ |V| = the number of nodes = n
¤ |E| = the number of edges = m
¨ Dense or sparse?
¤ For a connected graph, n – 1 ! m ! ! n2
¨ Linear time = O(m+n)
¤ Why? It takes O(m+n) to read the input
Graphs
28
1
2 3
4 5
6
7
8
cardinality (size) of a set
n
2
IRIS H.-R. JIANG
DFS Tree
¨ Let T be a DFS tree, let x and y be nodes in T, and let (x, y) be a
nontree edge. Then one of x or y is an ancestor of the other.
¨ Pf:
¤ WLOG, suppose x is reached first by DFS.
¤ When (x, y) is examined during DFS(x), it is not added to T
because y is marked explored.
¤ Since y is not marked as explored when DFS(x) was first
invoked, it is a node that was discovered between the invocation
and end of the recursive call DFS(x).
¤ y is a descendant of x.
Graphs
25
DFS tree
1
2
4
5
6
7
8
1
2 3
4 5
6
7
8
DFS tree
Nontree edge
Tree edge
descendant
IRIS H.-R. JIANG
Summary: BFS and DFS
¨ Similarity: BFS/DFS builds the connected component
containing s.
¨ Difference: BFS tree is flat/short; DFS tree is narrow/deep.
¤ What are the nontree edges in BFS/DFS?
¨ Q: How to produce all the connected components of a graph?
¨ A:
Graphs
26
1
2 3
4 5
6
7
8
9
10
11
12
13
Lists / arrays
Queues / stacks
Implementation
27
Graphs
1
2 3
4 5
6
7
8
9
10
11
12
13
IRIS H.-R. JIANG
Representing Graphs
¨ A graph G = (V, E)
¤ |V| = the number of nodes = n
¤ |E| = the number of edges = m
¨ Dense or sparse?
¤ For a connected graph, n – 1 ! m ! ! n2
¨ Linear time = O(m+n)
¤ Why? It takes O(m+n) to read the input
Graphs
28
1
2 3
4 5
6
7
8
cardinality (size) of a set
n
2
IRIS H.-R. JIANG
DFS Tree
¨ Let T be a DFS tree, let x and y be nodes in T, and let (x, y) be a
nontree edge. Then one of x or y is an ancestor of the other.
¨ Pf:
¤ WLOG, suppose x is reached first by DFS.
¤ When (x, y) is examined during DFS(x), it is not added to T
because y is marked explored.
¤ Since y is not marked as explored when DFS(x) was first
invoked, it is a node that was discovered between the invocation
and end of the recursive call DFS(x).
¤ y is a descendant of x.
Graphs
25
DFS tree
1
2
4
5
6
7
8
1
2 3
4 5
6
7
8
DFS tree
Nontree edge
Tree edge
descendant
IRIS H.-R. JIANG
Summary: BFS and DFS
¨ Similarity: BFS/DFS builds the connected component
containing s.
¨ Difference: BFS tree is flat/short; DFS tree is narrow/deep.
¤ What are the nontree edges in BFS/DFS?
¨ Q: How to produce all the connected components of a graph?
¨ A:
Graphs
26
1
2 3
4 5
6
7
8
9
10
11
12
13
Lists / arrays
Queues / stacks
Implementation
27
Graphs
1
2 3
4 5
6
7
8
9
10
11
12
13
IRIS H.-R. JIANG
Representing Graphs
¨ A graph G = (V, E)
¤ |V| = the number of nodes = n
¤ |E| = the number of edges = m
¨ Dense or sparse?
¤ For a connected graph, n – 1 ! m ! ! n2
¨ Linear time = O(m+n)
¤ Why? It takes O(m+n) to read the input
Graphs
28
1
2 3
4 5
6
7
8
cardinality (size) of a set
n
2
IRIS H.-R. JIANG
DFS Tree
¨ Let T be a DFS tree, let x and y be nodes in T, and let (x, y) be a
nontree edge. Then one of x or y is an ancestor of the other.
¨ Pf:
¤ WLOG, suppose x is reached first by DFS.
¤ When (x, y) is examined during DFS(x), it is not added to T
because y is marked explored.
¤ Since y is not marked as explored when DFS(x) was first
invoked, it is a node that was discovered between the invocation
and end of the recursive call DFS(x).
¤ y is a descendant of x.
Graphs
25
DFS tree
1
2
4
5
6
7
8
1
2 3
4 5
6
7
8
DFS tree
Nontree edge
Tree edge
descendant
IRIS H.-R. JIANG
Summary: BFS and DFS
¨ Similarity: BFS/DFS builds the connected component
containing s.
¨ Difference: BFS tree is flat/short; DFS tree is narrow/deep.
¤ What are the nontree edges in BFS/DFS?
¨ Q: How to produce all the connected components of a graph?
¨ A:
Graphs
26
1
2 3
4 5
6
7
8
9
10
11
12
13
Lists / arrays
Queues / stacks
Implementation
27
Graphs
1
2 3
4 5
6
7
8
9
10
11
12
13
IRIS H.-R. JIANG
Representing Graphs
¨ A graph G = (V, E)
¤ |V| = the number of nodes = n
¤ |E| = the number of edges = m
¨ Dense or sparse?
¤ For a connected graph, n – 1 ! m ! ! n2
¨ Linear time = O(m+n)
¤ Why? It takes O(m+n) to read the input
Graphs
28
1
2 3
4 5
6
7
8
cardinality (size) of a set
n
2
IRIS H.-R. JIANG
Adjacency Matrix
¨ Consider a graph G = (V, E) with n nodes, V = {1, …, n}.
¨ The adjacency matrix of G is an nxn martix A where
¤ A[u, v] = 1 if (u, v) Î E;
¤ A[u, v] = 0, otherwise.
¨ Time:
¤ Q(1) time for checking if (u, v) Î E.
¤ Q(n) time for finding out all neighbors of some u Î V.
n Visit many 0’s
¨ Space: Q(n2)
¤ What if sparse graphs?
Graphs
29
1
2 3
4 5
6
7
8
1 2 3 4 5 6 7 8
1 0 1 1 0 0 0 0 0
2 1 0 1 1 1 0 0 0
3 1 1 0 0 1 0 1 1
4 0 1 0 1 1 0 0 0
5 0 1 1 1 0 1 0 0
6 0 0 0 0 1 0 0 0
7 0 0 1 0 0 0 0 1
8 0 0 1 0 0 0 1 0
symmetric
IRIS H.-R. JIANG
Adjacency List
¨ The adjacency list of G is an array Adj[]of n lists, one for each
node represents its neighbors
¤ Adj[u] = a linked list of {v | (u, v) ÎE}.
¨ Time:
¤ Q(deg(u)) time for checking one edge or all neighbors of a node.
¨ Space: O(n+m)
Graphs
30
2 0
3
[1]
1 3
[2]
1 2
[3] 5
2 0
5
[4]
2m
2 3
[5]
0
5
[6]
3 0
8
[7]
3 0
7
[8]
1
2 3
4 5
6
7
8
7 0
8
4 0
6
4 0
5
degree of u: number of neighbors
IRIS H.-R. JIANG
What is a Queue?
¨ A queue is a set of elements from which we extract elements in
first-in, first-out (FIFO) order.
¤ We select elements in the same order in which they were added.
Graphs
31
front rear
Q = (a1, ..., an)
front, rear
A
rear
A B
front rear
A B C
front
Push (A) Push (B) Push (C)
rear
A B C D
front
Push (D)
rear
B C D
front
Pop ()
rear
B C D E
front
Push (E)
a1
rear
front
Push
Pop a2 … an
Two open
ended container
IRIS H.-R. JIANG
What is a Stack?
¨ A stack is a set of elements from which we extract elements in
last-in, first-out (LIFO) order.
¤ Each time we select an element, we choose the one that was
added most recently.
Graphs
32
bottom top
S = (a1, ..., an)
B
A
D
C
B
A
C
B
A
D
C
B
A
E
D
C
B
A
top
top
top
top
top
top
A
Push (A) Push (B) Push (C) Push (D) Push (E) Pop( ) = E
a1
top
bottom
Push
Pop
a2 … an
One open ended
and one close
ended container
IRIS H.-R. JIANG
Adjacency Matrix
¨ Consider a graph G = (V, E) with n nodes, V = {1, …, n}.
¨ The adjacency matrix of G is an nxn martix A where
¤ A[u, v] = 1 if (u, v) Î E;
¤ A[u, v] = 0, otherwise.
¨ Time:
¤ Q(1) time for checking if (u, v) Î E.
¤ Q(n) time for finding out all neighbors of some u Î V.
n Visit many 0’s
¨ Space: Q(n2)
¤ What if sparse graphs?
Graphs
29
1
2 3
4 5
6
7
8
1 2 3 4 5 6 7 8
1 0 1 1 0 0 0 0 0
2 1 0 1 1 1 0 0 0
3 1 1 0 0 1 0 1 1
4 0 1 0 1 1 0 0 0
5 0 1 1 1 0 1 0 0
6 0 0 0 0 1 0 0 0
7 0 0 1 0 0 0 0 1
8 0 0 1 0 0 0 1 0
symmetric
IRIS H.-R. JIANG
Adjacency List
¨ The adjacency list of G is an array Adj[]of n lists, one for each
node represents its neighbors
¤ Adj[u] = a linked list of {v | (u, v) ÎE}.
¨ Time:
¤ Q(deg(u)) time for checking one edge or all neighbors of a node.
¨ Space: O(n+m)
Graphs
30
2 0
3
[1]
1 3
[2]
1 2
[3] 5
2 0
5
[4]
2m
2 3
[5]
0
5
[6]
3 0
8
[7]
3 0
7
[8]
1
2 3
4 5
6
7
8
7 0
8
4 0
6
4 0
5
degree of u: number of neighbors
IRIS H.-R. JIANG
What is a Queue?
¨ A queue is a set of elements from which we extract elements in
first-in, first-out (FIFO) order.
¤ We select elements in the same order in which they were added.
Graphs
31
front rear
Q = (a1, ..., an)
front, rear
A
rear
A B
front rear
A B C
front
Push (A) Push (B) Push (C)
rear
A B C D
front
Push (D)
rear
B C D
front
Pop ()
rear
B C D E
front
Push (E)
a1
rear
front
Push
Pop a2 … an
Two open
ended container
IRIS H.-R. JIANG
What is a Stack?
¨ A stack is a set of elements from which we extract elements in
last-in, first-out (LIFO) order.
¤ Each time we select an element, we choose the one that was
added most recently.
Graphs
32
bottom top
S = (a1, ..., an)
B
A
D
C
B
A
C
B
A
D
C
B
A
E
D
C
B
A
top
top
top
top
top
top
A
Push (A) Push (B) Push (C) Push (D) Push (E) Pop( ) = E
a1
top
bottom
Push
Pop
a2 … an
One open ended
and one close
ended container
IRIS H.-R. JIANG
Adjacency Matrix
¨ Consider a graph G = (V, E) with n nodes, V = {1, …, n}.
¨ The adjacency matrix of G is an nxn martix A where
¤ A[u, v] = 1 if (u, v) Î E;
¤ A[u, v] = 0, otherwise.
¨ Time:
¤ Q(1) time for checking if (u, v) Î E.
¤ Q(n) time for finding out all neighbors of some u Î V.
n Visit many 0’s
¨ Space: Q(n2)
¤ What if sparse graphs?
Graphs
29
1
2 3
4 5
6
7
8
1 2 3 4 5 6 7 8
1 0 1 1 0 0 0 0 0
2 1 0 1 1 1 0 0 0
3 1 1 0 0 1 0 1 1
4 0 1 0 1 1 0 0 0
5 0 1 1 1 0 1 0 0
6 0 0 0 0 1 0 0 0
7 0 0 1 0 0 0 0 1
8 0 0 1 0 0 0 1 0
symmetric
IRIS H.-R. JIANG
Adjacency List
¨ The adjacency list of G is an array Adj[]of n lists, one for each
node represents its neighbors
¤ Adj[u] = a linked list of {v | (u, v) ÎE}.
¨ Time:
¤ Q(deg(u)) time for checking one edge or all neighbors of a node.
¨ Space: O(n+m)
Graphs
30
2 0
3
[1]
1 3
[2]
1 2
[3] 5
2 0
5
[4]
2m
2 3
[5]
0
5
[6]
3 0
8
[7]
3 0
7
[8]
1
2 3
4 5
6
7
8
7 0
8
4 0
6
4 0
5
degree of u: number of neighbors
IRIS H.-R. JIANG
What is a Queue?
¨ A queue is a set of elements from which we extract elements in
first-in, first-out (FIFO) order.
¤ We select elements in the same order in which they were added.
Graphs
31
front rear
Q = (a1, ..., an)
front, rear
A
rear
A B
front rear
A B C
front
Push (A) Push (B) Push (C)
rear
A B C D
front
Push (D)
rear
B C D
front
Pop ()
rear
B C D E
front
Push (E)
a1
rear
front
Push
Pop a2 … an
Two open
ended container
IRIS H.-R. JIANG
What is a Stack?
¨ A stack is a set of elements from which we extract elements in
last-in, first-out (LIFO) order.
¤ Each time we select an element, we choose the one that was
added most recently.
Graphs
32
bottom top
S = (a1, ..., an)
B
A
D
C
B
A
C
B
A
D
C
B
A
E
D
C
B
A
top
top
top
top
top
top
A
Push (A) Push (B) Push (C) Push (D) Push (E) Pop( ) = E
a1
top
bottom
Push
Pop
a2 … an
One open ended
and one close
ended container
IRIS H.-R. JIANG
Adjacency Matrix
¨ Consider a graph G = (V, E) with n nodes, V = {1, …, n}.
¨ The adjacency matrix of G is an nxn martix A where
¤ A[u, v] = 1 if (u, v) Î E;
¤ A[u, v] = 0, otherwise.
¨ Time:
¤ Q(1) time for checking if (u, v) Î E.
¤ Q(n) time for finding out all neighbors of some u Î V.
n Visit many 0’s
¨ Space: Q(n2)
¤ What if sparse graphs?
Graphs
29
1
2 3
4 5
6
7
8
1 2 3 4 5 6 7 8
1 0 1 1 0 0 0 0 0
2 1 0 1 1 1 0 0 0
3 1 1 0 0 1 0 1 1
4 0 1 0 1 1 0 0 0
5 0 1 1 1 0 1 0 0
6 0 0 0 0 1 0 0 0
7 0 0 1 0 0 0 0 1
8 0 0 1 0 0 0 1 0
symmetric
IRIS H.-R. JIANG
Adjacency List
¨ The adjacency list of G is an array Adj[]of n lists, one for each
node represents its neighbors
¤ Adj[u] = a linked list of {v | (u, v) ÎE}.
¨ Time:
¤ Q(deg(u)) time for checking one edge or all neighbors of a node.
¨ Space: O(n+m)
Graphs
30
2 0
3
[1]
1 3
[2]
1 2
[3] 5
2 0
5
[4]
2m
2 3
[5]
0
5
[6]
3 0
8
[7]
3 0
7
[8]
1
2 3
4 5
6
7
8
7 0
8
4 0
6
4 0
5
degree of u: number of neighbors
IRIS H.-R. JIANG
What is a Queue?
¨ A queue is a set of elements from which we extract elements in
first-in, first-out (FIFO) order.
¤ We select elements in the same order in which they were added.
Graphs
31
front rear
Q = (a1, ..., an)
front, rear
A
rear
A B
front rear
A B C
front
Push (A) Push (B) Push (C)
rear
A B C D
front
Push (D)
rear
B C D
front
Pop ()
rear
B C D E
front
Push (E)
a1
rear
front
Push
Pop a2 … an
Two open
ended container
IRIS H.-R. JIANG
What is a Stack?
¨ A stack is a set of elements from which we extract elements in
last-in, first-out (LIFO) order.
¤ Each time we select an element, we choose the one that was
added most recently.
Graphs
32
bottom top
S = (a1, ..., an)
B
A
D
C
B
A
C
B
A
D
C
B
A
E
D
C
B
A
top
top
top
top
top
top
A
Push (A) Push (B) Push (C) Push (D) Push (E) Pop( ) = E
a1
top
bottom
Push
Pop
a2 … an
One open ended
and one close
ended container
IRIS H.-R. JIANG
Linked Stacks and Queues
¨ Implement queues and stacks by linked lists
Graphs
33
datalink
top
.
.
.
0
Linked stack
Advantage?
- Variable sizes
- Insert/delete in O(1)
data link
front
Linked queue
0
rear
…
Push
Pop
Push
Pop
IRIS H.-R. JIANG
¨ Adjacency list is ideal for implementing BFS
¨ Q: How to manage each layer list L[i]?
¨ A: A queue/stack is fine
¤ Nodes in L[i] can be in any order
¤ Or, we can merge all layer lists into a single list L as a queue
BFS(s) // T will be BFS tree rooted at s; layer counter i; layer list L[i]
1. Discovered[s] = true; Discovered[v] = false for other v
2. i = 0; L[0] = {s}; T = {};
3. while (L[i] is not empty) do
4. L[i+1] = {};
5. for each (node uÎL[i]) do
6. for each (edge (u, v) incident to u) do
7. if (Discovered[v] = false) then
8. Discovered[v] = true
9. T = T + {(u, v)}
10. L[i+1] = L[i+1] + {v}
11. i++
Implementing BFS
Graphs
34
1
2 3
4 5
6
7
8
1
2 3
4 5
6
7
8
L0
L1
L2
L3
Q: Running time?
O(n2) or O(n+m)
Why?
IRIS H.-R. JIANG
¨ We implement DFS by adjacency list
¨ Recursive procedure
¨ Alternative implementation of DFS
¤ Process each adjacency list in the reverse order
DFS(u)
1. mark u as explored and add u to R
2. foreach edge (u, v) incident to u do
3. if (v is not marked as explored) then
4. recursively invoke DFS(v)
Implementing DFS
Graphs
35
DFS(s)
// S: a stack of nodes whose neighbors haven’t been entirely explored
1. S = {s}
2. while (S is not empty) do
3. remove a node u from S
4. if (Explored[u] = false) then
5. Explored[u] = true
6. for each (edge (u, v) incident to u) do
7. S = S + {v}
1
2 3
4 5
6
7
8
1
2 3
4 5
6
7
8
Q: Running time?
O(n2) or O(n+m)
Why?
IRIS H.-R. JIANG
Summary: Implementation
¨ Graph:
¨ Graph traversal
¤ BFS: queue (or stack)
¤ DFS: stack
¤ O(n+m) time
Graphs
36
Adjacency matrix vs. Adjacency list Winner
Faster to find an edge? Matrix
Faster to find degree? List
Faster to traverse the graph? List
Storage for sparse graph? List
Storage for dense graph? Matrix
Edge insertion or deletion? Matrix
Better for most applications? List
IRIS H.-R. JIANG
Linked Stacks and Queues
¨ Implement queues and stacks by linked lists
Graphs
33
datalink
top
.
.
.
0
Linked stack
Advantage?
- Variable sizes
- Insert/delete in O(1)
data link
front
Linked queue
0
rear
…
Push
Pop
Push
Pop
IRIS H.-R. JIANG
¨ Adjacency list is ideal for implementing BFS
¨ Q: How to manage each layer list L[i]?
¨ A: A queue/stack is fine
¤ Nodes in L[i] can be in any order
¤ Or, we can merge all layer lists into a single list L as a queue
BFS(s) // T will be BFS tree rooted at s; layer counter i; layer list L[i]
1. Discovered[s] = true; Discovered[v] = false for other v
2. i = 0; L[0] = {s}; T = {};
3. while (L[i] is not empty) do
4. L[i+1] = {};
5. for each (node uÎL[i]) do
6. for each (edge (u, v) incident to u) do
7. if (Discovered[v] = false) then
8. Discovered[v] = true
9. T = T + {(u, v)}
10. L[i+1] = L[i+1] + {v}
11. i++
Implementing BFS
Graphs
34
1
2 3
4 5
6
7
8
1
2 3
4 5
6
7
8
L0
L1
L2
L3
Q: Running time?
O(n2) or O(n+m)
Why?
IRIS H.-R. JIANG
¨ We implement DFS by adjacency list
¨ Recursive procedure
¨ Alternative implementation of DFS
¤ Process each adjacency list in the reverse order
DFS(u)
1. mark u as explored and add u to R
2. foreach edge (u, v) incident to u do
3. if (v is not marked as explored) then
4. recursively invoke DFS(v)
Implementing DFS
Graphs
35
DFS(s)
// S: a stack of nodes whose neighbors haven’t been entirely explored
1. S = {s}
2. while (S is not empty) do
3. remove a node u from S
4. if (Explored[u] = false) then
5. Explored[u] = true
6. for each (edge (u, v) incident to u) do
7. S = S + {v}
1
2 3
4 5
6
7
8
1
2 3
4 5
6
7
8
Q: Running time?
O(n2) or O(n+m)
Why?
IRIS H.-R. JIANG
Summary: Implementation
¨ Graph:
¨ Graph traversal
¤ BFS: queue (or stack)
¤ DFS: stack
¤ O(n+m) time
Graphs
36
Adjacency matrix vs. Adjacency list Winner
Faster to find an edge? Matrix
Faster to find degree? List
Faster to traverse the graph? List
Storage for sparse graph? List
Storage for dense graph? Matrix
Edge insertion or deletion? Matrix
Better for most applications? List
IRIS H.-R. JIANG
Linked Stacks and Queues
¨ Implement queues and stacks by linked lists
Graphs
33
datalink
top
.
.
.
0
Linked stack
Advantage?
- Variable sizes
- Insert/delete in O(1)
data link
front
Linked queue
0
rear
…
Push
Pop
Push
Pop
IRIS H.-R. JIANG
¨ Adjacency list is ideal for implementing BFS
¨ Q: How to manage each layer list L[i]?
¨ A: A queue/stack is fine
¤ Nodes in L[i] can be in any order
¤ Or, we can merge all layer lists into a single list L as a queue
BFS(s) // T will be BFS tree rooted at s; layer counter i; layer list L[i]
1. Discovered[s] = true; Discovered[v] = false for other v
2. i = 0; L[0] = {s}; T = {};
3. while (L[i] is not empty) do
4. L[i+1] = {};
5. for each (node uÎL[i]) do
6. for each (edge (u, v) incident to u) do
7. if (Discovered[v] = false) then
8. Discovered[v] = true
9. T = T + {(u, v)}
10. L[i+1] = L[i+1] + {v}
11. i++
Implementing BFS
Graphs
34
1
2 3
4 5
6
7
8
1
2 3
4 5
6
7
8
L0
L1
L2
L3
Q: Running time?
O(n2) or O(n+m)
Why?
IRIS H.-R. JIANG
¨ We implement DFS by adjacency list
¨ Recursive procedure
¨ Alternative implementation of DFS
¤ Process each adjacency list in the reverse order
DFS(u)
1. mark u as explored and add u to R
2. foreach edge (u, v) incident to u do
3. if (v is not marked as explored) then
4. recursively invoke DFS(v)
Implementing DFS
Graphs
35
DFS(s)
// S: a stack of nodes whose neighbors haven’t been entirely explored
1. S = {s}
2. while (S is not empty) do
3. remove a node u from S
4. if (Explored[u] = false) then
5. Explored[u] = true
6. for each (edge (u, v) incident to u) do
7. S = S + {v}
1
2 3
4 5
6
7
8
1
2 3
4 5
6
7
8
Q: Running time?
O(n2) or O(n+m)
Why?
IRIS H.-R. JIANG
Summary: Implementation
¨ Graph:
¨ Graph traversal
¤ BFS: queue (or stack)
¤ DFS: stack
¤ O(n+m) time
Graphs
36
Adjacency matrix vs. Adjacency list Winner
Faster to find an edge? Matrix
Faster to find degree? List
Faster to traverse the graph? List
Storage for sparse graph? List
Storage for dense graph? Matrix
Edge insertion or deletion? Matrix
Better for most applications? List
IRIS H.-R. JIANG
Linked Stacks and Queues
¨ Implement queues and stacks by linked lists
Graphs
33
datalink
top
.
.
.
0
Linked stack
Advantage?
- Variable sizes
- Insert/delete in O(1)
data link
front
Linked queue
0
rear
…
Push
Pop
Push
Pop
IRIS H.-R. JIANG
¨ Adjacency list is ideal for implementing BFS
¨ Q: How to manage each layer list L[i]?
¨ A: A queue/stack is fine
¤ Nodes in L[i] can be in any order
¤ Or, we can merge all layer lists into a single list L as a queue
BFS(s) // T will be BFS tree rooted at s; layer counter i; layer list L[i]
1. Discovered[s] = true; Discovered[v] = false for other v
2. i = 0; L[0] = {s}; T = {};
3. while (L[i] is not empty) do
4. L[i+1] = {};
5. for each (node uÎL[i]) do
6. for each (edge (u, v) incident to u) do
7. if (Discovered[v] = false) then
8. Discovered[v] = true
9. T = T + {(u, v)}
10. L[i+1] = L[i+1] + {v}
11. i++
Implementing BFS
Graphs
34
1
2 3
4 5
6
7
8
1
2 3
4 5
6
7
8
L0
L1
L2
L3
Q: Running time?
O(n2) or O(n+m)
Why?
IRIS H.-R. JIANG
¨ We implement DFS by adjacency list
¨ Recursive procedure
¨ Alternative implementation of DFS
¤ Process each adjacency list in the reverse order
DFS(u)
1. mark u as explored and add u to R
2. foreach edge (u, v) incident to u do
3. if (v is not marked as explored) then
4. recursively invoke DFS(v)
Implementing DFS
Graphs
35
DFS(s)
// S: a stack of nodes whose neighbors haven’t been entirely explored
1. S = {s}
2. while (S is not empty) do
3. remove a node u from S
4. if (Explored[u] = false) then
5. Explored[u] = true
6. for each (edge (u, v) incident to u) do
7. S = S + {v}
1
2 3
4 5
6
7
8
1
2 3
4 5
6
7
8
Q: Running time?
O(n2) or O(n+m)
Why?
IRIS H.-R. JIANG
Summary: Implementation
¨ Graph:
¨ Graph traversal
¤ BFS: queue (or stack)
¤ DFS: stack
¤ O(n+m) time
Graphs
36
Adjacency matrix vs. Adjacency list Winner
Faster to find an edge? Matrix
Faster to find degree? List
Faster to traverse the graph? List
Storage for sparse graph? List
Storage for dense graph? Matrix
Edge insertion or deletion? Matrix
Better for most applications? List
Application of BFS
Testing Bipartiteness
37
Graphs
IRIS H.-R. JIANG
Bipartite Graphs
¨ A bipartite graph (bigraph) is a graph whose nodes can be
partitioned into sets X and Y in such a way that every edge has
one one end in X and the other end in Y.
¤ X and Y are two disjoint sets.
¤ No two nodes within the same set are adjacent.
Graphs
38
http://mathworld.wolfram.com/BipartiteGraph.html
X Y
G = (X, Y, E)
IRIS H.-R. JIANG
Is a Graph Bipartite?
¨ Q: Given a graph G, is it bipartite?
¨ A: Color the nodes with blue and red (two-coloring)
¨ If a graph G is bipartite, then it cannot contain an odd cycle.
Graphs
39
2 3
1
5
7
6 4
2 3
1
5
7
6
4
2
3
1
2
3
1
IRIS H.-R. JIANG
Testing Bipartiteness
¨ Color the nodes with blue and red
¨ Procedure:
1. Assume G = (V, E) is connected.
n Otherwise, we analyze connected components separately.
2. Pick any node sÎV and color it red
n Anyway, s must receive some color.
3. Color all the neighbors of s blue.
4. Repeat coloring red/blue until the whole graph is colored.
5. Test bipartiteness: every edge has ends of opposite colors.
Graphs
40
2 3
1
5
7
6 4
2 3
1
5
7
6
4
X Y
2 3
1
5
7
3
1
4
Arbitrarily
chosen
2
5
7
6
6
Application of BFS
Testing Bipartiteness
37
Graphs
IRIS H.-R. JIANG
Bipartite Graphs
¨ A bipartite graph (bigraph) is a graph whose nodes can be
partitioned into sets X and Y in such a way that every edge has
one one end in X and the other end in Y.
¤ X and Y are two disjoint sets.
¤ No two nodes within the same set are adjacent.
Graphs
38
http://mathworld.wolfram.com/BipartiteGraph.html
X Y
G = (X, Y, E)
IRIS H.-R. JIANG
Is a Graph Bipartite?
¨ Q: Given a graph G, is it bipartite?
¨ A: Color the nodes with blue and red (two-coloring)
¨ If a graph G is bipartite, then it cannot contain an odd cycle.
Graphs
39
2 3
1
5
7
6 4
2 3
1
5
7
6
4
2
3
1
2
3
1
IRIS H.-R. JIANG
Testing Bipartiteness
¨ Color the nodes with blue and red
¨ Procedure:
1. Assume G = (V, E) is connected.
n Otherwise, we analyze connected components separately.
2. Pick any node sÎV and color it red
n Anyway, s must receive some color.
3. Color all the neighbors of s blue.
4. Repeat coloring red/blue until the whole graph is colored.
5. Test bipartiteness: every edge has ends of opposite colors.
Graphs
40
2 3
1
5
7
6 4
2 3
1
5
7
6
4
X Y
2 3
1
5
7
3
1
4
Arbitrarily
chosen
2
5
7
6
6
Application of BFS
Testing Bipartiteness
37
Graphs
IRIS H.-R. JIANG
Bipartite Graphs
¨ A bipartite graph (bigraph) is a graph whose nodes can be
partitioned into sets X and Y in such a way that every edge has
one one end in X and the other end in Y.
¤ X and Y are two disjoint sets.
¤ No two nodes within the same set are adjacent.
Graphs
38
http://mathworld.wolfram.com/BipartiteGraph.html
X Y
G = (X, Y, E)
IRIS H.-R. JIANG
Is a Graph Bipartite?
¨ Q: Given a graph G, is it bipartite?
¨ A: Color the nodes with blue and red (two-coloring)
¨ If a graph G is bipartite, then it cannot contain an odd cycle.
Graphs
39
2 3
1
5
7
6 4
2 3
1
5
7
6
4
2
3
1
2
3
1
IRIS H.-R. JIANG
Testing Bipartiteness
¨ Color the nodes with blue and red
¨ Procedure:
1. Assume G = (V, E) is connected.
n Otherwise, we analyze connected components separately.
2. Pick any node sÎV and color it red
n Anyway, s must receive some color.
3. Color all the neighbors of s blue.
4. Repeat coloring red/blue until the whole graph is colored.
5. Test bipartiteness: every edge has ends of opposite colors.
Graphs
40
2 3
1
5
7
6 4
2 3
1
5
7
6
4
X Y
2 3
1
5
7
3
1
4
Arbitrarily
chosen
2
5
7
6
6
Application of BFS
Testing Bipartiteness
37
Graphs
IRIS H.-R. JIANG
Bipartite Graphs
¨ A bipartite graph (bigraph) is a graph whose nodes can be
partitioned into sets X and Y in such a way that every edge has
one one end in X and the other end in Y.
¤ X and Y are two disjoint sets.
¤ No two nodes within the same set are adjacent.
Graphs
38
http://mathworld.wolfram.com/BipartiteGraph.html
X Y
G = (X, Y, E)
IRIS H.-R. JIANG
Is a Graph Bipartite?
¨ Q: Given a graph G, is it bipartite?
¨ A: Color the nodes with blue and red (two-coloring)
¨ If a graph G is bipartite, then it cannot contain an odd cycle.
Graphs
39
2 3
1
5
7
6 4
2 3
1
5
7
6
4
2
3
1
2
3
1
IRIS H.-R. JIANG
Testing Bipartiteness
¨ Color the nodes with blue and red
¨ Procedure:
1. Assume G = (V, E) is connected.
n Otherwise, we analyze connected components separately.
2. Pick any node sÎV and color it red
n Anyway, s must receive some color.
3. Color all the neighbors of s blue.
4. Repeat coloring red/blue until the whole graph is colored.
5. Test bipartiteness: every edge has ends of opposite colors.
Graphs
40
2 3
1
5
7
6 4
2 3
1
5
7
6
4
X Y
2 3
1
5
7
3
1
4
Arbitrarily
chosen
2
5
7
6
6
IRIS H.-R. JIANG
Implementation: Testing Bipartiteness
¨ Q: How to implement this procedure?
¨ A: BFS! O(m+n)-time
¤ We perform BFS from any s, coloring s red, all of layer L1 blue, …
n Even/odd-numbered layers red/blue
n Insert the following statements after line 10 of BFS(s) (p. 34)
Graphs
41
2 3
1
5
7
6 4
2 3
1
5
7
6
4
X Y
Arbitrarily
chosen
2 3
1
5
7
6 4
10. L[i+1] = L[i+1] + {v}
10a. if ((i+1) is even) then
10b. Color[v] = red
10c. else
10d. Color[v] = blue
IRIS H.-R. JIANG
Proof: Correctness (1/2)
¨ Let G be a connected graph and let L0, L1, … be the layers
produced by BFS starting at node s. Then exactly one of the
following holds.
1. No edge of G joins two nodes of the same layer, and G is
bipartite.
2. An edge of G joins two nodes of the same layer, and G contains
an odd-length cycle (and hence is not bipartite).
¨ Pf: Case 1 is trivial.
Graphs
42
Let xÎLi, yÎLj, and (x, y) ÎE.
Then i and j differ by at most 1.
L0 L1 L2 L3 L0 L1 L2 L3
IRIS H.-R. JIANG
Proof: Correctness (2/2)
¨ Pf: (Case 2)
¤ Suppose (x, y) is an edge with x, y in same layer Lj.
¤ Let z = lca(x, y) = lowest common ancestor.
¤ Let Li be the layer containing z.
¤ Consider the cycle that takes edge from x to y, then path from y
to z, then path from z to x.
¤ Its length is 1 + (j-i) + (j-i), which is odd.
Graphs
43
Let xÎLi, yÎLj, and (x, y) ÎE.
Then i and j differ by at most 1.
z
s
x
y
L0 Li Lj
(x, y) y ->z z ->x
z = lca(x, y)
Connectivity in Directed Graphs
44
Graphs
2 3
1
5
7
6 4
IRIS H.-R. JIANG
Implementation: Testing Bipartiteness
¨ Q: How to implement this procedure?
¨ A: BFS! O(m+n)-time
¤ We perform BFS from any s, coloring s red, all of layer L1 blue, …
n Even/odd-numbered layers red/blue
n Insert the following statements after line 10 of BFS(s) (p. 34)
Graphs
41
2 3
1
5
7
6 4
2 3
1
5
7
6
4
X Y
Arbitrarily
chosen
2 3
1
5
7
6 4
10. L[i+1] = L[i+1] + {v}
10a. if ((i+1) is even) then
10b. Color[v] = red
10c. else
10d. Color[v] = blue
IRIS H.-R. JIANG
Proof: Correctness (1/2)
¨ Let G be a connected graph and let L0, L1, … be the layers
produced by BFS starting at node s. Then exactly one of the
following holds.
1. No edge of G joins two nodes of the same layer, and G is
bipartite.
2. An edge of G joins two nodes of the same layer, and G contains
an odd-length cycle (and hence is not bipartite).
¨ Pf: Case 1 is trivial.
Graphs
42
Let xÎLi, yÎLj, and (x, y) ÎE.
Then i and j differ by at most 1.
L0 L1 L2 L3 L0 L1 L2 L3
IRIS H.-R. JIANG
Proof: Correctness (2/2)
¨ Pf: (Case 2)
¤ Suppose (x, y) is an edge with x, y in same layer Lj.
¤ Let z = lca(x, y) = lowest common ancestor.
¤ Let Li be the layer containing z.
¤ Consider the cycle that takes edge from x to y, then path from y
to z, then path from z to x.
¤ Its length is 1 + (j-i) + (j-i), which is odd.
Graphs
43
Let xÎLi, yÎLj, and (x, y) ÎE.
Then i and j differ by at most 1.
z
s
x
y
L0 Li Lj
(x, y) y ->z z ->x
z = lca(x, y)
Connectivity in Directed Graphs
44
Graphs
2 3
1
5
7
6 4
IRIS H.-R. JIANG
Implementation: Testing Bipartiteness
¨ Q: How to implement this procedure?
¨ A: BFS! O(m+n)-time
¤ We perform BFS from any s, coloring s red, all of layer L1 blue, …
n Even/odd-numbered layers red/blue
n Insert the following statements after line 10 of BFS(s) (p. 34)
Graphs
41
2 3
1
5
7
6 4
2 3
1
5
7
6
4
X Y
Arbitrarily
chosen
2 3
1
5
7
6 4
10. L[i+1] = L[i+1] + {v}
10a. if ((i+1) is even) then
10b. Color[v] = red
10c. else
10d. Color[v] = blue
IRIS H.-R. JIANG
Proof: Correctness (1/2)
¨ Let G be a connected graph and let L0, L1, … be the layers
produced by BFS starting at node s. Then exactly one of the
following holds.
1. No edge of G joins two nodes of the same layer, and G is
bipartite.
2. An edge of G joins two nodes of the same layer, and G contains
an odd-length cycle (and hence is not bipartite).
¨ Pf: Case 1 is trivial.
Graphs
42
Let xÎLi, yÎLj, and (x, y) ÎE.
Then i and j differ by at most 1.
L0 L1 L2 L3 L0 L1 L2 L3
IRIS H.-R. JIANG
Proof: Correctness (2/2)
¨ Pf: (Case 2)
¤ Suppose (x, y) is an edge with x, y in same layer Lj.
¤ Let z = lca(x, y) = lowest common ancestor.
¤ Let Li be the layer containing z.
¤ Consider the cycle that takes edge from x to y, then path from y
to z, then path from z to x.
¤ Its length is 1 + (j-i) + (j-i), which is odd.
Graphs
43
Let xÎLi, yÎLj, and (x, y) ÎE.
Then i and j differ by at most 1.
z
s
x
y
L0 Li Lj
(x, y) y ->z z ->x
z = lca(x, y)
Connectivity in Directed Graphs
44
Graphs
2 3
1
5
7
6 4
IRIS H.-R. JIANG
Implementation: Testing Bipartiteness
¨ Q: How to implement this procedure?
¨ A: BFS! O(m+n)-time
¤ We perform BFS from any s, coloring s red, all of layer L1 blue, …
n Even/odd-numbered layers red/blue
n Insert the following statements after line 10 of BFS(s) (p. 34)
Graphs
41
2 3
1
5
7
6 4
2 3
1
5
7
6
4
X Y
Arbitrarily
chosen
2 3
1
5
7
6 4
10. L[i+1] = L[i+1] + {v}
10a. if ((i+1) is even) then
10b. Color[v] = red
10c. else
10d. Color[v] = blue
IRIS H.-R. JIANG
Proof: Correctness (1/2)
¨ Let G be a connected graph and let L0, L1, … be the layers
produced by BFS starting at node s. Then exactly one of the
following holds.
1. No edge of G joins two nodes of the same layer, and G is
bipartite.
2. An edge of G joins two nodes of the same layer, and G contains
an odd-length cycle (and hence is not bipartite).
¨ Pf: Case 1 is trivial.
Graphs
42
Let xÎLi, yÎLj, and (x, y) ÎE.
Then i and j differ by at most 1.
L0 L1 L2 L3 L0 L1 L2 L3
IRIS H.-R. JIANG
Proof: Correctness (2/2)
¨ Pf: (Case 2)
¤ Suppose (x, y) is an edge with x, y in same layer Lj.
¤ Let z = lca(x, y) = lowest common ancestor.
¤ Let Li be the layer containing z.
¤ Consider the cycle that takes edge from x to y, then path from y
to z, then path from z to x.
¤ Its length is 1 + (j-i) + (j-i), which is odd.
Graphs
43
Let xÎLi, yÎLj, and (x, y) ÎE.
Then i and j differ by at most 1.
z
s
x
y
L0 Li Lj
(x, y) y ->z z ->x
z = lca(x, y)
Connectivity in Directed Graphs
44
Graphs
2 3
1
5
7
6 4
IRIS H.-R. JIANG
Recap: Directed Graphs
¨ In a directed graph: asymmetric relationships
¤ Edges are directed, i.e., (u, v) != (v, u)
n e.g., u knows v (celebrity), while v doesn’t know u.
n Directionality is crucial.
¨ Representation: Adjacency list
¤ Each node is associated with two lists, instead of one in an
undirected graph.
n To which
n From which
¨ Graph search algorithms: BFS/DFS
¤ Almost the same as undirected graphs
n Again, directionality is crucial.
n Q: What can we reach from node 1?
n A:
Graphs
45
u v
tail head
(u, v)
2 3
1
5
7
6 4
1
5
7
4
6
IRIS H.-R. JIANG
Strong Connectivity
¨ Nodes u and v are mutually reachable if there is a path from u
to v and also a path from v to u.
¨ A directed graph is strongly connected if every pair of nodes
are mutually reachable.
¤ Q: When are there no mutually reachable nodes?
¨ Lemma: If u and v are mutually reachable, and v and w are
mutually reachable, then u and w are mutually reachable.
¤ Simple but important!
¨ Pf:
Graphs
46
v
u
v
u w
v v
u w
v
IRIS H.-R. JIANG
Testing Strong Connectivity
¨ Q: Can we determine if a graph is strongly connected in linear
time?
¨ A: Yes. How? Why?
¤ Time: O(m+n)
¤ Q: Correctness?
¤ Q: How to partition a directed graph into strong components?
Graphs
47
TestSC(G)
1. pick any node s in G
2. R = BFS(s, G)
3. Rrev = BFS(s, Grev)
4. if (R = V = Rrev) then return true else false
Grev: reverse the direction of every edge in G
(u, v) in Grev if (v, u)in G
u
s
v
R = V = Rrev
IRIS H.-R. JIANG
Strong Component
¨ The strong component containing s in a directed graph is the
maximal set of all v s.t. s and v are mutually reachable.
¤ a.k.a. strongly connected component
¨ Theorem: For any two nodes s and t in a directed graph, their
strong components are either identical or disjoint.
¤ Q: When are they identical? When are they disjoint?
¨ Pf:
¤ Identical if s and t are mutually reachable
n s -- v, s -- t, v -- t
¤ Disjoint if s and t are not mutually reachable
n Proof by contradiction
Graphs
48
IRIS H.-R. JIANG
Recap: Directed Graphs
¨ In a directed graph: asymmetric relationships
¤ Edges are directed, i.e., (u, v) != (v, u)
n e.g., u knows v (celebrity), while v doesn’t know u.
n Directionality is crucial.
¨ Representation: Adjacency list
¤ Each node is associated with two lists, instead of one in an
undirected graph.
n To which
n From which
¨ Graph search algorithms: BFS/DFS
¤ Almost the same as undirected graphs
n Again, directionality is crucial.
n Q: What can we reach from node 1?
n A:
Graphs
45
u v
tail head
(u, v)
2 3
1
5
7
6 4
1
5
7
4
6
IRIS H.-R. JIANG
Strong Connectivity
¨ Nodes u and v are mutually reachable if there is a path from u
to v and also a path from v to u.
¨ A directed graph is strongly connected if every pair of nodes
are mutually reachable.
¤ Q: When are there no mutually reachable nodes?
¨ Lemma: If u and v are mutually reachable, and v and w are
mutually reachable, then u and w are mutually reachable.
¤ Simple but important!
¨ Pf:
Graphs
46
v
u
v
u w
v v
u w
v
IRIS H.-R. JIANG
Testing Strong Connectivity
¨ Q: Can we determine if a graph is strongly connected in linear
time?
¨ A: Yes. How? Why?
¤ Time: O(m+n)
¤ Q: Correctness?
¤ Q: How to partition a directed graph into strong components?
Graphs
47
TestSC(G)
1. pick any node s in G
2. R = BFS(s, G)
3. Rrev = BFS(s, Grev)
4. if (R = V = Rrev) then return true else false
Grev: reverse the direction of every edge in G
(u, v) in Grev if (v, u)in G
u
s
v
R = V = Rrev
IRIS H.-R. JIANG
Strong Component
¨ The strong component containing s in a directed graph is the
maximal set of all v s.t. s and v are mutually reachable.
¤ a.k.a. strongly connected component
¨ Theorem: For any two nodes s and t in a directed graph, their
strong components are either identical or disjoint.
¤ Q: When are they identical? When are they disjoint?
¨ Pf:
¤ Identical if s and t are mutually reachable
n s -- v, s -- t, v -- t
¤ Disjoint if s and t are not mutually reachable
n Proof by contradiction
Graphs
48
IRIS H.-R. JIANG
Recap: Directed Graphs
¨ In a directed graph: asymmetric relationships
¤ Edges are directed, i.e., (u, v) != (v, u)
n e.g., u knows v (celebrity), while v doesn’t know u.
n Directionality is crucial.
¨ Representation: Adjacency list
¤ Each node is associated with two lists, instead of one in an
undirected graph.
n To which
n From which
¨ Graph search algorithms: BFS/DFS
¤ Almost the same as undirected graphs
n Again, directionality is crucial.
n Q: What can we reach from node 1?
n A:
Graphs
45
u v
tail head
(u, v)
2 3
1
5
7
6 4
1
5
7
4
6
IRIS H.-R. JIANG
Strong Connectivity
¨ Nodes u and v are mutually reachable if there is a path from u
to v and also a path from v to u.
¨ A directed graph is strongly connected if every pair of nodes
are mutually reachable.
¤ Q: When are there no mutually reachable nodes?
¨ Lemma: If u and v are mutually reachable, and v and w are
mutually reachable, then u and w are mutually reachable.
¤ Simple but important!
¨ Pf:
Graphs
46
v
u
v
u w
v v
u w
v
IRIS H.-R. JIANG
Testing Strong Connectivity
¨ Q: Can we determine if a graph is strongly connected in linear
time?
¨ A: Yes. How? Why?
¤ Time: O(m+n)
¤ Q: Correctness?
¤ Q: How to partition a directed graph into strong components?
Graphs
47
TestSC(G)
1. pick any node s in G
2. R = BFS(s, G)
3. Rrev = BFS(s, Grev)
4. if (R = V = Rrev) then return true else false
Grev: reverse the direction of every edge in G
(u, v) in Grev if (v, u)in G
u
s
v
R = V = Rrev
IRIS H.-R. JIANG
Strong Component
¨ The strong component containing s in a directed graph is the
maximal set of all v s.t. s and v are mutually reachable.
¤ a.k.a. strongly connected component
¨ Theorem: For any two nodes s and t in a directed graph, their
strong components are either identical or disjoint.
¤ Q: When are they identical? When are they disjoint?
¨ Pf:
¤ Identical if s and t are mutually reachable
n s -- v, s -- t, v -- t
¤ Disjoint if s and t are not mutually reachable
n Proof by contradiction
Graphs
48
IRIS H.-R. JIANG
Recap: Directed Graphs
¨ In a directed graph: asymmetric relationships
¤ Edges are directed, i.e., (u, v) != (v, u)
n e.g., u knows v (celebrity), while v doesn’t know u.
n Directionality is crucial.
¨ Representation: Adjacency list
¤ Each node is associated with two lists, instead of one in an
undirected graph.
n To which
n From which
¨ Graph search algorithms: BFS/DFS
¤ Almost the same as undirected graphs
n Again, directionality is crucial.
n Q: What can we reach from node 1?
n A:
Graphs
45
u v
tail head
(u, v)
2 3
1
5
7
6 4
1
5
7
4
6
IRIS H.-R. JIANG
Strong Connectivity
¨ Nodes u and v are mutually reachable if there is a path from u
to v and also a path from v to u.
¨ A directed graph is strongly connected if every pair of nodes
are mutually reachable.
¤ Q: When are there no mutually reachable nodes?
¨ Lemma: If u and v are mutually reachable, and v and w are
mutually reachable, then u and w are mutually reachable.
¤ Simple but important!
¨ Pf:
Graphs
46
v
u
v
u w
v v
u w
v
IRIS H.-R. JIANG
Testing Strong Connectivity
¨ Q: Can we determine if a graph is strongly connected in linear
time?
¨ A: Yes. How? Why?
¤ Time: O(m+n)
¤ Q: Correctness?
¤ Q: How to partition a directed graph into strong components?
Graphs
47
TestSC(G)
1. pick any node s in G
2. R = BFS(s, G)
3. Rrev = BFS(s, Grev)
4. if (R = V = Rrev) then return true else false
Grev: reverse the direction of every edge in G
(u, v) in Grev if (v, u)in G
u
s
v
R = V = Rrev
IRIS H.-R. JIANG
Strong Component
¨ The strong component containing s in a directed graph is the
maximal set of all v s.t. s and v are mutually reachable.
¤ a.k.a. strongly connected component
¨ Theorem: For any two nodes s and t in a directed graph, their
strong components are either identical or disjoint.
¤ Q: When are they identical? When are they disjoint?
¨ Pf:
¤ Identical if s and t are mutually reachable
n s -- v, s -- t, v -- t
¤ Disjoint if s and t are not mutually reachable
n Proof by contradiction
Graphs
48
DAGs and Topological Ordering
49
Graphs
2 3
1
5
7
6 4
IRIS H.-R. JIANG
Directed Acyclic Graphs
¨ Q: If an undirected graph has no cycles, then what’s it?
¨ A: A tree (or forest).
¤ At most n-1 edges.
¨ A directed acyclic graph (DAG) is a directed graph without
cycles.
¤ A DAG may have a rich structure.
¤ A DAG encodes dependency or precedence constraints
n e.g., prerequisite of Algorithms:
n Data structures
n Discrete math
n Programming C/C++
n e.g., execution order of instructions in CPU
n Pipeline structures
Graphs
50
2 3
1
5
7
6 4
IRIS H.-R. JIANG
Topological Ordering
¨ Q: 4 drivers come to the junction simultaneously, who goes
first?
¤ Deadlock! Dependencies form a cycle!
¨ Given a directed graph G, a topological ordering is an ordering
of its nodes as v1, v2, …, vn so that for every edge (vi, vj), we
have i<j.
¤ Precedence constraints: edge (vi, vj) means vi must precede vj.
¨ Lemma: If G has a topological ordering, then G is a DAG.
¨ Pf: Proof by contradiction!
¤ How? Consider a cycle, vi, …, vj, vi.
Graphs
51
The driver must come to a complete stop at a stop sign. Generally the driver who arrives and stops first
continues first. If two or three drivers in different directions stop simultaneously at a junction controlled
by stop signs, generally the drivers on the left must yield the right-of-way to the driver on the far right.
vj
vi
IRIS H.-R. JIANG
Example
¨ Example:
¨ Lemma: If G has a topological ordering, then G is a DAG.
¨ Q: If G is a DAG, then does G have a topological ordering?
¨ Q: If so, how do we compute one?
¨ A: Key: find a way to get started!
¤ Q: How?
Graphs
52
a DAG
2 3
1
5
7
6 4
the same DAG with topological ordering
2 3
1 5 7
6
4
DAGs and Topological Ordering
49
Graphs
2 3
1
5
7
6 4
IRIS H.-R. JIANG
Directed Acyclic Graphs
¨ Q: If an undirected graph has no cycles, then what’s it?
¨ A: A tree (or forest).
¤ At most n-1 edges.
¨ A directed acyclic graph (DAG) is a directed graph without
cycles.
¤ A DAG may have a rich structure.
¤ A DAG encodes dependency or precedence constraints
n e.g., prerequisite of Algorithms:
n Data structures
n Discrete math
n Programming C/C++
n e.g., execution order of instructions in CPU
n Pipeline structures
Graphs
50
2 3
1
5
7
6 4
IRIS H.-R. JIANG
Topological Ordering
¨ Q: 4 drivers come to the junction simultaneously, who goes
first?
¤ Deadlock! Dependencies form a cycle!
¨ Given a directed graph G, a topological ordering is an ordering
of its nodes as v1, v2, …, vn so that for every edge (vi, vj), we
have i<j.
¤ Precedence constraints: edge (vi, vj) means vi must precede vj.
¨ Lemma: If G has a topological ordering, then G is a DAG.
¨ Pf: Proof by contradiction!
¤ How? Consider a cycle, vi, …, vj, vi.
Graphs
51
The driver must come to a complete stop at a stop sign. Generally the driver who arrives and stops first
continues first. If two or three drivers in different directions stop simultaneously at a junction controlled
by stop signs, generally the drivers on the left must yield the right-of-way to the driver on the far right.
vj
vi
IRIS H.-R. JIANG
Example
¨ Example:
¨ Lemma: If G has a topological ordering, then G is a DAG.
¨ Q: If G is a DAG, then does G have a topological ordering?
¨ Q: If so, how do we compute one?
¨ A: Key: find a way to get started!
¤ Q: How?
Graphs
52
a DAG
2 3
1
5
7
6 4
the same DAG with topological ordering
2 3
1 5 7
6
4
DAGs and Topological Ordering
49
Graphs
2 3
1
5
7
6 4
IRIS H.-R. JIANG
Directed Acyclic Graphs
¨ Q: If an undirected graph has no cycles, then what’s it?
¨ A: A tree (or forest).
¤ At most n-1 edges.
¨ A directed acyclic graph (DAG) is a directed graph without
cycles.
¤ A DAG may have a rich structure.
¤ A DAG encodes dependency or precedence constraints
n e.g., prerequisite of Algorithms:
n Data structures
n Discrete math
n Programming C/C++
n e.g., execution order of instructions in CPU
n Pipeline structures
Graphs
50
2 3
1
5
7
6 4
IRIS H.-R. JIANG
Topological Ordering
¨ Q: 4 drivers come to the junction simultaneously, who goes
first?
¤ Deadlock! Dependencies form a cycle!
¨ Given a directed graph G, a topological ordering is an ordering
of its nodes as v1, v2, …, vn so that for every edge (vi, vj), we
have i<j.
¤ Precedence constraints: edge (vi, vj) means vi must precede vj.
¨ Lemma: If G has a topological ordering, then G is a DAG.
¨ Pf: Proof by contradiction!
¤ How? Consider a cycle, vi, …, vj, vi.
Graphs
51
The driver must come to a complete stop at a stop sign. Generally the driver who arrives and stops first
continues first. If two or three drivers in different directions stop simultaneously at a junction controlled
by stop signs, generally the drivers on the left must yield the right-of-way to the driver on the far right.
vj
vi
IRIS H.-R. JIANG
Example
¨ Example:
¨ Lemma: If G has a topological ordering, then G is a DAG.
¨ Q: If G is a DAG, then does G have a topological ordering?
¨ Q: If so, how do we compute one?
¨ A: Key: find a way to get started!
¤ Q: How?
Graphs
52
a DAG
2 3
1
5
7
6 4
the same DAG with topological ordering
2 3
1 5 7
6
4
DAGs and Topological Ordering
49
Graphs
2 3
1
5
7
6 4
IRIS H.-R. JIANG
Directed Acyclic Graphs
¨ Q: If an undirected graph has no cycles, then what’s it?
¨ A: A tree (or forest).
¤ At most n-1 edges.
¨ A directed acyclic graph (DAG) is a directed graph without
cycles.
¤ A DAG may have a rich structure.
¤ A DAG encodes dependency or precedence constraints
n e.g., prerequisite of Algorithms:
n Data structures
n Discrete math
n Programming C/C++
n e.g., execution order of instructions in CPU
n Pipeline structures
Graphs
50
2 3
1
5
7
6 4
IRIS H.-R. JIANG
Topological Ordering
¨ Q: 4 drivers come to the junction simultaneously, who goes
first?
¤ Deadlock! Dependencies form a cycle!
¨ Given a directed graph G, a topological ordering is an ordering
of its nodes as v1, v2, …, vn so that for every edge (vi, vj), we
have i<j.
¤ Precedence constraints: edge (vi, vj) means vi must precede vj.
¨ Lemma: If G has a topological ordering, then G is a DAG.
¨ Pf: Proof by contradiction!
¤ How? Consider a cycle, vi, …, vj, vi.
Graphs
51
The driver must come to a complete stop at a stop sign. Generally the driver who arrives and stops first
continues first. If two or three drivers in different directions stop simultaneously at a junction controlled
by stop signs, generally the drivers on the left must yield the right-of-way to the driver on the far right.
vj
vi
IRIS H.-R. JIANG
Example
¨ Example:
¨ Lemma: If G has a topological ordering, then G is a DAG.
¨ Q: If G is a DAG, then does G have a topological ordering?
¨ Q: If so, how do we compute one?
¨ A: Key: find a way to get started!
¤ Q: How?
Graphs
52
a DAG
2 3
1
5
7
6 4
the same DAG with topological ordering
2 3
1 5 7
6
4
IRIS H.-R. JIANG
Where to Start?
¨ A: A node that depends on no one, i.e., unconstrained.
¨ Lemma: In every DAG G, there is a node with no incoming
edges.
¨ Pf: Proof by contradiction!
¤ Suppose that G is a DAG where every node has at least one
incoming edge. Let's see how to find a cycle in G.
¤ Pick any node v, and begin following edges backward from v:
Since v has at least one incoming edge (u, v) we can walk
backward to u.
¤ Then, since u has at least one incoming edge (x, u), we can walk
backward to x; and so on.
¤ Repeat this process n+1 times (the initial v counts one). We will
visit some node w twice, since G has only n nodes.
¤ Let C denote the sequence of nodes encountered between
successive visits to w. Clearly, C is a cycle. ®¬
Graphs
53
w x v
u
w
IRIS H.-R. JIANG
2 3
1
5
7
6 4
Example: Topological Ordering
Graphs
54
1
2
1
2 3
1
2 3
1
4
2 3
1
5 4
2 3
1
5
6 4
2 3
1
5
7
6 4 2 3
1 5 7
6
4
IRIS H.-R. JIANG
Topological Ordering
¨ Lemma: If G is a DAG, then G has a topological ordering.
¨ Pf: Proof by induction!
1. Base case: true if n = 1.
2. Inductive step:
n Induction hypothesis: true for DAGs with up to n nodes
n Given a DAG on n+1 nodes, find a node v w/o incoming edges.
n G – {v} is a DAG, since deleting v cannot create any cycles.
n G – {v} has n nodes. By induction hypothesis, G – {v} has a
topological ordering.
n Place v first in topological ordering. This is safe since all edges
of v point forward.
n Then append nodes of G – {v} in topological order after v.
Graphs
55
G – {v}
v
v + <v1, v2, …, vn> = <v, v1, v2, …, vn>
IRIS H.-R. JIANG
A Linear-Time Algorithm
¨ In fact, the proof has already suggested an algorithm.
¨ Time: From O(n2) to O(m+n)
¤ O(n2)-time: Total n iterations; line 1 in O(n)-time. How?
¤ O(m+n)-time: How? Maintain the following information
n indeg(w) = # of incoming edges from undeleted nodes
n S = set of nodes without incoming edges from undeleted nodes
¤ Initialization: O(m+n) via single scan through graph
¤ Update: line 3 deletes v
n Remove v from S
n Decrement indeg(w) for all edges from v to w, and add w to S if
indeg(w) hits 0; this is O(1) per edge
Graphs
56
TopologicalOrder(G)
1. find a node v without incoming edges
2. order v
3. G = G – {v} // delete v from G
4. if (G is not empty) then TopologicalOrder(G)
IRIS H.-R. JIANG
Where to Start?
¨ A: A node that depends on no one, i.e., unconstrained.
¨ Lemma: In every DAG G, there is a node with no incoming
edges.
¨ Pf: Proof by contradiction!
¤ Suppose that G is a DAG where every node has at least one
incoming edge. Let's see how to find a cycle in G.
¤ Pick any node v, and begin following edges backward from v:
Since v has at least one incoming edge (u, v) we can walk
backward to u.
¤ Then, since u has at least one incoming edge (x, u), we can walk
backward to x; and so on.
¤ Repeat this process n+1 times (the initial v counts one). We will
visit some node w twice, since G has only n nodes.
¤ Let C denote the sequence of nodes encountered between
successive visits to w. Clearly, C is a cycle. ®¬
Graphs
53
w x v
u
w
IRIS H.-R. JIANG
2 3
1
5
7
6 4
Example: Topological Ordering
Graphs
54
1
2
1
2 3
1
2 3
1
4
2 3
1
5 4
2 3
1
5
6 4
2 3
1
5
7
6 4 2 3
1 5 7
6
4
IRIS H.-R. JIANG
Topological Ordering
¨ Lemma: If G is a DAG, then G has a topological ordering.
¨ Pf: Proof by induction!
1. Base case: true if n = 1.
2. Inductive step:
n Induction hypothesis: true for DAGs with up to n nodes
n Given a DAG on n+1 nodes, find a node v w/o incoming edges.
n G – {v} is a DAG, since deleting v cannot create any cycles.
n G – {v} has n nodes. By induction hypothesis, G – {v} has a
topological ordering.
n Place v first in topological ordering. This is safe since all edges
of v point forward.
n Then append nodes of G – {v} in topological order after v.
Graphs
55
G – {v}
v
v + <v1, v2, …, vn> = <v, v1, v2, …, vn>
IRIS H.-R. JIANG
A Linear-Time Algorithm
¨ In fact, the proof has already suggested an algorithm.
¨ Time: From O(n2) to O(m+n)
¤ O(n2)-time: Total n iterations; line 1 in O(n)-time. How?
¤ O(m+n)-time: How? Maintain the following information
n indeg(w) = # of incoming edges from undeleted nodes
n S = set of nodes without incoming edges from undeleted nodes
¤ Initialization: O(m+n) via single scan through graph
¤ Update: line 3 deletes v
n Remove v from S
n Decrement indeg(w) for all edges from v to w, and add w to S if
indeg(w) hits 0; this is O(1) per edge
Graphs
56
TopologicalOrder(G)
1. find a node v without incoming edges
2. order v
3. G = G – {v} // delete v from G
4. if (G is not empty) then TopologicalOrder(G)
IRIS H.-R. JIANG
Where to Start?
¨ A: A node that depends on no one, i.e., unconstrained.
¨ Lemma: In every DAG G, there is a node with no incoming
edges.
¨ Pf: Proof by contradiction!
¤ Suppose that G is a DAG where every node has at least one
incoming edge. Let's see how to find a cycle in G.
¤ Pick any node v, and begin following edges backward from v:
Since v has at least one incoming edge (u, v) we can walk
backward to u.
¤ Then, since u has at least one incoming edge (x, u), we can walk
backward to x; and so on.
¤ Repeat this process n+1 times (the initial v counts one). We will
visit some node w twice, since G has only n nodes.
¤ Let C denote the sequence of nodes encountered between
successive visits to w. Clearly, C is a cycle. ®¬
Graphs
53
w x v
u
w
IRIS H.-R. JIANG
2 3
1
5
7
6 4
Example: Topological Ordering
Graphs
54
1
2
1
2 3
1
2 3
1
4
2 3
1
5 4
2 3
1
5
6 4
2 3
1
5
7
6 4 2 3
1 5 7
6
4
IRIS H.-R. JIANG
Topological Ordering
¨ Lemma: If G is a DAG, then G has a topological ordering.
¨ Pf: Proof by induction!
1. Base case: true if n = 1.
2. Inductive step:
n Induction hypothesis: true for DAGs with up to n nodes
n Given a DAG on n+1 nodes, find a node v w/o incoming edges.
n G – {v} is a DAG, since deleting v cannot create any cycles.
n G – {v} has n nodes. By induction hypothesis, G – {v} has a
topological ordering.
n Place v first in topological ordering. This is safe since all edges
of v point forward.
n Then append nodes of G – {v} in topological order after v.
Graphs
55
G – {v}
v
v + <v1, v2, …, vn> = <v, v1, v2, …, vn>
IRIS H.-R. JIANG
A Linear-Time Algorithm
¨ In fact, the proof has already suggested an algorithm.
¨ Time: From O(n2) to O(m+n)
¤ O(n2)-time: Total n iterations; line 1 in O(n)-time. How?
¤ O(m+n)-time: How? Maintain the following information
n indeg(w) = # of incoming edges from undeleted nodes
n S = set of nodes without incoming edges from undeleted nodes
¤ Initialization: O(m+n) via single scan through graph
¤ Update: line 3 deletes v
n Remove v from S
n Decrement indeg(w) for all edges from v to w, and add w to S if
indeg(w) hits 0; this is O(1) per edge
Graphs
56
TopologicalOrder(G)
1. find a node v without incoming edges
2. order v
3. G = G – {v} // delete v from G
4. if (G is not empty) then TopologicalOrder(G)
IRIS H.-R. JIANG
Where to Start?
¨ A: A node that depends on no one, i.e., unconstrained.
¨ Lemma: In every DAG G, there is a node with no incoming
edges.
¨ Pf: Proof by contradiction!
¤ Suppose that G is a DAG where every node has at least one
incoming edge. Let's see how to find a cycle in G.
¤ Pick any node v, and begin following edges backward from v:
Since v has at least one incoming edge (u, v) we can walk
backward to u.
¤ Then, since u has at least one incoming edge (x, u), we can walk
backward to x; and so on.
¤ Repeat this process n+1 times (the initial v counts one). We will
visit some node w twice, since G has only n nodes.
¤ Let C denote the sequence of nodes encountered between
successive visits to w. Clearly, C is a cycle. ®¬
Graphs
53
w x v
u
w
IRIS H.-R. JIANG
2 3
1
5
7
6 4
Example: Topological Ordering
Graphs
54
1
2
1
2 3
1
2 3
1
4
2 3
1
5 4
2 3
1
5
6 4
2 3
1
5
7
6 4 2 3
1 5 7
6
4
IRIS H.-R. JIANG
Topological Ordering
¨ Lemma: If G is a DAG, then G has a topological ordering.
¨ Pf: Proof by induction!
1. Base case: true if n = 1.
2. Inductive step:
n Induction hypothesis: true for DAGs with up to n nodes
n Given a DAG on n+1 nodes, find a node v w/o incoming edges.
n G – {v} is a DAG, since deleting v cannot create any cycles.
n G – {v} has n nodes. By induction hypothesis, G – {v} has a
topological ordering.
n Place v first in topological ordering. This is safe since all edges
of v point forward.
n Then append nodes of G – {v} in topological order after v.
Graphs
55
G – {v}
v
v + <v1, v2, …, vn> = <v, v1, v2, …, vn>
IRIS H.-R. JIANG
A Linear-Time Algorithm
¨ In fact, the proof has already suggested an algorithm.
¨ Time: From O(n2) to O(m+n)
¤ O(n2)-time: Total n iterations; line 1 in O(n)-time. How?
¤ O(m+n)-time: How? Maintain the following information
n indeg(w) = # of incoming edges from undeleted nodes
n S = set of nodes without incoming edges from undeleted nodes
¤ Initialization: O(m+n) via single scan through graph
¤ Update: line 3 deletes v
n Remove v from S
n Decrement indeg(w) for all edges from v to w, and add w to S if
indeg(w) hits 0; this is O(1) per edge
Graphs
56
TopologicalOrder(G)
1. find a node v without incoming edges
2. order v
3. G = G – {v} // delete v from G
4. if (G is not empty) then TopologicalOrder(G)

Más contenido relacionado

Similar a algorithm_3graphs.pdf

8.-Graphs information technologies graph
8.-Graphs information technologies graph8.-Graphs information technologies graph
8.-Graphs information technologies graphiloveyoucarlo0923
 
Graph Theory 117 © David Lippman Creative Commons BY-.docx
Graph Theory   117 © David Lippman  Creative Commons BY-.docxGraph Theory   117 © David Lippman  Creative Commons BY-.docx
Graph Theory 117 © David Lippman Creative Commons BY-.docxdurantheseldine
 
A glimpse to topological graph theory
A glimpse to topological graph theoryA glimpse to topological graph theory
A glimpse to topological graph theoryANJU123MOHANAN
 
The Age of EulerRarely has the world seen a mathematician as pro.docx
The Age of EulerRarely has the world seen a mathematician as pro.docxThe Age of EulerRarely has the world seen a mathematician as pro.docx
The Age of EulerRarely has the world seen a mathematician as pro.docxmehek4
 
Graph Theory 117 © David Lippman Creative Commons BY-
  Graph Theory   117 © David Lippman  Creative Commons BY-  Graph Theory   117 © David Lippman  Creative Commons BY-
Graph Theory 117 © David Lippman Creative Commons BY-maple8qvlisbey
 
APPLICATIONS OF GRAPH THEORY IN HUMAN LIFE
APPLICATIONS OF GRAPH THEORY IN HUMAN LIFEAPPLICATIONS OF GRAPH THEORY IN HUMAN LIFE
APPLICATIONS OF GRAPH THEORY IN HUMAN LIFEMary Calkins
 
ON ALGORITHMIC PROBLEMS CONCERNING GRAPHS OF HIGHER DEGREE OF SYMMETRY
ON ALGORITHMIC PROBLEMS CONCERNING GRAPHS OF HIGHER DEGREE OF SYMMETRYON ALGORITHMIC PROBLEMS CONCERNING GRAPHS OF HIGHER DEGREE OF SYMMETRY
ON ALGORITHMIC PROBLEMS CONCERNING GRAPHS OF HIGHER DEGREE OF SYMMETRYFransiskeran
 
Skiena algorithm 2007 lecture10 graph data strctures
Skiena algorithm 2007 lecture10 graph data strcturesSkiena algorithm 2007 lecture10 graph data strctures
Skiena algorithm 2007 lecture10 graph data strctureszukun
 
Decision maths 1 graphs and networks
Decision maths 1 graphs and networksDecision maths 1 graphs and networks
Decision maths 1 graphs and networksMichael Mireku
 
Data structure graphs
Data structure  graphsData structure  graphs
Data structure graphsUma mohan
 
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
 
Fact checking using Knowledge graphs (course: CS584 @Emory U)

Fact checking using Knowledge graphs (course: CS584 @Emory U)
Fact checking using Knowledge graphs (course: CS584 @Emory U)

Fact checking using Knowledge graphs (course: CS584 @Emory U)
Ramraj Chandradevan
 

Similar a algorithm_3graphs.pdf (20)

8.-Graphs information technologies graph
8.-Graphs information technologies graph8.-Graphs information technologies graph
8.-Graphs information technologies graph
 
Graph Theory 117 © David Lippman Creative Commons BY-.docx
Graph Theory   117 © David Lippman  Creative Commons BY-.docxGraph Theory   117 © David Lippman  Creative Commons BY-.docx
Graph Theory 117 © David Lippman Creative Commons BY-.docx
 
UNIT 4_DSA_KAVITHA_RMP.ppt
UNIT 4_DSA_KAVITHA_RMP.pptUNIT 4_DSA_KAVITHA_RMP.ppt
UNIT 4_DSA_KAVITHA_RMP.ppt
 
A glimpse to topological graph theory
A glimpse to topological graph theoryA glimpse to topological graph theory
A glimpse to topological graph theory
 
The Age of EulerRarely has the world seen a mathematician as pro.docx
The Age of EulerRarely has the world seen a mathematician as pro.docxThe Age of EulerRarely has the world seen a mathematician as pro.docx
The Age of EulerRarely has the world seen a mathematician as pro.docx
 
2.1RANDOM NETWORKS.pptx
2.1RANDOM NETWORKS.pptx2.1RANDOM NETWORKS.pptx
2.1RANDOM NETWORKS.pptx
 
Unit 2: All
Unit 2: AllUnit 2: All
Unit 2: All
 
Graph Theory 117 © David Lippman Creative Commons BY-
  Graph Theory   117 © David Lippman  Creative Commons BY-  Graph Theory   117 © David Lippman  Creative Commons BY-
Graph Theory 117 © David Lippman Creative Commons BY-
 
APPLICATIONS OF GRAPH THEORY IN HUMAN LIFE
APPLICATIONS OF GRAPH THEORY IN HUMAN LIFEAPPLICATIONS OF GRAPH THEORY IN HUMAN LIFE
APPLICATIONS OF GRAPH THEORY IN HUMAN LIFE
 
18 Basic Graph Algorithms
18 Basic Graph Algorithms18 Basic Graph Algorithms
18 Basic Graph Algorithms
 
ON ALGORITHMIC PROBLEMS CONCERNING GRAPHS OF HIGHER DEGREE OF SYMMETRY
ON ALGORITHMIC PROBLEMS CONCERNING GRAPHS OF HIGHER DEGREE OF SYMMETRYON ALGORITHMIC PROBLEMS CONCERNING GRAPHS OF HIGHER DEGREE OF SYMMETRY
ON ALGORITHMIC PROBLEMS CONCERNING GRAPHS OF HIGHER DEGREE OF SYMMETRY
 
Graph-Basics.pptx
Graph-Basics.pptxGraph-Basics.pptx
Graph-Basics.pptx
 
Skiena algorithm 2007 lecture10 graph data strctures
Skiena algorithm 2007 lecture10 graph data strcturesSkiena algorithm 2007 lecture10 graph data strctures
Skiena algorithm 2007 lecture10 graph data strctures
 
Decision maths 1 graphs and networks
Decision maths 1 graphs and networksDecision maths 1 graphs and networks
Decision maths 1 graphs and networks
 
Data structure graphs
Data structure  graphsData structure  graphs
Data structure graphs
 
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
 
Graph
GraphGraph
Graph
 
Introduction to Graph Theory
Introduction to Graph TheoryIntroduction to Graph Theory
Introduction to Graph Theory
 
Fact checking using Knowledge graphs (course: CS584 @Emory U)

Fact checking using Knowledge graphs (course: CS584 @Emory U)
Fact checking using Knowledge graphs (course: CS584 @Emory U)

Fact checking using Knowledge graphs (course: CS584 @Emory U)

 
Module 22-graphs
Module 22-graphsModule 22-graphs
Module 22-graphs
 

Más de HsuChi Chen

algorithm_6dynamic_programming.pdf
algorithm_6dynamic_programming.pdfalgorithm_6dynamic_programming.pdf
algorithm_6dynamic_programming.pdfHsuChi Chen
 
algorithm_1introdunction.pdf
algorithm_1introdunction.pdfalgorithm_1introdunction.pdf
algorithm_1introdunction.pdfHsuChi Chen
 
algorithm_9linear_programming.pdf
algorithm_9linear_programming.pdfalgorithm_9linear_programming.pdf
algorithm_9linear_programming.pdfHsuChi Chen
 
algorithm_4greedy_algorithms.pdf
algorithm_4greedy_algorithms.pdfalgorithm_4greedy_algorithms.pdf
algorithm_4greedy_algorithms.pdfHsuChi Chen
 
algorithm_7network_flow.pdf
algorithm_7network_flow.pdfalgorithm_7network_flow.pdf
algorithm_7network_flow.pdfHsuChi Chen
 
algorithm_2algorithm_analysis.pdf
algorithm_2algorithm_analysis.pdfalgorithm_2algorithm_analysis.pdf
algorithm_2algorithm_analysis.pdfHsuChi Chen
 
algorithm_8beyond_polynomial_running_times.pdf
algorithm_8beyond_polynomial_running_times.pdfalgorithm_8beyond_polynomial_running_times.pdf
algorithm_8beyond_polynomial_running_times.pdfHsuChi Chen
 
algorithm_5divide_and_conquer.pdf
algorithm_5divide_and_conquer.pdfalgorithm_5divide_and_conquer.pdf
algorithm_5divide_and_conquer.pdfHsuChi Chen
 
algorithm_0introdunction.pdf
algorithm_0introdunction.pdfalgorithm_0introdunction.pdf
algorithm_0introdunction.pdfHsuChi Chen
 
期末專題報告書
期末專題報告書期末專題報告書
期末專題報告書HsuChi Chen
 
單晶片期末專題-報告二
單晶片期末專題-報告二單晶片期末專題-報告二
單晶片期末專題-報告二HsuChi Chen
 
單晶片期末專題-報告一
單晶片期末專題-報告一單晶片期末專題-報告一
單晶片期末專題-報告一HsuChi Chen
 
模組化課程生醫微製程期末報告
模組化課程生醫微製程期末報告模組化課程生醫微製程期末報告
模組化課程生醫微製程期末報告HsuChi Chen
 
單晶片期末專題-初步想法
單晶片期末專題-初步想法單晶片期末專題-初步想法
單晶片期末專題-初步想法HsuChi Chen
 

Más de HsuChi Chen (14)

algorithm_6dynamic_programming.pdf
algorithm_6dynamic_programming.pdfalgorithm_6dynamic_programming.pdf
algorithm_6dynamic_programming.pdf
 
algorithm_1introdunction.pdf
algorithm_1introdunction.pdfalgorithm_1introdunction.pdf
algorithm_1introdunction.pdf
 
algorithm_9linear_programming.pdf
algorithm_9linear_programming.pdfalgorithm_9linear_programming.pdf
algorithm_9linear_programming.pdf
 
algorithm_4greedy_algorithms.pdf
algorithm_4greedy_algorithms.pdfalgorithm_4greedy_algorithms.pdf
algorithm_4greedy_algorithms.pdf
 
algorithm_7network_flow.pdf
algorithm_7network_flow.pdfalgorithm_7network_flow.pdf
algorithm_7network_flow.pdf
 
algorithm_2algorithm_analysis.pdf
algorithm_2algorithm_analysis.pdfalgorithm_2algorithm_analysis.pdf
algorithm_2algorithm_analysis.pdf
 
algorithm_8beyond_polynomial_running_times.pdf
algorithm_8beyond_polynomial_running_times.pdfalgorithm_8beyond_polynomial_running_times.pdf
algorithm_8beyond_polynomial_running_times.pdf
 
algorithm_5divide_and_conquer.pdf
algorithm_5divide_and_conquer.pdfalgorithm_5divide_and_conquer.pdf
algorithm_5divide_and_conquer.pdf
 
algorithm_0introdunction.pdf
algorithm_0introdunction.pdfalgorithm_0introdunction.pdf
algorithm_0introdunction.pdf
 
期末專題報告書
期末專題報告書期末專題報告書
期末專題報告書
 
單晶片期末專題-報告二
單晶片期末專題-報告二單晶片期末專題-報告二
單晶片期末專題-報告二
 
單晶片期末專題-報告一
單晶片期末專題-報告一單晶片期末專題-報告一
單晶片期末專題-報告一
 
模組化課程生醫微製程期末報告
模組化課程生醫微製程期末報告模組化課程生醫微製程期末報告
模組化課程生醫微製程期末報告
 
單晶片期末專題-初步想法
單晶片期末專題-初步想法單晶片期末專題-初步想法
單晶片期末專題-初步想法
 

Último

Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 

Último (20)

Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 

algorithm_3graphs.pdf

  • 1. Iris Hui-Ru Jiang Fall 2014 CHAPTER 3 GRAPHS IRIS H.-R. JIANG Outline ¨ Content: ¤ Basic definitions and applications ¤ Graph connectivity and graph traversal ¤ Implementation ¤ Testing bipartiteness: an application of BFS ¤ Connectivity in directed graphs ¤ Directed acyclic graphs and topological ordering ¨ Reading: ¤ Chapter 3 Graphs 2 IRIS H.-R. JIANG Keys to Success: CAR Theorem ¨ Extract the essence ¤ Identify the clean core ¤ Remove extraneous detail ¨ Represent in an abstract form ¤ First think at high-level n Devise the algorithm ¤ Then go down to low-level n Complete implementation ¨ Simplify unimportant things ¤ List the limitations ¤ Show how to extend Prof. Chang’s CAR Theorem Iris: Recap stable matching 3 Graphs Criticality Abstraction Restriction © Prof. Yao-Wen Chang@NTU Definitions and applications Basics 4 Graphs
  • 2. Iris Hui-Ru Jiang Fall 2014 CHAPTER 3 GRAPHS IRIS H.-R. JIANG Outline ¨ Content: ¤ Basic definitions and applications ¤ Graph connectivity and graph traversal ¤ Implementation ¤ Testing bipartiteness: an application of BFS ¤ Connectivity in directed graphs ¤ Directed acyclic graphs and topological ordering ¨ Reading: ¤ Chapter 3 Graphs 2 IRIS H.-R. JIANG Keys to Success: CAR Theorem ¨ Extract the essence ¤ Identify the clean core ¤ Remove extraneous detail ¨ Represent in an abstract form ¤ First think at high-level n Devise the algorithm ¤ Then go down to low-level n Complete implementation ¨ Simplify unimportant things ¤ List the limitations ¤ Show how to extend Prof. Chang’s CAR Theorem Iris: Recap stable matching 3 Graphs Criticality Abstraction Restriction © Prof. Yao-Wen Chang@NTU Definitions and applications Basics 4 Graphs
  • 3. Iris Hui-Ru Jiang Fall 2014 CHAPTER 3 GRAPHS IRIS H.-R. JIANG Outline ¨ Content: ¤ Basic definitions and applications ¤ Graph connectivity and graph traversal ¤ Implementation ¤ Testing bipartiteness: an application of BFS ¤ Connectivity in directed graphs ¤ Directed acyclic graphs and topological ordering ¨ Reading: ¤ Chapter 3 Graphs 2 IRIS H.-R. JIANG Keys to Success: CAR Theorem ¨ Extract the essence ¤ Identify the clean core ¤ Remove extraneous detail ¨ Represent in an abstract form ¤ First think at high-level n Devise the algorithm ¤ Then go down to low-level n Complete implementation ¨ Simplify unimportant things ¤ List the limitations ¤ Show how to extend Prof. Chang’s CAR Theorem Iris: Recap stable matching 3 Graphs Criticality Abstraction Restriction © Prof. Yao-Wen Chang@NTU Definitions and applications Basics 4 Graphs
  • 4. Iris Hui-Ru Jiang Fall 2014 CHAPTER 3 GRAPHS IRIS H.-R. JIANG Outline ¨ Content: ¤ Basic definitions and applications ¤ Graph connectivity and graph traversal ¤ Implementation ¤ Testing bipartiteness: an application of BFS ¤ Connectivity in directed graphs ¤ Directed acyclic graphs and topological ordering ¨ Reading: ¤ Chapter 3 Graphs 2 IRIS H.-R. JIANG Keys to Success: CAR Theorem ¨ Extract the essence ¤ Identify the clean core ¤ Remove extraneous detail ¨ Represent in an abstract form ¤ First think at high-level n Devise the algorithm ¤ Then go down to low-level n Complete implementation ¨ Simplify unimportant things ¤ List the limitations ¤ Show how to extend Prof. Chang’s CAR Theorem Iris: Recap stable matching 3 Graphs Criticality Abstraction Restriction © Prof. Yao-Wen Chang@NTU Definitions and applications Basics 4 Graphs
  • 5. IRIS H.-R. JIANG Salute to Euler! ¨ Our focus in this course is on problems with a discrete flavor. ¨ One of the most fundamental and expressive of combinatorial structures is the graph. ¤ Invented by L. Euler based on his proof on the Königsberg bridge problem (the seven bridge problem) in 1736. n Is it possible to walk across all the bridges exactly once and return to the starting land area? n Abstraction! Graphs 5 No Eulerian walk L. Euler, Solutioproblematis ad geometriamsituspertinentis, Commentarii Academiae Scientiarum Imperialis Petropolitanae, Vol. 8, pp. 128—140, 1736 (published 1741). IRIS H.-R. JIANG Graph ¨ A graph is simply a way of encoding pairwise relationships among a set of objects. ¨ A graphG = (V, E) consists of ¤ A collection V of nodes (a.k.a. vertices) ¤ A collection E of edges n Each edge joins two nodes n e = {u, v} Î E for some u, vÎ V ¨ In an undirected graph: symmetric relationships ¤ Edges are undirected, i.e., {u, v} == {v, u} n e.g., u and v are family. ¨ In a directed graph: asymmetric relationships ¤ Edges are directed, i.e., (u, v) != (v, u) n e.g., u knows v (celebrity), while v doesn’t know u. ¨ v is one of u’sneighbor if there is an edge (u, v) ¤ Adjacency Graphs 6 u v u v tail head ⚾婾㗗ᶨ攨㍊妶䈑ẞᷳ攻⤪ỽ䚠忋䘬⬠⓷ ᶫ㧳⓷柴㛔岒⌛㗗㍊妶映⛘ᷳ攻(德忶㧳㠩)䘬忋䳸斄Ὢ IRIS H.-R. JIANG Examples of Graphs (1/6) ¨ It’s useful to digest the meaning of the nodes and the meaning of the edges in the following examples. ¤ It’s not important to remember them. ¨ Transportation networks: Graphs 7 London underground map (node: station; edge: adjacent stations) ᷴ㔾䵺⅟娔姯—‒㕍✗搜✗⛽ (H. Beck, 1933) http://mag.udn.com/mag/world/storypage.jsp?f_ART_ID=207102 China Airlines international route map (node: city; edge: non-stop flight) IRIS H.-R. JIANG Examples of Graphs (2/6) ¨ Communication networks Graphs 8 Wireless sensor network (node: sensor; edge: signal broadcasting)
  • 6. IRIS H.-R. JIANG Salute to Euler! ¨ Our focus in this course is on problems with a discrete flavor. ¨ One of the most fundamental and expressive of combinatorial structures is the graph. ¤ Invented by L. Euler based on his proof on the Königsberg bridge problem (the seven bridge problem) in 1736. n Is it possible to walk across all the bridges exactly once and return to the starting land area? n Abstraction! Graphs 5 No Eulerian walk L. Euler, Solutioproblematis ad geometriamsituspertinentis, Commentarii Academiae Scientiarum Imperialis Petropolitanae, Vol. 8, pp. 128—140, 1736 (published 1741). IRIS H.-R. JIANG Graph ¨ A graph is simply a way of encoding pairwise relationships among a set of objects. ¨ A graphG = (V, E) consists of ¤ A collection V of nodes (a.k.a. vertices) ¤ A collection E of edges n Each edge joins two nodes n e = {u, v} Î E for some u, vÎ V ¨ In an undirected graph: symmetric relationships ¤ Edges are undirected, i.e., {u, v} == {v, u} n e.g., u and v are family. ¨ In a directed graph: asymmetric relationships ¤ Edges are directed, i.e., (u, v) != (v, u) n e.g., u knows v (celebrity), while v doesn’t know u. ¨ v is one of u’sneighbor if there is an edge (u, v) ¤ Adjacency Graphs 6 u v u v tail head ⚾婾㗗ᶨ攨㍊妶䈑ẞᷳ攻⤪ỽ䚠忋䘬⬠⓷ ᶫ㧳⓷柴㛔岒⌛㗗㍊妶映⛘ᷳ攻(德忶㧳㠩)䘬忋䳸斄Ὢ IRIS H.-R. JIANG Examples of Graphs (1/6) ¨ It’s useful to digest the meaning of the nodes and the meaning of the edges in the following examples. ¤ It’s not important to remember them. ¨ Transportation networks: Graphs 7 London underground map (node: station; edge: adjacent stations) ᷴ㔾䵺⅟娔姯—‒㕍✗搜✗⛽ (H. Beck, 1933) http://mag.udn.com/mag/world/storypage.jsp?f_ART_ID=207102 China Airlines international route map (node: city; edge: non-stop flight) IRIS H.-R. JIANG Examples of Graphs (2/6) ¨ Communication networks Graphs 8 Wireless sensor network (node: sensor; edge: signal broadcasting)
  • 7. IRIS H.-R. JIANG Salute to Euler! ¨ Our focus in this course is on problems with a discrete flavor. ¨ One of the most fundamental and expressive of combinatorial structures is the graph. ¤ Invented by L. Euler based on his proof on the Königsberg bridge problem (the seven bridge problem) in 1736. n Is it possible to walk across all the bridges exactly once and return to the starting land area? n Abstraction! Graphs 5 No Eulerian walk L. Euler, Solutioproblematis ad geometriamsituspertinentis, Commentarii Academiae Scientiarum Imperialis Petropolitanae, Vol. 8, pp. 128—140, 1736 (published 1741). IRIS H.-R. JIANG Graph ¨ A graph is simply a way of encoding pairwise relationships among a set of objects. ¨ A graphG = (V, E) consists of ¤ A collection V of nodes (a.k.a. vertices) ¤ A collection E of edges n Each edge joins two nodes n e = {u, v} Î E for some u, vÎ V ¨ In an undirected graph: symmetric relationships ¤ Edges are undirected, i.e., {u, v} == {v, u} n e.g., u and v are family. ¨ In a directed graph: asymmetric relationships ¤ Edges are directed, i.e., (u, v) != (v, u) n e.g., u knows v (celebrity), while v doesn’t know u. ¨ v is one of u’sneighbor if there is an edge (u, v) ¤ Adjacency Graphs 6 u v u v tail head ⚾婾㗗ᶨ攨㍊妶䈑ẞᷳ攻⤪ỽ䚠忋䘬⬠⓷ ᶫ㧳⓷柴㛔岒⌛㗗㍊妶映⛘ᷳ攻(德忶㧳㠩)䘬忋䳸斄Ὢ IRIS H.-R. JIANG Examples of Graphs (1/6) ¨ It’s useful to digest the meaning of the nodes and the meaning of the edges in the following examples. ¤ It’s not important to remember them. ¨ Transportation networks: Graphs 7 London underground map (node: station; edge: adjacent stations) ᷴ㔾䵺⅟娔姯—‒㕍✗搜✗⛽ (H. Beck, 1933) http://mag.udn.com/mag/world/storypage.jsp?f_ART_ID=207102 China Airlines international route map (node: city; edge: non-stop flight) IRIS H.-R. JIANG Examples of Graphs (2/6) ¨ Communication networks Graphs 8 Wireless sensor network (node: sensor; edge: signal broadcasting)
  • 8. IRIS H.-R. JIANG Salute to Euler! ¨ Our focus in this course is on problems with a discrete flavor. ¨ One of the most fundamental and expressive of combinatorial structures is the graph. ¤ Invented by L. Euler based on his proof on the Königsberg bridge problem (the seven bridge problem) in 1736. n Is it possible to walk across all the bridges exactly once and return to the starting land area? n Abstraction! Graphs 5 No Eulerian walk L. Euler, Solutioproblematis ad geometriamsituspertinentis, Commentarii Academiae Scientiarum Imperialis Petropolitanae, Vol. 8, pp. 128—140, 1736 (published 1741). IRIS H.-R. JIANG Graph ¨ A graph is simply a way of encoding pairwise relationships among a set of objects. ¨ A graphG = (V, E) consists of ¤ A collection V of nodes (a.k.a. vertices) ¤ A collection E of edges n Each edge joins two nodes n e = {u, v} Î E for some u, vÎ V ¨ In an undirected graph: symmetric relationships ¤ Edges are undirected, i.e., {u, v} == {v, u} n e.g., u and v are family. ¨ In a directed graph: asymmetric relationships ¤ Edges are directed, i.e., (u, v) != (v, u) n e.g., u knows v (celebrity), while v doesn’t know u. ¨ v is one of u’sneighbor if there is an edge (u, v) ¤ Adjacency Graphs 6 u v u v tail head ⚾婾㗗ᶨ攨㍊妶䈑ẞᷳ攻⤪ỽ䚠忋䘬⬠⓷ ᶫ㧳⓷柴㛔岒⌛㗗㍊妶映⛘ᷳ攻(德忶㧳㠩)䘬忋䳸斄Ὢ IRIS H.-R. JIANG Examples of Graphs (1/6) ¨ It’s useful to digest the meaning of the nodes and the meaning of the edges in the following examples. ¤ It’s not important to remember them. ¨ Transportation networks: Graphs 7 London underground map (node: station; edge: adjacent stations) ᷴ㔾䵺⅟娔姯—‒㕍✗搜✗⛽ (H. Beck, 1933) http://mag.udn.com/mag/world/storypage.jsp?f_ART_ID=207102 China Airlines international route map (node: city; edge: non-stop flight) IRIS H.-R. JIANG Examples of Graphs (2/6) ¨ Communication networks Graphs 8 Wireless sensor network (node: sensor; edge: signal broadcasting)
  • 9. IRIS H.-R. JIANG Examples of Graphs (3/6) ¨ Information networks Graphs 9 World Wide Web (node: webpage; edge: hyperlink) IRIS H.-R. JIANG Examples of Graphs (4/6) ¨ Social networks Graphs 10 Facebook (node: people; edge: friendship) http://en.wikipedia.org/wiki/Facebook IRIS H.-R. JIANG Examples of Graphs (5/6) ¨ Dependency networks Graphs 11 Food chain/web (node: species; edge: from prey to predator) IRIS H.-R. JIANG Examples of Graphs (6/6) ¨ Technological Network Graphs 12 Finite state machine (node: state; edge: state transition)
  • 10. IRIS H.-R. JIANG Examples of Graphs (3/6) ¨ Information networks Graphs 9 World Wide Web (node: webpage; edge: hyperlink) IRIS H.-R. JIANG Examples of Graphs (4/6) ¨ Social networks Graphs 10 Facebook (node: people; edge: friendship) http://en.wikipedia.org/wiki/Facebook IRIS H.-R. JIANG Examples of Graphs (5/6) ¨ Dependency networks Graphs 11 Food chain/web (node: species; edge: from prey to predator) IRIS H.-R. JIANG Examples of Graphs (6/6) ¨ Technological Network Graphs 12 Finite state machine (node: state; edge: state transition)
  • 11. IRIS H.-R. JIANG Examples of Graphs (3/6) ¨ Information networks Graphs 9 World Wide Web (node: webpage; edge: hyperlink) IRIS H.-R. JIANG Examples of Graphs (4/6) ¨ Social networks Graphs 10 Facebook (node: people; edge: friendship) http://en.wikipedia.org/wiki/Facebook IRIS H.-R. JIANG Examples of Graphs (5/6) ¨ Dependency networks Graphs 11 Food chain/web (node: species; edge: from prey to predator) IRIS H.-R. JIANG Examples of Graphs (6/6) ¨ Technological Network Graphs 12 Finite state machine (node: state; edge: state transition)
  • 12. IRIS H.-R. JIANG Examples of Graphs (3/6) ¨ Information networks Graphs 9 World Wide Web (node: webpage; edge: hyperlink) IRIS H.-R. JIANG Examples of Graphs (4/6) ¨ Social networks Graphs 10 Facebook (node: people; edge: friendship) http://en.wikipedia.org/wiki/Facebook IRIS H.-R. JIANG Examples of Graphs (5/6) ¨ Dependency networks Graphs 11 Food chain/web (node: species; edge: from prey to predator) IRIS H.-R. JIANG Examples of Graphs (6/6) ¨ Technological Network Graphs 12 Finite state machine (node: state; edge: state transition)
  • 13. IRIS H.-R. JIANG Paths and Connectivity (1/2) ¨ One of the fundamental operations in a graph is that of traversing a sequence of nodes connected by edges. ¤ Browse Web pages by following hyperlinks ¤ Join a 10-day tour from Taipei to Europe on a sequence of flights ¤ Pass gossip by word of mouth (by message of mobile phone) from you to someone far away n “Hey upper east siders, Gossip Girl here!” -- Gossip Girl Graphs 13 IRIS H.-R. JIANG Paths and Connectivity (2/2) ¨ A path in an undirected graph G = (V, E) is a sequence P of nodes v1, v2, …, vk-1, vk with the property that each consecutive pair vi, vi+1 is joined by an edge in E. ¨ A path is simple if all nodes are distinct. ¨ A cycle is a path v1, v2, …, vk-1, vk in which v1 = vk, k> 2, and the first k-1 nodes are all distinct. ¨ An undirected graph is connected if, for every pair of nodes u and v, there is a path from u to v. ¨ The distance between nodes u and v is the minimum number of edges in a u-v path. (¥ for disconnected) ¨ Note: These definitions carry over naturally to directed graphs with respect to the directionality of edges. Graphs 14 Path P = 1, 2, 4, 5, 3, 7, 8 Cycle C = 1, 2, 4, 5, 3, 1 1 2 3 4 5 6 7 8 IRIS H.-R. JIANG Trees ¨ An undirected graph is a tree if it is connected and does not contain a cycle. ¤ Trees are the simplest kind of connected graph: deleting any edge will disconnect it. ¨ Thm: Let G be an undirected graph on n nodes. Any two of the following statements imply the third. ¤ G is connected. ¤ G does not contain a cycle. ¤ G has n-1 edges. Graphs 15 2 3 1 4 5 6 7 9 8 2 3 1 4 5 6 7 9 8 Grab 1 and let the rest hang downward Tree? Yes! G is a tree if it satisfies any two of the three statements IRIS H.-R. JIANG Rooted Trees ¨ A rooted tree is a tree with its root at r. ¨ Rooted trees encode the notion of a hierarchy. ¤ e.g., sitemap of a Web site n The tree-like structure facilitates navigation (root: entry page) Graphs 16 a tree the same tree, rooted at 1 v v’s parent v’s child root r 2 3 1 4 5 6 7 9 8 2 3 1 4 5 6 7 9 8 Grab 1 and let the rest hang downward leaf Directed edges: asymmetric relationship
  • 14. IRIS H.-R. JIANG Paths and Connectivity (1/2) ¨ One of the fundamental operations in a graph is that of traversing a sequence of nodes connected by edges. ¤ Browse Web pages by following hyperlinks ¤ Join a 10-day tour from Taipei to Europe on a sequence of flights ¤ Pass gossip by word of mouth (by message of mobile phone) from you to someone far away n “Hey upper east siders, Gossip Girl here!” -- Gossip Girl Graphs 13 IRIS H.-R. JIANG Paths and Connectivity (2/2) ¨ A path in an undirected graph G = (V, E) is a sequence P of nodes v1, v2, …, vk-1, vk with the property that each consecutive pair vi, vi+1 is joined by an edge in E. ¨ A path is simple if all nodes are distinct. ¨ A cycle is a path v1, v2, …, vk-1, vk in which v1 = vk, k> 2, and the first k-1 nodes are all distinct. ¨ An undirected graph is connected if, for every pair of nodes u and v, there is a path from u to v. ¨ The distance between nodes u and v is the minimum number of edges in a u-v path. (¥ for disconnected) ¨ Note: These definitions carry over naturally to directed graphs with respect to the directionality of edges. Graphs 14 Path P = 1, 2, 4, 5, 3, 7, 8 Cycle C = 1, 2, 4, 5, 3, 1 1 2 3 4 5 6 7 8 IRIS H.-R. JIANG Trees ¨ An undirected graph is a tree if it is connected and does not contain a cycle. ¤ Trees are the simplest kind of connected graph: deleting any edge will disconnect it. ¨ Thm: Let G be an undirected graph on n nodes. Any two of the following statements imply the third. ¤ G is connected. ¤ G does not contain a cycle. ¤ G has n-1 edges. Graphs 15 2 3 1 4 5 6 7 9 8 2 3 1 4 5 6 7 9 8 Grab 1 and let the rest hang downward Tree? Yes! G is a tree if it satisfies any two of the three statements IRIS H.-R. JIANG Rooted Trees ¨ A rooted tree is a tree with its root at r. ¨ Rooted trees encode the notion of a hierarchy. ¤ e.g., sitemap of a Web site n The tree-like structure facilitates navigation (root: entry page) Graphs 16 a tree the same tree, rooted at 1 v v’s parent v’s child root r 2 3 1 4 5 6 7 9 8 2 3 1 4 5 6 7 9 8 Grab 1 and let the rest hang downward leaf Directed edges: asymmetric relationship
  • 15. IRIS H.-R. JIANG Paths and Connectivity (1/2) ¨ One of the fundamental operations in a graph is that of traversing a sequence of nodes connected by edges. ¤ Browse Web pages by following hyperlinks ¤ Join a 10-day tour from Taipei to Europe on a sequence of flights ¤ Pass gossip by word of mouth (by message of mobile phone) from you to someone far away n “Hey upper east siders, Gossip Girl here!” -- Gossip Girl Graphs 13 IRIS H.-R. JIANG Paths and Connectivity (2/2) ¨ A path in an undirected graph G = (V, E) is a sequence P of nodes v1, v2, …, vk-1, vk with the property that each consecutive pair vi, vi+1 is joined by an edge in E. ¨ A path is simple if all nodes are distinct. ¨ A cycle is a path v1, v2, …, vk-1, vk in which v1 = vk, k> 2, and the first k-1 nodes are all distinct. ¨ An undirected graph is connected if, for every pair of nodes u and v, there is a path from u to v. ¨ The distance between nodes u and v is the minimum number of edges in a u-v path. (¥ for disconnected) ¨ Note: These definitions carry over naturally to directed graphs with respect to the directionality of edges. Graphs 14 Path P = 1, 2, 4, 5, 3, 7, 8 Cycle C = 1, 2, 4, 5, 3, 1 1 2 3 4 5 6 7 8 IRIS H.-R. JIANG Trees ¨ An undirected graph is a tree if it is connected and does not contain a cycle. ¤ Trees are the simplest kind of connected graph: deleting any edge will disconnect it. ¨ Thm: Let G be an undirected graph on n nodes. Any two of the following statements imply the third. ¤ G is connected. ¤ G does not contain a cycle. ¤ G has n-1 edges. Graphs 15 2 3 1 4 5 6 7 9 8 2 3 1 4 5 6 7 9 8 Grab 1 and let the rest hang downward Tree? Yes! G is a tree if it satisfies any two of the three statements IRIS H.-R. JIANG Rooted Trees ¨ A rooted tree is a tree with its root at r. ¨ Rooted trees encode the notion of a hierarchy. ¤ e.g., sitemap of a Web site n The tree-like structure facilitates navigation (root: entry page) Graphs 16 a tree the same tree, rooted at 1 v v’s parent v’s child root r 2 3 1 4 5 6 7 9 8 2 3 1 4 5 6 7 9 8 Grab 1 and let the rest hang downward leaf Directed edges: asymmetric relationship
  • 16. IRIS H.-R. JIANG Paths and Connectivity (1/2) ¨ One of the fundamental operations in a graph is that of traversing a sequence of nodes connected by edges. ¤ Browse Web pages by following hyperlinks ¤ Join a 10-day tour from Taipei to Europe on a sequence of flights ¤ Pass gossip by word of mouth (by message of mobile phone) from you to someone far away n “Hey upper east siders, Gossip Girl here!” -- Gossip Girl Graphs 13 IRIS H.-R. JIANG Paths and Connectivity (2/2) ¨ A path in an undirected graph G = (V, E) is a sequence P of nodes v1, v2, …, vk-1, vk with the property that each consecutive pair vi, vi+1 is joined by an edge in E. ¨ A path is simple if all nodes are distinct. ¨ A cycle is a path v1, v2, …, vk-1, vk in which v1 = vk, k> 2, and the first k-1 nodes are all distinct. ¨ An undirected graph is connected if, for every pair of nodes u and v, there is a path from u to v. ¨ The distance between nodes u and v is the minimum number of edges in a u-v path. (¥ for disconnected) ¨ Note: These definitions carry over naturally to directed graphs with respect to the directionality of edges. Graphs 14 Path P = 1, 2, 4, 5, 3, 7, 8 Cycle C = 1, 2, 4, 5, 3, 1 1 2 3 4 5 6 7 8 IRIS H.-R. JIANG Trees ¨ An undirected graph is a tree if it is connected and does not contain a cycle. ¤ Trees are the simplest kind of connected graph: deleting any edge will disconnect it. ¨ Thm: Let G be an undirected graph on n nodes. Any two of the following statements imply the third. ¤ G is connected. ¤ G does not contain a cycle. ¤ G has n-1 edges. Graphs 15 2 3 1 4 5 6 7 9 8 2 3 1 4 5 6 7 9 8 Grab 1 and let the rest hang downward Tree? Yes! G is a tree if it satisfies any two of the three statements IRIS H.-R. JIANG Rooted Trees ¨ A rooted tree is a tree with its root at r. ¨ Rooted trees encode the notion of a hierarchy. ¤ e.g., sitemap of a Web site n The tree-like structure facilitates navigation (root: entry page) Graphs 16 a tree the same tree, rooted at 1 v v’s parent v’s child root r 2 3 1 4 5 6 7 9 8 2 3 1 4 5 6 7 9 8 Grab 1 and let the rest hang downward leaf Directed edges: asymmetric relationship
  • 17. BFS DFS Graph Connectivity and Graph Traversal 17 Graphs 1 2 3 4 5 6 7 8 9 10 11 12 13 IRIS H.-R. JIANG Node-to-Node Connectivity ¨ Q: Given a graph G = (V, E) and two particular nodes s and t, is there a path from s to t in G? ¤ The s-t connectivity problem ¤ The maze-solving problem ¨ A: ¤ For small graphs, easy! (visual inspection) n 1-6 connectivity? 7-13 connectivity? ¤ What if large graphs? How efficiently can we do? Graphs 18 1 2 3 4 5 6 7 8 9 10 11 12 13 room hallway IRIS H.-R. JIANG Breadth-First-Search (BFS) Graphs 19 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9 10 11 12 13 L0 L1 L2 L3 ¨ Breadth-first search (BFS): propagate the waves ¤ Start at s and flood the graph with an expanding wave that grows to visit all nodes that it can reach. ¤ Layer Li: i is the time that a node is reached. n Layer L0 = {s}; layer L1 = all neighbors of L0. n Layer Lj+1 = all nodes that do not belong to an earlier layer and that are neighbors of Lj. n i = distance between s to the nodes that belong to layer Li. Adjacent nodes IRIS H.-R. JIANG BFS Tree Graphs 20 L0 L1 L2 L3 1 2 3 4 5 6 7 8 Nontree edge Tree edge BFS tree ¨ Let T be a BFS tree, let x and y be nodes in T belonging to layers Li and Lj respectively, and let (x, y) be an edge of G. Then i and j differ by at most 1. ¨ Pf: ¤ Without loss of generality, suppose j – i > 1. ¤ By definition, xÎLi , x’s neighbors belongs to Li+1 or earlier. ¤ Since (x, y) is an edge of G, y is x’s neighbor, yÎ Lj and j ! i+1. ¤ ®¬ 1 2 3 4 5 6 8 7 L0 L1 L2 L3 BFS tree
  • 18. BFS DFS Graph Connectivity and Graph Traversal 17 Graphs 1 2 3 4 5 6 7 8 9 10 11 12 13 IRIS H.-R. JIANG Node-to-Node Connectivity ¨ Q: Given a graph G = (V, E) and two particular nodes s and t, is there a path from s to t in G? ¤ The s-t connectivity problem ¤ The maze-solving problem ¨ A: ¤ For small graphs, easy! (visual inspection) n 1-6 connectivity? 7-13 connectivity? ¤ What if large graphs? How efficiently can we do? Graphs 18 1 2 3 4 5 6 7 8 9 10 11 12 13 room hallway IRIS H.-R. JIANG Breadth-First-Search (BFS) Graphs 19 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9 10 11 12 13 L0 L1 L2 L3 ¨ Breadth-first search (BFS): propagate the waves ¤ Start at s and flood the graph with an expanding wave that grows to visit all nodes that it can reach. ¤ Layer Li: i is the time that a node is reached. n Layer L0 = {s}; layer L1 = all neighbors of L0. n Layer Lj+1 = all nodes that do not belong to an earlier layer and that are neighbors of Lj. n i = distance between s to the nodes that belong to layer Li. Adjacent nodes IRIS H.-R. JIANG BFS Tree Graphs 20 L0 L1 L2 L3 1 2 3 4 5 6 7 8 Nontree edge Tree edge BFS tree ¨ Let T be a BFS tree, let x and y be nodes in T belonging to layers Li and Lj respectively, and let (x, y) be an edge of G. Then i and j differ by at most 1. ¨ Pf: ¤ Without loss of generality, suppose j – i > 1. ¤ By definition, xÎLi , x’s neighbors belongs to Li+1 or earlier. ¤ Since (x, y) is an edge of G, y is x’s neighbor, yÎ Lj and j ! i+1. ¤ ®¬ 1 2 3 4 5 6 8 7 L0 L1 L2 L3 BFS tree
  • 19. BFS DFS Graph Connectivity and Graph Traversal 17 Graphs 1 2 3 4 5 6 7 8 9 10 11 12 13 IRIS H.-R. JIANG Node-to-Node Connectivity ¨ Q: Given a graph G = (V, E) and two particular nodes s and t, is there a path from s to t in G? ¤ The s-t connectivity problem ¤ The maze-solving problem ¨ A: ¤ For small graphs, easy! (visual inspection) n 1-6 connectivity? 7-13 connectivity? ¤ What if large graphs? How efficiently can we do? Graphs 18 1 2 3 4 5 6 7 8 9 10 11 12 13 room hallway IRIS H.-R. JIANG Breadth-First-Search (BFS) Graphs 19 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9 10 11 12 13 L0 L1 L2 L3 ¨ Breadth-first search (BFS): propagate the waves ¤ Start at s and flood the graph with an expanding wave that grows to visit all nodes that it can reach. ¤ Layer Li: i is the time that a node is reached. n Layer L0 = {s}; layer L1 = all neighbors of L0. n Layer Lj+1 = all nodes that do not belong to an earlier layer and that are neighbors of Lj. n i = distance between s to the nodes that belong to layer Li. Adjacent nodes IRIS H.-R. JIANG BFS Tree Graphs 20 L0 L1 L2 L3 1 2 3 4 5 6 7 8 Nontree edge Tree edge BFS tree ¨ Let T be a BFS tree, let x and y be nodes in T belonging to layers Li and Lj respectively, and let (x, y) be an edge of G. Then i and j differ by at most 1. ¨ Pf: ¤ Without loss of generality, suppose j – i > 1. ¤ By definition, xÎLi , x’s neighbors belongs to Li+1 or earlier. ¤ Since (x, y) is an edge of G, y is x’s neighbor, yÎ Lj and j ! i+1. ¤ ®¬ 1 2 3 4 5 6 8 7 L0 L1 L2 L3 BFS tree
  • 20. BFS DFS Graph Connectivity and Graph Traversal 17 Graphs 1 2 3 4 5 6 7 8 9 10 11 12 13 IRIS H.-R. JIANG Node-to-Node Connectivity ¨ Q: Given a graph G = (V, E) and two particular nodes s and t, is there a path from s to t in G? ¤ The s-t connectivity problem ¤ The maze-solving problem ¨ A: ¤ For small graphs, easy! (visual inspection) n 1-6 connectivity? 7-13 connectivity? ¤ What if large graphs? How efficiently can we do? Graphs 18 1 2 3 4 5 6 7 8 9 10 11 12 13 room hallway IRIS H.-R. JIANG Breadth-First-Search (BFS) Graphs 19 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9 10 11 12 13 L0 L1 L2 L3 ¨ Breadth-first search (BFS): propagate the waves ¤ Start at s and flood the graph with an expanding wave that grows to visit all nodes that it can reach. ¤ Layer Li: i is the time that a node is reached. n Layer L0 = {s}; layer L1 = all neighbors of L0. n Layer Lj+1 = all nodes that do not belong to an earlier layer and that are neighbors of Lj. n i = distance between s to the nodes that belong to layer Li. Adjacent nodes IRIS H.-R. JIANG BFS Tree Graphs 20 L0 L1 L2 L3 1 2 3 4 5 6 7 8 Nontree edge Tree edge BFS tree ¨ Let T be a BFS tree, let x and y be nodes in T belonging to layers Li and Lj respectively, and let (x, y) be an edge of G. Then i and j differ by at most 1. ¨ Pf: ¤ Without loss of generality, suppose j – i > 1. ¤ By definition, xÎLi , x’s neighbors belongs to Li+1 or earlier. ¤ Since (x, y) is an edge of G, y is x’s neighbor, yÎ Lj and j ! i+1. ¤ ®¬ 1 2 3 4 5 6 8 7 L0 L1 L2 L3 BFS tree
  • 21. IRIS H.-R. JIANG Connected Component ¨ A connected component containing s is the set of nodes that are reachable from s. ¤ Connected component containing node 1 is {1, 2, 3, 4, 5, 6, 7, 8}. ¤ There are three connected components. n The other two are {9, 10} and {11, 12, 13}. Graphs 21 1 2 3 4 5 6 7 8 9 10 11 12 13 IRIS H.-R. JIANG Color Fill ¨ Q: Given lime green pixel in an image, how to change color of entire blob of neighboring lime pixels to blue? ¨ A: Model the image as a graph. ¤ Node: pixel. ¤ Edge: two neighboring lime pixels. ¤ Blob: connected component of lime pixels. Graphs 22 recolor lime green blob to blue IRIS H.-R. JIANG Connected Component ¨ Find all nodes reachable from s: ¨ Correctness: Upon termination, R is the connected component containing s. ¨ Pf: ¤ Q: How about any node vÎR? ¤ Q: How about a node wÏR? ¨ Q: How to recover the actual path from s to any node tÎR? ¨ Q: How to explore a new edge in line 2? ¤ BFS: explore in order of distance from s. ¤ Any method else? Graphs 23 Connected-Component(s) // R will consist of nodes to which s has a path 1. initialize R = {s} 2. while (there is an edge (u, v) where uÎR andvÏR) do 3. R = R + {v} it's safe to add v s u v R IRIS H.-R. JIANG Depth-First Search (DFS) ¨ Depth-first search (DFS): Go as deeply as possible or retreat ¤ Start from s and try the first edge leading out, and so on, until reach a dead end. Backtrack and repeat. n A mouse in a maze without the map. ¤ Another method for finding connected component Graphs 24 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 DFS(u) 1. mark u as explored and add u to R 2. foreach edge (u, v) incident to u do 3. if (v is not marked as explored) then 4. recursively invoke DFS(v)
  • 22. IRIS H.-R. JIANG Connected Component ¨ A connected component containing s is the set of nodes that are reachable from s. ¤ Connected component containing node 1 is {1, 2, 3, 4, 5, 6, 7, 8}. ¤ There are three connected components. n The other two are {9, 10} and {11, 12, 13}. Graphs 21 1 2 3 4 5 6 7 8 9 10 11 12 13 IRIS H.-R. JIANG Color Fill ¨ Q: Given lime green pixel in an image, how to change color of entire blob of neighboring lime pixels to blue? ¨ A: Model the image as a graph. ¤ Node: pixel. ¤ Edge: two neighboring lime pixels. ¤ Blob: connected component of lime pixels. Graphs 22 recolor lime green blob to blue IRIS H.-R. JIANG Connected Component ¨ Find all nodes reachable from s: ¨ Correctness: Upon termination, R is the connected component containing s. ¨ Pf: ¤ Q: How about any node vÎR? ¤ Q: How about a node wÏR? ¨ Q: How to recover the actual path from s to any node tÎR? ¨ Q: How to explore a new edge in line 2? ¤ BFS: explore in order of distance from s. ¤ Any method else? Graphs 23 Connected-Component(s) // R will consist of nodes to which s has a path 1. initialize R = {s} 2. while (there is an edge (u, v) where uÎR andvÏR) do 3. R = R + {v} it's safe to add v s u v R IRIS H.-R. JIANG Depth-First Search (DFS) ¨ Depth-first search (DFS): Go as deeply as possible or retreat ¤ Start from s and try the first edge leading out, and so on, until reach a dead end. Backtrack and repeat. n A mouse in a maze without the map. ¤ Another method for finding connected component Graphs 24 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 DFS(u) 1. mark u as explored and add u to R 2. foreach edge (u, v) incident to u do 3. if (v is not marked as explored) then 4. recursively invoke DFS(v)
  • 23. IRIS H.-R. JIANG Connected Component ¨ A connected component containing s is the set of nodes that are reachable from s. ¤ Connected component containing node 1 is {1, 2, 3, 4, 5, 6, 7, 8}. ¤ There are three connected components. n The other two are {9, 10} and {11, 12, 13}. Graphs 21 1 2 3 4 5 6 7 8 9 10 11 12 13 IRIS H.-R. JIANG Color Fill ¨ Q: Given lime green pixel in an image, how to change color of entire blob of neighboring lime pixels to blue? ¨ A: Model the image as a graph. ¤ Node: pixel. ¤ Edge: two neighboring lime pixels. ¤ Blob: connected component of lime pixels. Graphs 22 recolor lime green blob to blue IRIS H.-R. JIANG Connected Component ¨ Find all nodes reachable from s: ¨ Correctness: Upon termination, R is the connected component containing s. ¨ Pf: ¤ Q: How about any node vÎR? ¤ Q: How about a node wÏR? ¨ Q: How to recover the actual path from s to any node tÎR? ¨ Q: How to explore a new edge in line 2? ¤ BFS: explore in order of distance from s. ¤ Any method else? Graphs 23 Connected-Component(s) // R will consist of nodes to which s has a path 1. initialize R = {s} 2. while (there is an edge (u, v) where uÎR andvÏR) do 3. R = R + {v} it's safe to add v s u v R IRIS H.-R. JIANG Depth-First Search (DFS) ¨ Depth-first search (DFS): Go as deeply as possible or retreat ¤ Start from s and try the first edge leading out, and so on, until reach a dead end. Backtrack and repeat. n A mouse in a maze without the map. ¤ Another method for finding connected component Graphs 24 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 DFS(u) 1. mark u as explored and add u to R 2. foreach edge (u, v) incident to u do 3. if (v is not marked as explored) then 4. recursively invoke DFS(v)
  • 24. IRIS H.-R. JIANG Connected Component ¨ A connected component containing s is the set of nodes that are reachable from s. ¤ Connected component containing node 1 is {1, 2, 3, 4, 5, 6, 7, 8}. ¤ There are three connected components. n The other two are {9, 10} and {11, 12, 13}. Graphs 21 1 2 3 4 5 6 7 8 9 10 11 12 13 IRIS H.-R. JIANG Color Fill ¨ Q: Given lime green pixel in an image, how to change color of entire blob of neighboring lime pixels to blue? ¨ A: Model the image as a graph. ¤ Node: pixel. ¤ Edge: two neighboring lime pixels. ¤ Blob: connected component of lime pixels. Graphs 22 recolor lime green blob to blue IRIS H.-R. JIANG Connected Component ¨ Find all nodes reachable from s: ¨ Correctness: Upon termination, R is the connected component containing s. ¨ Pf: ¤ Q: How about any node vÎR? ¤ Q: How about a node wÏR? ¨ Q: How to recover the actual path from s to any node tÎR? ¨ Q: How to explore a new edge in line 2? ¤ BFS: explore in order of distance from s. ¤ Any method else? Graphs 23 Connected-Component(s) // R will consist of nodes to which s has a path 1. initialize R = {s} 2. while (there is an edge (u, v) where uÎR andvÏR) do 3. R = R + {v} it's safe to add v s u v R IRIS H.-R. JIANG Depth-First Search (DFS) ¨ Depth-first search (DFS): Go as deeply as possible or retreat ¤ Start from s and try the first edge leading out, and so on, until reach a dead end. Backtrack and repeat. n A mouse in a maze without the map. ¤ Another method for finding connected component Graphs 24 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 DFS(u) 1. mark u as explored and add u to R 2. foreach edge (u, v) incident to u do 3. if (v is not marked as explored) then 4. recursively invoke DFS(v)
  • 25. IRIS H.-R. JIANG DFS Tree ¨ Let T be a DFS tree, let x and y be nodes in T, and let (x, y) be a nontree edge. Then one of x or y is an ancestor of the other. ¨ Pf: ¤ WLOG, suppose x is reached first by DFS. ¤ When (x, y) is examined during DFS(x), it is not added to T because y is marked explored. ¤ Since y is not marked as explored when DFS(x) was first invoked, it is a node that was discovered between the invocation and end of the recursive call DFS(x). ¤ y is a descendant of x. Graphs 25 DFS tree 1 2 4 5 6 7 8 1 2 3 4 5 6 7 8 DFS tree Nontree edge Tree edge descendant IRIS H.-R. JIANG Summary: BFS and DFS ¨ Similarity: BFS/DFS builds the connected component containing s. ¨ Difference: BFS tree is flat/short; DFS tree is narrow/deep. ¤ What are the nontree edges in BFS/DFS? ¨ Q: How to produce all the connected components of a graph? ¨ A: Graphs 26 1 2 3 4 5 6 7 8 9 10 11 12 13 Lists / arrays Queues / stacks Implementation 27 Graphs 1 2 3 4 5 6 7 8 9 10 11 12 13 IRIS H.-R. JIANG Representing Graphs ¨ A graph G = (V, E) ¤ |V| = the number of nodes = n ¤ |E| = the number of edges = m ¨ Dense or sparse? ¤ For a connected graph, n – 1 ! m ! ! n2 ¨ Linear time = O(m+n) ¤ Why? It takes O(m+n) to read the input Graphs 28 1 2 3 4 5 6 7 8 cardinality (size) of a set n 2
  • 26. IRIS H.-R. JIANG DFS Tree ¨ Let T be a DFS tree, let x and y be nodes in T, and let (x, y) be a nontree edge. Then one of x or y is an ancestor of the other. ¨ Pf: ¤ WLOG, suppose x is reached first by DFS. ¤ When (x, y) is examined during DFS(x), it is not added to T because y is marked explored. ¤ Since y is not marked as explored when DFS(x) was first invoked, it is a node that was discovered between the invocation and end of the recursive call DFS(x). ¤ y is a descendant of x. Graphs 25 DFS tree 1 2 4 5 6 7 8 1 2 3 4 5 6 7 8 DFS tree Nontree edge Tree edge descendant IRIS H.-R. JIANG Summary: BFS and DFS ¨ Similarity: BFS/DFS builds the connected component containing s. ¨ Difference: BFS tree is flat/short; DFS tree is narrow/deep. ¤ What are the nontree edges in BFS/DFS? ¨ Q: How to produce all the connected components of a graph? ¨ A: Graphs 26 1 2 3 4 5 6 7 8 9 10 11 12 13 Lists / arrays Queues / stacks Implementation 27 Graphs 1 2 3 4 5 6 7 8 9 10 11 12 13 IRIS H.-R. JIANG Representing Graphs ¨ A graph G = (V, E) ¤ |V| = the number of nodes = n ¤ |E| = the number of edges = m ¨ Dense or sparse? ¤ For a connected graph, n – 1 ! m ! ! n2 ¨ Linear time = O(m+n) ¤ Why? It takes O(m+n) to read the input Graphs 28 1 2 3 4 5 6 7 8 cardinality (size) of a set n 2
  • 27. IRIS H.-R. JIANG DFS Tree ¨ Let T be a DFS tree, let x and y be nodes in T, and let (x, y) be a nontree edge. Then one of x or y is an ancestor of the other. ¨ Pf: ¤ WLOG, suppose x is reached first by DFS. ¤ When (x, y) is examined during DFS(x), it is not added to T because y is marked explored. ¤ Since y is not marked as explored when DFS(x) was first invoked, it is a node that was discovered between the invocation and end of the recursive call DFS(x). ¤ y is a descendant of x. Graphs 25 DFS tree 1 2 4 5 6 7 8 1 2 3 4 5 6 7 8 DFS tree Nontree edge Tree edge descendant IRIS H.-R. JIANG Summary: BFS and DFS ¨ Similarity: BFS/DFS builds the connected component containing s. ¨ Difference: BFS tree is flat/short; DFS tree is narrow/deep. ¤ What are the nontree edges in BFS/DFS? ¨ Q: How to produce all the connected components of a graph? ¨ A: Graphs 26 1 2 3 4 5 6 7 8 9 10 11 12 13 Lists / arrays Queues / stacks Implementation 27 Graphs 1 2 3 4 5 6 7 8 9 10 11 12 13 IRIS H.-R. JIANG Representing Graphs ¨ A graph G = (V, E) ¤ |V| = the number of nodes = n ¤ |E| = the number of edges = m ¨ Dense or sparse? ¤ For a connected graph, n – 1 ! m ! ! n2 ¨ Linear time = O(m+n) ¤ Why? It takes O(m+n) to read the input Graphs 28 1 2 3 4 5 6 7 8 cardinality (size) of a set n 2
  • 28. IRIS H.-R. JIANG DFS Tree ¨ Let T be a DFS tree, let x and y be nodes in T, and let (x, y) be a nontree edge. Then one of x or y is an ancestor of the other. ¨ Pf: ¤ WLOG, suppose x is reached first by DFS. ¤ When (x, y) is examined during DFS(x), it is not added to T because y is marked explored. ¤ Since y is not marked as explored when DFS(x) was first invoked, it is a node that was discovered between the invocation and end of the recursive call DFS(x). ¤ y is a descendant of x. Graphs 25 DFS tree 1 2 4 5 6 7 8 1 2 3 4 5 6 7 8 DFS tree Nontree edge Tree edge descendant IRIS H.-R. JIANG Summary: BFS and DFS ¨ Similarity: BFS/DFS builds the connected component containing s. ¨ Difference: BFS tree is flat/short; DFS tree is narrow/deep. ¤ What are the nontree edges in BFS/DFS? ¨ Q: How to produce all the connected components of a graph? ¨ A: Graphs 26 1 2 3 4 5 6 7 8 9 10 11 12 13 Lists / arrays Queues / stacks Implementation 27 Graphs 1 2 3 4 5 6 7 8 9 10 11 12 13 IRIS H.-R. JIANG Representing Graphs ¨ A graph G = (V, E) ¤ |V| = the number of nodes = n ¤ |E| = the number of edges = m ¨ Dense or sparse? ¤ For a connected graph, n – 1 ! m ! ! n2 ¨ Linear time = O(m+n) ¤ Why? It takes O(m+n) to read the input Graphs 28 1 2 3 4 5 6 7 8 cardinality (size) of a set n 2
  • 29. IRIS H.-R. JIANG Adjacency Matrix ¨ Consider a graph G = (V, E) with n nodes, V = {1, …, n}. ¨ The adjacency matrix of G is an nxn martix A where ¤ A[u, v] = 1 if (u, v) Î E; ¤ A[u, v] = 0, otherwise. ¨ Time: ¤ Q(1) time for checking if (u, v) Î E. ¤ Q(n) time for finding out all neighbors of some u Î V. n Visit many 0’s ¨ Space: Q(n2) ¤ What if sparse graphs? Graphs 29 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 0 1 1 0 0 0 0 0 2 1 0 1 1 1 0 0 0 3 1 1 0 0 1 0 1 1 4 0 1 0 1 1 0 0 0 5 0 1 1 1 0 1 0 0 6 0 0 0 0 1 0 0 0 7 0 0 1 0 0 0 0 1 8 0 0 1 0 0 0 1 0 symmetric IRIS H.-R. JIANG Adjacency List ¨ The adjacency list of G is an array Adj[]of n lists, one for each node represents its neighbors ¤ Adj[u] = a linked list of {v | (u, v) ÎE}. ¨ Time: ¤ Q(deg(u)) time for checking one edge or all neighbors of a node. ¨ Space: O(n+m) Graphs 30 2 0 3 [1] 1 3 [2] 1 2 [3] 5 2 0 5 [4] 2m 2 3 [5] 0 5 [6] 3 0 8 [7] 3 0 7 [8] 1 2 3 4 5 6 7 8 7 0 8 4 0 6 4 0 5 degree of u: number of neighbors IRIS H.-R. JIANG What is a Queue? ¨ A queue is a set of elements from which we extract elements in first-in, first-out (FIFO) order. ¤ We select elements in the same order in which they were added. Graphs 31 front rear Q = (a1, ..., an) front, rear A rear A B front rear A B C front Push (A) Push (B) Push (C) rear A B C D front Push (D) rear B C D front Pop () rear B C D E front Push (E) a1 rear front Push Pop a2 … an Two open ended container IRIS H.-R. JIANG What is a Stack? ¨ A stack is a set of elements from which we extract elements in last-in, first-out (LIFO) order. ¤ Each time we select an element, we choose the one that was added most recently. Graphs 32 bottom top S = (a1, ..., an) B A D C B A C B A D C B A E D C B A top top top top top top A Push (A) Push (B) Push (C) Push (D) Push (E) Pop( ) = E a1 top bottom Push Pop a2 … an One open ended and one close ended container
  • 30. IRIS H.-R. JIANG Adjacency Matrix ¨ Consider a graph G = (V, E) with n nodes, V = {1, …, n}. ¨ The adjacency matrix of G is an nxn martix A where ¤ A[u, v] = 1 if (u, v) Î E; ¤ A[u, v] = 0, otherwise. ¨ Time: ¤ Q(1) time for checking if (u, v) Î E. ¤ Q(n) time for finding out all neighbors of some u Î V. n Visit many 0’s ¨ Space: Q(n2) ¤ What if sparse graphs? Graphs 29 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 0 1 1 0 0 0 0 0 2 1 0 1 1 1 0 0 0 3 1 1 0 0 1 0 1 1 4 0 1 0 1 1 0 0 0 5 0 1 1 1 0 1 0 0 6 0 0 0 0 1 0 0 0 7 0 0 1 0 0 0 0 1 8 0 0 1 0 0 0 1 0 symmetric IRIS H.-R. JIANG Adjacency List ¨ The adjacency list of G is an array Adj[]of n lists, one for each node represents its neighbors ¤ Adj[u] = a linked list of {v | (u, v) ÎE}. ¨ Time: ¤ Q(deg(u)) time for checking one edge or all neighbors of a node. ¨ Space: O(n+m) Graphs 30 2 0 3 [1] 1 3 [2] 1 2 [3] 5 2 0 5 [4] 2m 2 3 [5] 0 5 [6] 3 0 8 [7] 3 0 7 [8] 1 2 3 4 5 6 7 8 7 0 8 4 0 6 4 0 5 degree of u: number of neighbors IRIS H.-R. JIANG What is a Queue? ¨ A queue is a set of elements from which we extract elements in first-in, first-out (FIFO) order. ¤ We select elements in the same order in which they were added. Graphs 31 front rear Q = (a1, ..., an) front, rear A rear A B front rear A B C front Push (A) Push (B) Push (C) rear A B C D front Push (D) rear B C D front Pop () rear B C D E front Push (E) a1 rear front Push Pop a2 … an Two open ended container IRIS H.-R. JIANG What is a Stack? ¨ A stack is a set of elements from which we extract elements in last-in, first-out (LIFO) order. ¤ Each time we select an element, we choose the one that was added most recently. Graphs 32 bottom top S = (a1, ..., an) B A D C B A C B A D C B A E D C B A top top top top top top A Push (A) Push (B) Push (C) Push (D) Push (E) Pop( ) = E a1 top bottom Push Pop a2 … an One open ended and one close ended container
  • 31. IRIS H.-R. JIANG Adjacency Matrix ¨ Consider a graph G = (V, E) with n nodes, V = {1, …, n}. ¨ The adjacency matrix of G is an nxn martix A where ¤ A[u, v] = 1 if (u, v) Î E; ¤ A[u, v] = 0, otherwise. ¨ Time: ¤ Q(1) time for checking if (u, v) Î E. ¤ Q(n) time for finding out all neighbors of some u Î V. n Visit many 0’s ¨ Space: Q(n2) ¤ What if sparse graphs? Graphs 29 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 0 1 1 0 0 0 0 0 2 1 0 1 1 1 0 0 0 3 1 1 0 0 1 0 1 1 4 0 1 0 1 1 0 0 0 5 0 1 1 1 0 1 0 0 6 0 0 0 0 1 0 0 0 7 0 0 1 0 0 0 0 1 8 0 0 1 0 0 0 1 0 symmetric IRIS H.-R. JIANG Adjacency List ¨ The adjacency list of G is an array Adj[]of n lists, one for each node represents its neighbors ¤ Adj[u] = a linked list of {v | (u, v) ÎE}. ¨ Time: ¤ Q(deg(u)) time for checking one edge or all neighbors of a node. ¨ Space: O(n+m) Graphs 30 2 0 3 [1] 1 3 [2] 1 2 [3] 5 2 0 5 [4] 2m 2 3 [5] 0 5 [6] 3 0 8 [7] 3 0 7 [8] 1 2 3 4 5 6 7 8 7 0 8 4 0 6 4 0 5 degree of u: number of neighbors IRIS H.-R. JIANG What is a Queue? ¨ A queue is a set of elements from which we extract elements in first-in, first-out (FIFO) order. ¤ We select elements in the same order in which they were added. Graphs 31 front rear Q = (a1, ..., an) front, rear A rear A B front rear A B C front Push (A) Push (B) Push (C) rear A B C D front Push (D) rear B C D front Pop () rear B C D E front Push (E) a1 rear front Push Pop a2 … an Two open ended container IRIS H.-R. JIANG What is a Stack? ¨ A stack is a set of elements from which we extract elements in last-in, first-out (LIFO) order. ¤ Each time we select an element, we choose the one that was added most recently. Graphs 32 bottom top S = (a1, ..., an) B A D C B A C B A D C B A E D C B A top top top top top top A Push (A) Push (B) Push (C) Push (D) Push (E) Pop( ) = E a1 top bottom Push Pop a2 … an One open ended and one close ended container
  • 32. IRIS H.-R. JIANG Adjacency Matrix ¨ Consider a graph G = (V, E) with n nodes, V = {1, …, n}. ¨ The adjacency matrix of G is an nxn martix A where ¤ A[u, v] = 1 if (u, v) Î E; ¤ A[u, v] = 0, otherwise. ¨ Time: ¤ Q(1) time for checking if (u, v) Î E. ¤ Q(n) time for finding out all neighbors of some u Î V. n Visit many 0’s ¨ Space: Q(n2) ¤ What if sparse graphs? Graphs 29 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 0 1 1 0 0 0 0 0 2 1 0 1 1 1 0 0 0 3 1 1 0 0 1 0 1 1 4 0 1 0 1 1 0 0 0 5 0 1 1 1 0 1 0 0 6 0 0 0 0 1 0 0 0 7 0 0 1 0 0 0 0 1 8 0 0 1 0 0 0 1 0 symmetric IRIS H.-R. JIANG Adjacency List ¨ The adjacency list of G is an array Adj[]of n lists, one for each node represents its neighbors ¤ Adj[u] = a linked list of {v | (u, v) ÎE}. ¨ Time: ¤ Q(deg(u)) time for checking one edge or all neighbors of a node. ¨ Space: O(n+m) Graphs 30 2 0 3 [1] 1 3 [2] 1 2 [3] 5 2 0 5 [4] 2m 2 3 [5] 0 5 [6] 3 0 8 [7] 3 0 7 [8] 1 2 3 4 5 6 7 8 7 0 8 4 0 6 4 0 5 degree of u: number of neighbors IRIS H.-R. JIANG What is a Queue? ¨ A queue is a set of elements from which we extract elements in first-in, first-out (FIFO) order. ¤ We select elements in the same order in which they were added. Graphs 31 front rear Q = (a1, ..., an) front, rear A rear A B front rear A B C front Push (A) Push (B) Push (C) rear A B C D front Push (D) rear B C D front Pop () rear B C D E front Push (E) a1 rear front Push Pop a2 … an Two open ended container IRIS H.-R. JIANG What is a Stack? ¨ A stack is a set of elements from which we extract elements in last-in, first-out (LIFO) order. ¤ Each time we select an element, we choose the one that was added most recently. Graphs 32 bottom top S = (a1, ..., an) B A D C B A C B A D C B A E D C B A top top top top top top A Push (A) Push (B) Push (C) Push (D) Push (E) Pop( ) = E a1 top bottom Push Pop a2 … an One open ended and one close ended container
  • 33. IRIS H.-R. JIANG Linked Stacks and Queues ¨ Implement queues and stacks by linked lists Graphs 33 datalink top . . . 0 Linked stack Advantage? - Variable sizes - Insert/delete in O(1) data link front Linked queue 0 rear … Push Pop Push Pop IRIS H.-R. JIANG ¨ Adjacency list is ideal for implementing BFS ¨ Q: How to manage each layer list L[i]? ¨ A: A queue/stack is fine ¤ Nodes in L[i] can be in any order ¤ Or, we can merge all layer lists into a single list L as a queue BFS(s) // T will be BFS tree rooted at s; layer counter i; layer list L[i] 1. Discovered[s] = true; Discovered[v] = false for other v 2. i = 0; L[0] = {s}; T = {}; 3. while (L[i] is not empty) do 4. L[i+1] = {}; 5. for each (node uÎL[i]) do 6. for each (edge (u, v) incident to u) do 7. if (Discovered[v] = false) then 8. Discovered[v] = true 9. T = T + {(u, v)} 10. L[i+1] = L[i+1] + {v} 11. i++ Implementing BFS Graphs 34 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 L0 L1 L2 L3 Q: Running time? O(n2) or O(n+m) Why? IRIS H.-R. JIANG ¨ We implement DFS by adjacency list ¨ Recursive procedure ¨ Alternative implementation of DFS ¤ Process each adjacency list in the reverse order DFS(u) 1. mark u as explored and add u to R 2. foreach edge (u, v) incident to u do 3. if (v is not marked as explored) then 4. recursively invoke DFS(v) Implementing DFS Graphs 35 DFS(s) // S: a stack of nodes whose neighbors haven’t been entirely explored 1. S = {s} 2. while (S is not empty) do 3. remove a node u from S 4. if (Explored[u] = false) then 5. Explored[u] = true 6. for each (edge (u, v) incident to u) do 7. S = S + {v} 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 Q: Running time? O(n2) or O(n+m) Why? IRIS H.-R. JIANG Summary: Implementation ¨ Graph: ¨ Graph traversal ¤ BFS: queue (or stack) ¤ DFS: stack ¤ O(n+m) time Graphs 36 Adjacency matrix vs. Adjacency list Winner Faster to find an edge? Matrix Faster to find degree? List Faster to traverse the graph? List Storage for sparse graph? List Storage for dense graph? Matrix Edge insertion or deletion? Matrix Better for most applications? List
  • 34. IRIS H.-R. JIANG Linked Stacks and Queues ¨ Implement queues and stacks by linked lists Graphs 33 datalink top . . . 0 Linked stack Advantage? - Variable sizes - Insert/delete in O(1) data link front Linked queue 0 rear … Push Pop Push Pop IRIS H.-R. JIANG ¨ Adjacency list is ideal for implementing BFS ¨ Q: How to manage each layer list L[i]? ¨ A: A queue/stack is fine ¤ Nodes in L[i] can be in any order ¤ Or, we can merge all layer lists into a single list L as a queue BFS(s) // T will be BFS tree rooted at s; layer counter i; layer list L[i] 1. Discovered[s] = true; Discovered[v] = false for other v 2. i = 0; L[0] = {s}; T = {}; 3. while (L[i] is not empty) do 4. L[i+1] = {}; 5. for each (node uÎL[i]) do 6. for each (edge (u, v) incident to u) do 7. if (Discovered[v] = false) then 8. Discovered[v] = true 9. T = T + {(u, v)} 10. L[i+1] = L[i+1] + {v} 11. i++ Implementing BFS Graphs 34 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 L0 L1 L2 L3 Q: Running time? O(n2) or O(n+m) Why? IRIS H.-R. JIANG ¨ We implement DFS by adjacency list ¨ Recursive procedure ¨ Alternative implementation of DFS ¤ Process each adjacency list in the reverse order DFS(u) 1. mark u as explored and add u to R 2. foreach edge (u, v) incident to u do 3. if (v is not marked as explored) then 4. recursively invoke DFS(v) Implementing DFS Graphs 35 DFS(s) // S: a stack of nodes whose neighbors haven’t been entirely explored 1. S = {s} 2. while (S is not empty) do 3. remove a node u from S 4. if (Explored[u] = false) then 5. Explored[u] = true 6. for each (edge (u, v) incident to u) do 7. S = S + {v} 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 Q: Running time? O(n2) or O(n+m) Why? IRIS H.-R. JIANG Summary: Implementation ¨ Graph: ¨ Graph traversal ¤ BFS: queue (or stack) ¤ DFS: stack ¤ O(n+m) time Graphs 36 Adjacency matrix vs. Adjacency list Winner Faster to find an edge? Matrix Faster to find degree? List Faster to traverse the graph? List Storage for sparse graph? List Storage for dense graph? Matrix Edge insertion or deletion? Matrix Better for most applications? List
  • 35. IRIS H.-R. JIANG Linked Stacks and Queues ¨ Implement queues and stacks by linked lists Graphs 33 datalink top . . . 0 Linked stack Advantage? - Variable sizes - Insert/delete in O(1) data link front Linked queue 0 rear … Push Pop Push Pop IRIS H.-R. JIANG ¨ Adjacency list is ideal for implementing BFS ¨ Q: How to manage each layer list L[i]? ¨ A: A queue/stack is fine ¤ Nodes in L[i] can be in any order ¤ Or, we can merge all layer lists into a single list L as a queue BFS(s) // T will be BFS tree rooted at s; layer counter i; layer list L[i] 1. Discovered[s] = true; Discovered[v] = false for other v 2. i = 0; L[0] = {s}; T = {}; 3. while (L[i] is not empty) do 4. L[i+1] = {}; 5. for each (node uÎL[i]) do 6. for each (edge (u, v) incident to u) do 7. if (Discovered[v] = false) then 8. Discovered[v] = true 9. T = T + {(u, v)} 10. L[i+1] = L[i+1] + {v} 11. i++ Implementing BFS Graphs 34 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 L0 L1 L2 L3 Q: Running time? O(n2) or O(n+m) Why? IRIS H.-R. JIANG ¨ We implement DFS by adjacency list ¨ Recursive procedure ¨ Alternative implementation of DFS ¤ Process each adjacency list in the reverse order DFS(u) 1. mark u as explored and add u to R 2. foreach edge (u, v) incident to u do 3. if (v is not marked as explored) then 4. recursively invoke DFS(v) Implementing DFS Graphs 35 DFS(s) // S: a stack of nodes whose neighbors haven’t been entirely explored 1. S = {s} 2. while (S is not empty) do 3. remove a node u from S 4. if (Explored[u] = false) then 5. Explored[u] = true 6. for each (edge (u, v) incident to u) do 7. S = S + {v} 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 Q: Running time? O(n2) or O(n+m) Why? IRIS H.-R. JIANG Summary: Implementation ¨ Graph: ¨ Graph traversal ¤ BFS: queue (or stack) ¤ DFS: stack ¤ O(n+m) time Graphs 36 Adjacency matrix vs. Adjacency list Winner Faster to find an edge? Matrix Faster to find degree? List Faster to traverse the graph? List Storage for sparse graph? List Storage for dense graph? Matrix Edge insertion or deletion? Matrix Better for most applications? List
  • 36. IRIS H.-R. JIANG Linked Stacks and Queues ¨ Implement queues and stacks by linked lists Graphs 33 datalink top . . . 0 Linked stack Advantage? - Variable sizes - Insert/delete in O(1) data link front Linked queue 0 rear … Push Pop Push Pop IRIS H.-R. JIANG ¨ Adjacency list is ideal for implementing BFS ¨ Q: How to manage each layer list L[i]? ¨ A: A queue/stack is fine ¤ Nodes in L[i] can be in any order ¤ Or, we can merge all layer lists into a single list L as a queue BFS(s) // T will be BFS tree rooted at s; layer counter i; layer list L[i] 1. Discovered[s] = true; Discovered[v] = false for other v 2. i = 0; L[0] = {s}; T = {}; 3. while (L[i] is not empty) do 4. L[i+1] = {}; 5. for each (node uÎL[i]) do 6. for each (edge (u, v) incident to u) do 7. if (Discovered[v] = false) then 8. Discovered[v] = true 9. T = T + {(u, v)} 10. L[i+1] = L[i+1] + {v} 11. i++ Implementing BFS Graphs 34 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 L0 L1 L2 L3 Q: Running time? O(n2) or O(n+m) Why? IRIS H.-R. JIANG ¨ We implement DFS by adjacency list ¨ Recursive procedure ¨ Alternative implementation of DFS ¤ Process each adjacency list in the reverse order DFS(u) 1. mark u as explored and add u to R 2. foreach edge (u, v) incident to u do 3. if (v is not marked as explored) then 4. recursively invoke DFS(v) Implementing DFS Graphs 35 DFS(s) // S: a stack of nodes whose neighbors haven’t been entirely explored 1. S = {s} 2. while (S is not empty) do 3. remove a node u from S 4. if (Explored[u] = false) then 5. Explored[u] = true 6. for each (edge (u, v) incident to u) do 7. S = S + {v} 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 Q: Running time? O(n2) or O(n+m) Why? IRIS H.-R. JIANG Summary: Implementation ¨ Graph: ¨ Graph traversal ¤ BFS: queue (or stack) ¤ DFS: stack ¤ O(n+m) time Graphs 36 Adjacency matrix vs. Adjacency list Winner Faster to find an edge? Matrix Faster to find degree? List Faster to traverse the graph? List Storage for sparse graph? List Storage for dense graph? Matrix Edge insertion or deletion? Matrix Better for most applications? List
  • 37. Application of BFS Testing Bipartiteness 37 Graphs IRIS H.-R. JIANG Bipartite Graphs ¨ A bipartite graph (bigraph) is a graph whose nodes can be partitioned into sets X and Y in such a way that every edge has one one end in X and the other end in Y. ¤ X and Y are two disjoint sets. ¤ No two nodes within the same set are adjacent. Graphs 38 http://mathworld.wolfram.com/BipartiteGraph.html X Y G = (X, Y, E) IRIS H.-R. JIANG Is a Graph Bipartite? ¨ Q: Given a graph G, is it bipartite? ¨ A: Color the nodes with blue and red (two-coloring) ¨ If a graph G is bipartite, then it cannot contain an odd cycle. Graphs 39 2 3 1 5 7 6 4 2 3 1 5 7 6 4 2 3 1 2 3 1 IRIS H.-R. JIANG Testing Bipartiteness ¨ Color the nodes with blue and red ¨ Procedure: 1. Assume G = (V, E) is connected. n Otherwise, we analyze connected components separately. 2. Pick any node sÎV and color it red n Anyway, s must receive some color. 3. Color all the neighbors of s blue. 4. Repeat coloring red/blue until the whole graph is colored. 5. Test bipartiteness: every edge has ends of opposite colors. Graphs 40 2 3 1 5 7 6 4 2 3 1 5 7 6 4 X Y 2 3 1 5 7 3 1 4 Arbitrarily chosen 2 5 7 6 6
  • 38. Application of BFS Testing Bipartiteness 37 Graphs IRIS H.-R. JIANG Bipartite Graphs ¨ A bipartite graph (bigraph) is a graph whose nodes can be partitioned into sets X and Y in such a way that every edge has one one end in X and the other end in Y. ¤ X and Y are two disjoint sets. ¤ No two nodes within the same set are adjacent. Graphs 38 http://mathworld.wolfram.com/BipartiteGraph.html X Y G = (X, Y, E) IRIS H.-R. JIANG Is a Graph Bipartite? ¨ Q: Given a graph G, is it bipartite? ¨ A: Color the nodes with blue and red (two-coloring) ¨ If a graph G is bipartite, then it cannot contain an odd cycle. Graphs 39 2 3 1 5 7 6 4 2 3 1 5 7 6 4 2 3 1 2 3 1 IRIS H.-R. JIANG Testing Bipartiteness ¨ Color the nodes with blue and red ¨ Procedure: 1. Assume G = (V, E) is connected. n Otherwise, we analyze connected components separately. 2. Pick any node sÎV and color it red n Anyway, s must receive some color. 3. Color all the neighbors of s blue. 4. Repeat coloring red/blue until the whole graph is colored. 5. Test bipartiteness: every edge has ends of opposite colors. Graphs 40 2 3 1 5 7 6 4 2 3 1 5 7 6 4 X Y 2 3 1 5 7 3 1 4 Arbitrarily chosen 2 5 7 6 6
  • 39. Application of BFS Testing Bipartiteness 37 Graphs IRIS H.-R. JIANG Bipartite Graphs ¨ A bipartite graph (bigraph) is a graph whose nodes can be partitioned into sets X and Y in such a way that every edge has one one end in X and the other end in Y. ¤ X and Y are two disjoint sets. ¤ No two nodes within the same set are adjacent. Graphs 38 http://mathworld.wolfram.com/BipartiteGraph.html X Y G = (X, Y, E) IRIS H.-R. JIANG Is a Graph Bipartite? ¨ Q: Given a graph G, is it bipartite? ¨ A: Color the nodes with blue and red (two-coloring) ¨ If a graph G is bipartite, then it cannot contain an odd cycle. Graphs 39 2 3 1 5 7 6 4 2 3 1 5 7 6 4 2 3 1 2 3 1 IRIS H.-R. JIANG Testing Bipartiteness ¨ Color the nodes with blue and red ¨ Procedure: 1. Assume G = (V, E) is connected. n Otherwise, we analyze connected components separately. 2. Pick any node sÎV and color it red n Anyway, s must receive some color. 3. Color all the neighbors of s blue. 4. Repeat coloring red/blue until the whole graph is colored. 5. Test bipartiteness: every edge has ends of opposite colors. Graphs 40 2 3 1 5 7 6 4 2 3 1 5 7 6 4 X Y 2 3 1 5 7 3 1 4 Arbitrarily chosen 2 5 7 6 6
  • 40. Application of BFS Testing Bipartiteness 37 Graphs IRIS H.-R. JIANG Bipartite Graphs ¨ A bipartite graph (bigraph) is a graph whose nodes can be partitioned into sets X and Y in such a way that every edge has one one end in X and the other end in Y. ¤ X and Y are two disjoint sets. ¤ No two nodes within the same set are adjacent. Graphs 38 http://mathworld.wolfram.com/BipartiteGraph.html X Y G = (X, Y, E) IRIS H.-R. JIANG Is a Graph Bipartite? ¨ Q: Given a graph G, is it bipartite? ¨ A: Color the nodes with blue and red (two-coloring) ¨ If a graph G is bipartite, then it cannot contain an odd cycle. Graphs 39 2 3 1 5 7 6 4 2 3 1 5 7 6 4 2 3 1 2 3 1 IRIS H.-R. JIANG Testing Bipartiteness ¨ Color the nodes with blue and red ¨ Procedure: 1. Assume G = (V, E) is connected. n Otherwise, we analyze connected components separately. 2. Pick any node sÎV and color it red n Anyway, s must receive some color. 3. Color all the neighbors of s blue. 4. Repeat coloring red/blue until the whole graph is colored. 5. Test bipartiteness: every edge has ends of opposite colors. Graphs 40 2 3 1 5 7 6 4 2 3 1 5 7 6 4 X Y 2 3 1 5 7 3 1 4 Arbitrarily chosen 2 5 7 6 6
  • 41. IRIS H.-R. JIANG Implementation: Testing Bipartiteness ¨ Q: How to implement this procedure? ¨ A: BFS! O(m+n)-time ¤ We perform BFS from any s, coloring s red, all of layer L1 blue, … n Even/odd-numbered layers red/blue n Insert the following statements after line 10 of BFS(s) (p. 34) Graphs 41 2 3 1 5 7 6 4 2 3 1 5 7 6 4 X Y Arbitrarily chosen 2 3 1 5 7 6 4 10. L[i+1] = L[i+1] + {v} 10a. if ((i+1) is even) then 10b. Color[v] = red 10c. else 10d. Color[v] = blue IRIS H.-R. JIANG Proof: Correctness (1/2) ¨ Let G be a connected graph and let L0, L1, … be the layers produced by BFS starting at node s. Then exactly one of the following holds. 1. No edge of G joins two nodes of the same layer, and G is bipartite. 2. An edge of G joins two nodes of the same layer, and G contains an odd-length cycle (and hence is not bipartite). ¨ Pf: Case 1 is trivial. Graphs 42 Let xÎLi, yÎLj, and (x, y) ÎE. Then i and j differ by at most 1. L0 L1 L2 L3 L0 L1 L2 L3 IRIS H.-R. JIANG Proof: Correctness (2/2) ¨ Pf: (Case 2) ¤ Suppose (x, y) is an edge with x, y in same layer Lj. ¤ Let z = lca(x, y) = lowest common ancestor. ¤ Let Li be the layer containing z. ¤ Consider the cycle that takes edge from x to y, then path from y to z, then path from z to x. ¤ Its length is 1 + (j-i) + (j-i), which is odd. Graphs 43 Let xÎLi, yÎLj, and (x, y) ÎE. Then i and j differ by at most 1. z s x y L0 Li Lj (x, y) y ->z z ->x z = lca(x, y) Connectivity in Directed Graphs 44 Graphs 2 3 1 5 7 6 4
  • 42. IRIS H.-R. JIANG Implementation: Testing Bipartiteness ¨ Q: How to implement this procedure? ¨ A: BFS! O(m+n)-time ¤ We perform BFS from any s, coloring s red, all of layer L1 blue, … n Even/odd-numbered layers red/blue n Insert the following statements after line 10 of BFS(s) (p. 34) Graphs 41 2 3 1 5 7 6 4 2 3 1 5 7 6 4 X Y Arbitrarily chosen 2 3 1 5 7 6 4 10. L[i+1] = L[i+1] + {v} 10a. if ((i+1) is even) then 10b. Color[v] = red 10c. else 10d. Color[v] = blue IRIS H.-R. JIANG Proof: Correctness (1/2) ¨ Let G be a connected graph and let L0, L1, … be the layers produced by BFS starting at node s. Then exactly one of the following holds. 1. No edge of G joins two nodes of the same layer, and G is bipartite. 2. An edge of G joins two nodes of the same layer, and G contains an odd-length cycle (and hence is not bipartite). ¨ Pf: Case 1 is trivial. Graphs 42 Let xÎLi, yÎLj, and (x, y) ÎE. Then i and j differ by at most 1. L0 L1 L2 L3 L0 L1 L2 L3 IRIS H.-R. JIANG Proof: Correctness (2/2) ¨ Pf: (Case 2) ¤ Suppose (x, y) is an edge with x, y in same layer Lj. ¤ Let z = lca(x, y) = lowest common ancestor. ¤ Let Li be the layer containing z. ¤ Consider the cycle that takes edge from x to y, then path from y to z, then path from z to x. ¤ Its length is 1 + (j-i) + (j-i), which is odd. Graphs 43 Let xÎLi, yÎLj, and (x, y) ÎE. Then i and j differ by at most 1. z s x y L0 Li Lj (x, y) y ->z z ->x z = lca(x, y) Connectivity in Directed Graphs 44 Graphs 2 3 1 5 7 6 4
  • 43. IRIS H.-R. JIANG Implementation: Testing Bipartiteness ¨ Q: How to implement this procedure? ¨ A: BFS! O(m+n)-time ¤ We perform BFS from any s, coloring s red, all of layer L1 blue, … n Even/odd-numbered layers red/blue n Insert the following statements after line 10 of BFS(s) (p. 34) Graphs 41 2 3 1 5 7 6 4 2 3 1 5 7 6 4 X Y Arbitrarily chosen 2 3 1 5 7 6 4 10. L[i+1] = L[i+1] + {v} 10a. if ((i+1) is even) then 10b. Color[v] = red 10c. else 10d. Color[v] = blue IRIS H.-R. JIANG Proof: Correctness (1/2) ¨ Let G be a connected graph and let L0, L1, … be the layers produced by BFS starting at node s. Then exactly one of the following holds. 1. No edge of G joins two nodes of the same layer, and G is bipartite. 2. An edge of G joins two nodes of the same layer, and G contains an odd-length cycle (and hence is not bipartite). ¨ Pf: Case 1 is trivial. Graphs 42 Let xÎLi, yÎLj, and (x, y) ÎE. Then i and j differ by at most 1. L0 L1 L2 L3 L0 L1 L2 L3 IRIS H.-R. JIANG Proof: Correctness (2/2) ¨ Pf: (Case 2) ¤ Suppose (x, y) is an edge with x, y in same layer Lj. ¤ Let z = lca(x, y) = lowest common ancestor. ¤ Let Li be the layer containing z. ¤ Consider the cycle that takes edge from x to y, then path from y to z, then path from z to x. ¤ Its length is 1 + (j-i) + (j-i), which is odd. Graphs 43 Let xÎLi, yÎLj, and (x, y) ÎE. Then i and j differ by at most 1. z s x y L0 Li Lj (x, y) y ->z z ->x z = lca(x, y) Connectivity in Directed Graphs 44 Graphs 2 3 1 5 7 6 4
  • 44. IRIS H.-R. JIANG Implementation: Testing Bipartiteness ¨ Q: How to implement this procedure? ¨ A: BFS! O(m+n)-time ¤ We perform BFS from any s, coloring s red, all of layer L1 blue, … n Even/odd-numbered layers red/blue n Insert the following statements after line 10 of BFS(s) (p. 34) Graphs 41 2 3 1 5 7 6 4 2 3 1 5 7 6 4 X Y Arbitrarily chosen 2 3 1 5 7 6 4 10. L[i+1] = L[i+1] + {v} 10a. if ((i+1) is even) then 10b. Color[v] = red 10c. else 10d. Color[v] = blue IRIS H.-R. JIANG Proof: Correctness (1/2) ¨ Let G be a connected graph and let L0, L1, … be the layers produced by BFS starting at node s. Then exactly one of the following holds. 1. No edge of G joins two nodes of the same layer, and G is bipartite. 2. An edge of G joins two nodes of the same layer, and G contains an odd-length cycle (and hence is not bipartite). ¨ Pf: Case 1 is trivial. Graphs 42 Let xÎLi, yÎLj, and (x, y) ÎE. Then i and j differ by at most 1. L0 L1 L2 L3 L0 L1 L2 L3 IRIS H.-R. JIANG Proof: Correctness (2/2) ¨ Pf: (Case 2) ¤ Suppose (x, y) is an edge with x, y in same layer Lj. ¤ Let z = lca(x, y) = lowest common ancestor. ¤ Let Li be the layer containing z. ¤ Consider the cycle that takes edge from x to y, then path from y to z, then path from z to x. ¤ Its length is 1 + (j-i) + (j-i), which is odd. Graphs 43 Let xÎLi, yÎLj, and (x, y) ÎE. Then i and j differ by at most 1. z s x y L0 Li Lj (x, y) y ->z z ->x z = lca(x, y) Connectivity in Directed Graphs 44 Graphs 2 3 1 5 7 6 4
  • 45. IRIS H.-R. JIANG Recap: Directed Graphs ¨ In a directed graph: asymmetric relationships ¤ Edges are directed, i.e., (u, v) != (v, u) n e.g., u knows v (celebrity), while v doesn’t know u. n Directionality is crucial. ¨ Representation: Adjacency list ¤ Each node is associated with two lists, instead of one in an undirected graph. n To which n From which ¨ Graph search algorithms: BFS/DFS ¤ Almost the same as undirected graphs n Again, directionality is crucial. n Q: What can we reach from node 1? n A: Graphs 45 u v tail head (u, v) 2 3 1 5 7 6 4 1 5 7 4 6 IRIS H.-R. JIANG Strong Connectivity ¨ Nodes u and v are mutually reachable if there is a path from u to v and also a path from v to u. ¨ A directed graph is strongly connected if every pair of nodes are mutually reachable. ¤ Q: When are there no mutually reachable nodes? ¨ Lemma: If u and v are mutually reachable, and v and w are mutually reachable, then u and w are mutually reachable. ¤ Simple but important! ¨ Pf: Graphs 46 v u v u w v v u w v IRIS H.-R. JIANG Testing Strong Connectivity ¨ Q: Can we determine if a graph is strongly connected in linear time? ¨ A: Yes. How? Why? ¤ Time: O(m+n) ¤ Q: Correctness? ¤ Q: How to partition a directed graph into strong components? Graphs 47 TestSC(G) 1. pick any node s in G 2. R = BFS(s, G) 3. Rrev = BFS(s, Grev) 4. if (R = V = Rrev) then return true else false Grev: reverse the direction of every edge in G (u, v) in Grev if (v, u)in G u s v R = V = Rrev IRIS H.-R. JIANG Strong Component ¨ The strong component containing s in a directed graph is the maximal set of all v s.t. s and v are mutually reachable. ¤ a.k.a. strongly connected component ¨ Theorem: For any two nodes s and t in a directed graph, their strong components are either identical or disjoint. ¤ Q: When are they identical? When are they disjoint? ¨ Pf: ¤ Identical if s and t are mutually reachable n s -- v, s -- t, v -- t ¤ Disjoint if s and t are not mutually reachable n Proof by contradiction Graphs 48
  • 46. IRIS H.-R. JIANG Recap: Directed Graphs ¨ In a directed graph: asymmetric relationships ¤ Edges are directed, i.e., (u, v) != (v, u) n e.g., u knows v (celebrity), while v doesn’t know u. n Directionality is crucial. ¨ Representation: Adjacency list ¤ Each node is associated with two lists, instead of one in an undirected graph. n To which n From which ¨ Graph search algorithms: BFS/DFS ¤ Almost the same as undirected graphs n Again, directionality is crucial. n Q: What can we reach from node 1? n A: Graphs 45 u v tail head (u, v) 2 3 1 5 7 6 4 1 5 7 4 6 IRIS H.-R. JIANG Strong Connectivity ¨ Nodes u and v are mutually reachable if there is a path from u to v and also a path from v to u. ¨ A directed graph is strongly connected if every pair of nodes are mutually reachable. ¤ Q: When are there no mutually reachable nodes? ¨ Lemma: If u and v are mutually reachable, and v and w are mutually reachable, then u and w are mutually reachable. ¤ Simple but important! ¨ Pf: Graphs 46 v u v u w v v u w v IRIS H.-R. JIANG Testing Strong Connectivity ¨ Q: Can we determine if a graph is strongly connected in linear time? ¨ A: Yes. How? Why? ¤ Time: O(m+n) ¤ Q: Correctness? ¤ Q: How to partition a directed graph into strong components? Graphs 47 TestSC(G) 1. pick any node s in G 2. R = BFS(s, G) 3. Rrev = BFS(s, Grev) 4. if (R = V = Rrev) then return true else false Grev: reverse the direction of every edge in G (u, v) in Grev if (v, u)in G u s v R = V = Rrev IRIS H.-R. JIANG Strong Component ¨ The strong component containing s in a directed graph is the maximal set of all v s.t. s and v are mutually reachable. ¤ a.k.a. strongly connected component ¨ Theorem: For any two nodes s and t in a directed graph, their strong components are either identical or disjoint. ¤ Q: When are they identical? When are they disjoint? ¨ Pf: ¤ Identical if s and t are mutually reachable n s -- v, s -- t, v -- t ¤ Disjoint if s and t are not mutually reachable n Proof by contradiction Graphs 48
  • 47. IRIS H.-R. JIANG Recap: Directed Graphs ¨ In a directed graph: asymmetric relationships ¤ Edges are directed, i.e., (u, v) != (v, u) n e.g., u knows v (celebrity), while v doesn’t know u. n Directionality is crucial. ¨ Representation: Adjacency list ¤ Each node is associated with two lists, instead of one in an undirected graph. n To which n From which ¨ Graph search algorithms: BFS/DFS ¤ Almost the same as undirected graphs n Again, directionality is crucial. n Q: What can we reach from node 1? n A: Graphs 45 u v tail head (u, v) 2 3 1 5 7 6 4 1 5 7 4 6 IRIS H.-R. JIANG Strong Connectivity ¨ Nodes u and v are mutually reachable if there is a path from u to v and also a path from v to u. ¨ A directed graph is strongly connected if every pair of nodes are mutually reachable. ¤ Q: When are there no mutually reachable nodes? ¨ Lemma: If u and v are mutually reachable, and v and w are mutually reachable, then u and w are mutually reachable. ¤ Simple but important! ¨ Pf: Graphs 46 v u v u w v v u w v IRIS H.-R. JIANG Testing Strong Connectivity ¨ Q: Can we determine if a graph is strongly connected in linear time? ¨ A: Yes. How? Why? ¤ Time: O(m+n) ¤ Q: Correctness? ¤ Q: How to partition a directed graph into strong components? Graphs 47 TestSC(G) 1. pick any node s in G 2. R = BFS(s, G) 3. Rrev = BFS(s, Grev) 4. if (R = V = Rrev) then return true else false Grev: reverse the direction of every edge in G (u, v) in Grev if (v, u)in G u s v R = V = Rrev IRIS H.-R. JIANG Strong Component ¨ The strong component containing s in a directed graph is the maximal set of all v s.t. s and v are mutually reachable. ¤ a.k.a. strongly connected component ¨ Theorem: For any two nodes s and t in a directed graph, their strong components are either identical or disjoint. ¤ Q: When are they identical? When are they disjoint? ¨ Pf: ¤ Identical if s and t are mutually reachable n s -- v, s -- t, v -- t ¤ Disjoint if s and t are not mutually reachable n Proof by contradiction Graphs 48
  • 48. IRIS H.-R. JIANG Recap: Directed Graphs ¨ In a directed graph: asymmetric relationships ¤ Edges are directed, i.e., (u, v) != (v, u) n e.g., u knows v (celebrity), while v doesn’t know u. n Directionality is crucial. ¨ Representation: Adjacency list ¤ Each node is associated with two lists, instead of one in an undirected graph. n To which n From which ¨ Graph search algorithms: BFS/DFS ¤ Almost the same as undirected graphs n Again, directionality is crucial. n Q: What can we reach from node 1? n A: Graphs 45 u v tail head (u, v) 2 3 1 5 7 6 4 1 5 7 4 6 IRIS H.-R. JIANG Strong Connectivity ¨ Nodes u and v are mutually reachable if there is a path from u to v and also a path from v to u. ¨ A directed graph is strongly connected if every pair of nodes are mutually reachable. ¤ Q: When are there no mutually reachable nodes? ¨ Lemma: If u and v are mutually reachable, and v and w are mutually reachable, then u and w are mutually reachable. ¤ Simple but important! ¨ Pf: Graphs 46 v u v u w v v u w v IRIS H.-R. JIANG Testing Strong Connectivity ¨ Q: Can we determine if a graph is strongly connected in linear time? ¨ A: Yes. How? Why? ¤ Time: O(m+n) ¤ Q: Correctness? ¤ Q: How to partition a directed graph into strong components? Graphs 47 TestSC(G) 1. pick any node s in G 2. R = BFS(s, G) 3. Rrev = BFS(s, Grev) 4. if (R = V = Rrev) then return true else false Grev: reverse the direction of every edge in G (u, v) in Grev if (v, u)in G u s v R = V = Rrev IRIS H.-R. JIANG Strong Component ¨ The strong component containing s in a directed graph is the maximal set of all v s.t. s and v are mutually reachable. ¤ a.k.a. strongly connected component ¨ Theorem: For any two nodes s and t in a directed graph, their strong components are either identical or disjoint. ¤ Q: When are they identical? When are they disjoint? ¨ Pf: ¤ Identical if s and t are mutually reachable n s -- v, s -- t, v -- t ¤ Disjoint if s and t are not mutually reachable n Proof by contradiction Graphs 48
  • 49. DAGs and Topological Ordering 49 Graphs 2 3 1 5 7 6 4 IRIS H.-R. JIANG Directed Acyclic Graphs ¨ Q: If an undirected graph has no cycles, then what’s it? ¨ A: A tree (or forest). ¤ At most n-1 edges. ¨ A directed acyclic graph (DAG) is a directed graph without cycles. ¤ A DAG may have a rich structure. ¤ A DAG encodes dependency or precedence constraints n e.g., prerequisite of Algorithms: n Data structures n Discrete math n Programming C/C++ n e.g., execution order of instructions in CPU n Pipeline structures Graphs 50 2 3 1 5 7 6 4 IRIS H.-R. JIANG Topological Ordering ¨ Q: 4 drivers come to the junction simultaneously, who goes first? ¤ Deadlock! Dependencies form a cycle! ¨ Given a directed graph G, a topological ordering is an ordering of its nodes as v1, v2, …, vn so that for every edge (vi, vj), we have i<j. ¤ Precedence constraints: edge (vi, vj) means vi must precede vj. ¨ Lemma: If G has a topological ordering, then G is a DAG. ¨ Pf: Proof by contradiction! ¤ How? Consider a cycle, vi, …, vj, vi. Graphs 51 The driver must come to a complete stop at a stop sign. Generally the driver who arrives and stops first continues first. If two or three drivers in different directions stop simultaneously at a junction controlled by stop signs, generally the drivers on the left must yield the right-of-way to the driver on the far right. vj vi IRIS H.-R. JIANG Example ¨ Example: ¨ Lemma: If G has a topological ordering, then G is a DAG. ¨ Q: If G is a DAG, then does G have a topological ordering? ¨ Q: If so, how do we compute one? ¨ A: Key: find a way to get started! ¤ Q: How? Graphs 52 a DAG 2 3 1 5 7 6 4 the same DAG with topological ordering 2 3 1 5 7 6 4
  • 50. DAGs and Topological Ordering 49 Graphs 2 3 1 5 7 6 4 IRIS H.-R. JIANG Directed Acyclic Graphs ¨ Q: If an undirected graph has no cycles, then what’s it? ¨ A: A tree (or forest). ¤ At most n-1 edges. ¨ A directed acyclic graph (DAG) is a directed graph without cycles. ¤ A DAG may have a rich structure. ¤ A DAG encodes dependency or precedence constraints n e.g., prerequisite of Algorithms: n Data structures n Discrete math n Programming C/C++ n e.g., execution order of instructions in CPU n Pipeline structures Graphs 50 2 3 1 5 7 6 4 IRIS H.-R. JIANG Topological Ordering ¨ Q: 4 drivers come to the junction simultaneously, who goes first? ¤ Deadlock! Dependencies form a cycle! ¨ Given a directed graph G, a topological ordering is an ordering of its nodes as v1, v2, …, vn so that for every edge (vi, vj), we have i<j. ¤ Precedence constraints: edge (vi, vj) means vi must precede vj. ¨ Lemma: If G has a topological ordering, then G is a DAG. ¨ Pf: Proof by contradiction! ¤ How? Consider a cycle, vi, …, vj, vi. Graphs 51 The driver must come to a complete stop at a stop sign. Generally the driver who arrives and stops first continues first. If two or three drivers in different directions stop simultaneously at a junction controlled by stop signs, generally the drivers on the left must yield the right-of-way to the driver on the far right. vj vi IRIS H.-R. JIANG Example ¨ Example: ¨ Lemma: If G has a topological ordering, then G is a DAG. ¨ Q: If G is a DAG, then does G have a topological ordering? ¨ Q: If so, how do we compute one? ¨ A: Key: find a way to get started! ¤ Q: How? Graphs 52 a DAG 2 3 1 5 7 6 4 the same DAG with topological ordering 2 3 1 5 7 6 4
  • 51. DAGs and Topological Ordering 49 Graphs 2 3 1 5 7 6 4 IRIS H.-R. JIANG Directed Acyclic Graphs ¨ Q: If an undirected graph has no cycles, then what’s it? ¨ A: A tree (or forest). ¤ At most n-1 edges. ¨ A directed acyclic graph (DAG) is a directed graph without cycles. ¤ A DAG may have a rich structure. ¤ A DAG encodes dependency or precedence constraints n e.g., prerequisite of Algorithms: n Data structures n Discrete math n Programming C/C++ n e.g., execution order of instructions in CPU n Pipeline structures Graphs 50 2 3 1 5 7 6 4 IRIS H.-R. JIANG Topological Ordering ¨ Q: 4 drivers come to the junction simultaneously, who goes first? ¤ Deadlock! Dependencies form a cycle! ¨ Given a directed graph G, a topological ordering is an ordering of its nodes as v1, v2, …, vn so that for every edge (vi, vj), we have i<j. ¤ Precedence constraints: edge (vi, vj) means vi must precede vj. ¨ Lemma: If G has a topological ordering, then G is a DAG. ¨ Pf: Proof by contradiction! ¤ How? Consider a cycle, vi, …, vj, vi. Graphs 51 The driver must come to a complete stop at a stop sign. Generally the driver who arrives and stops first continues first. If two or three drivers in different directions stop simultaneously at a junction controlled by stop signs, generally the drivers on the left must yield the right-of-way to the driver on the far right. vj vi IRIS H.-R. JIANG Example ¨ Example: ¨ Lemma: If G has a topological ordering, then G is a DAG. ¨ Q: If G is a DAG, then does G have a topological ordering? ¨ Q: If so, how do we compute one? ¨ A: Key: find a way to get started! ¤ Q: How? Graphs 52 a DAG 2 3 1 5 7 6 4 the same DAG with topological ordering 2 3 1 5 7 6 4
  • 52. DAGs and Topological Ordering 49 Graphs 2 3 1 5 7 6 4 IRIS H.-R. JIANG Directed Acyclic Graphs ¨ Q: If an undirected graph has no cycles, then what’s it? ¨ A: A tree (or forest). ¤ At most n-1 edges. ¨ A directed acyclic graph (DAG) is a directed graph without cycles. ¤ A DAG may have a rich structure. ¤ A DAG encodes dependency or precedence constraints n e.g., prerequisite of Algorithms: n Data structures n Discrete math n Programming C/C++ n e.g., execution order of instructions in CPU n Pipeline structures Graphs 50 2 3 1 5 7 6 4 IRIS H.-R. JIANG Topological Ordering ¨ Q: 4 drivers come to the junction simultaneously, who goes first? ¤ Deadlock! Dependencies form a cycle! ¨ Given a directed graph G, a topological ordering is an ordering of its nodes as v1, v2, …, vn so that for every edge (vi, vj), we have i<j. ¤ Precedence constraints: edge (vi, vj) means vi must precede vj. ¨ Lemma: If G has a topological ordering, then G is a DAG. ¨ Pf: Proof by contradiction! ¤ How? Consider a cycle, vi, …, vj, vi. Graphs 51 The driver must come to a complete stop at a stop sign. Generally the driver who arrives and stops first continues first. If two or three drivers in different directions stop simultaneously at a junction controlled by stop signs, generally the drivers on the left must yield the right-of-way to the driver on the far right. vj vi IRIS H.-R. JIANG Example ¨ Example: ¨ Lemma: If G has a topological ordering, then G is a DAG. ¨ Q: If G is a DAG, then does G have a topological ordering? ¨ Q: If so, how do we compute one? ¨ A: Key: find a way to get started! ¤ Q: How? Graphs 52 a DAG 2 3 1 5 7 6 4 the same DAG with topological ordering 2 3 1 5 7 6 4
  • 53. IRIS H.-R. JIANG Where to Start? ¨ A: A node that depends on no one, i.e., unconstrained. ¨ Lemma: In every DAG G, there is a node with no incoming edges. ¨ Pf: Proof by contradiction! ¤ Suppose that G is a DAG where every node has at least one incoming edge. Let's see how to find a cycle in G. ¤ Pick any node v, and begin following edges backward from v: Since v has at least one incoming edge (u, v) we can walk backward to u. ¤ Then, since u has at least one incoming edge (x, u), we can walk backward to x; and so on. ¤ Repeat this process n+1 times (the initial v counts one). We will visit some node w twice, since G has only n nodes. ¤ Let C denote the sequence of nodes encountered between successive visits to w. Clearly, C is a cycle. ®¬ Graphs 53 w x v u w IRIS H.-R. JIANG 2 3 1 5 7 6 4 Example: Topological Ordering Graphs 54 1 2 1 2 3 1 2 3 1 4 2 3 1 5 4 2 3 1 5 6 4 2 3 1 5 7 6 4 2 3 1 5 7 6 4 IRIS H.-R. JIANG Topological Ordering ¨ Lemma: If G is a DAG, then G has a topological ordering. ¨ Pf: Proof by induction! 1. Base case: true if n = 1. 2. Inductive step: n Induction hypothesis: true for DAGs with up to n nodes n Given a DAG on n+1 nodes, find a node v w/o incoming edges. n G – {v} is a DAG, since deleting v cannot create any cycles. n G – {v} has n nodes. By induction hypothesis, G – {v} has a topological ordering. n Place v first in topological ordering. This is safe since all edges of v point forward. n Then append nodes of G – {v} in topological order after v. Graphs 55 G – {v} v v + <v1, v2, …, vn> = <v, v1, v2, …, vn> IRIS H.-R. JIANG A Linear-Time Algorithm ¨ In fact, the proof has already suggested an algorithm. ¨ Time: From O(n2) to O(m+n) ¤ O(n2)-time: Total n iterations; line 1 in O(n)-time. How? ¤ O(m+n)-time: How? Maintain the following information n indeg(w) = # of incoming edges from undeleted nodes n S = set of nodes without incoming edges from undeleted nodes ¤ Initialization: O(m+n) via single scan through graph ¤ Update: line 3 deletes v n Remove v from S n Decrement indeg(w) for all edges from v to w, and add w to S if indeg(w) hits 0; this is O(1) per edge Graphs 56 TopologicalOrder(G) 1. find a node v without incoming edges 2. order v 3. G = G – {v} // delete v from G 4. if (G is not empty) then TopologicalOrder(G)
  • 54. IRIS H.-R. JIANG Where to Start? ¨ A: A node that depends on no one, i.e., unconstrained. ¨ Lemma: In every DAG G, there is a node with no incoming edges. ¨ Pf: Proof by contradiction! ¤ Suppose that G is a DAG where every node has at least one incoming edge. Let's see how to find a cycle in G. ¤ Pick any node v, and begin following edges backward from v: Since v has at least one incoming edge (u, v) we can walk backward to u. ¤ Then, since u has at least one incoming edge (x, u), we can walk backward to x; and so on. ¤ Repeat this process n+1 times (the initial v counts one). We will visit some node w twice, since G has only n nodes. ¤ Let C denote the sequence of nodes encountered between successive visits to w. Clearly, C is a cycle. ®¬ Graphs 53 w x v u w IRIS H.-R. JIANG 2 3 1 5 7 6 4 Example: Topological Ordering Graphs 54 1 2 1 2 3 1 2 3 1 4 2 3 1 5 4 2 3 1 5 6 4 2 3 1 5 7 6 4 2 3 1 5 7 6 4 IRIS H.-R. JIANG Topological Ordering ¨ Lemma: If G is a DAG, then G has a topological ordering. ¨ Pf: Proof by induction! 1. Base case: true if n = 1. 2. Inductive step: n Induction hypothesis: true for DAGs with up to n nodes n Given a DAG on n+1 nodes, find a node v w/o incoming edges. n G – {v} is a DAG, since deleting v cannot create any cycles. n G – {v} has n nodes. By induction hypothesis, G – {v} has a topological ordering. n Place v first in topological ordering. This is safe since all edges of v point forward. n Then append nodes of G – {v} in topological order after v. Graphs 55 G – {v} v v + <v1, v2, …, vn> = <v, v1, v2, …, vn> IRIS H.-R. JIANG A Linear-Time Algorithm ¨ In fact, the proof has already suggested an algorithm. ¨ Time: From O(n2) to O(m+n) ¤ O(n2)-time: Total n iterations; line 1 in O(n)-time. How? ¤ O(m+n)-time: How? Maintain the following information n indeg(w) = # of incoming edges from undeleted nodes n S = set of nodes without incoming edges from undeleted nodes ¤ Initialization: O(m+n) via single scan through graph ¤ Update: line 3 deletes v n Remove v from S n Decrement indeg(w) for all edges from v to w, and add w to S if indeg(w) hits 0; this is O(1) per edge Graphs 56 TopologicalOrder(G) 1. find a node v without incoming edges 2. order v 3. G = G – {v} // delete v from G 4. if (G is not empty) then TopologicalOrder(G)
  • 55. IRIS H.-R. JIANG Where to Start? ¨ A: A node that depends on no one, i.e., unconstrained. ¨ Lemma: In every DAG G, there is a node with no incoming edges. ¨ Pf: Proof by contradiction! ¤ Suppose that G is a DAG where every node has at least one incoming edge. Let's see how to find a cycle in G. ¤ Pick any node v, and begin following edges backward from v: Since v has at least one incoming edge (u, v) we can walk backward to u. ¤ Then, since u has at least one incoming edge (x, u), we can walk backward to x; and so on. ¤ Repeat this process n+1 times (the initial v counts one). We will visit some node w twice, since G has only n nodes. ¤ Let C denote the sequence of nodes encountered between successive visits to w. Clearly, C is a cycle. ®¬ Graphs 53 w x v u w IRIS H.-R. JIANG 2 3 1 5 7 6 4 Example: Topological Ordering Graphs 54 1 2 1 2 3 1 2 3 1 4 2 3 1 5 4 2 3 1 5 6 4 2 3 1 5 7 6 4 2 3 1 5 7 6 4 IRIS H.-R. JIANG Topological Ordering ¨ Lemma: If G is a DAG, then G has a topological ordering. ¨ Pf: Proof by induction! 1. Base case: true if n = 1. 2. Inductive step: n Induction hypothesis: true for DAGs with up to n nodes n Given a DAG on n+1 nodes, find a node v w/o incoming edges. n G – {v} is a DAG, since deleting v cannot create any cycles. n G – {v} has n nodes. By induction hypothesis, G – {v} has a topological ordering. n Place v first in topological ordering. This is safe since all edges of v point forward. n Then append nodes of G – {v} in topological order after v. Graphs 55 G – {v} v v + <v1, v2, …, vn> = <v, v1, v2, …, vn> IRIS H.-R. JIANG A Linear-Time Algorithm ¨ In fact, the proof has already suggested an algorithm. ¨ Time: From O(n2) to O(m+n) ¤ O(n2)-time: Total n iterations; line 1 in O(n)-time. How? ¤ O(m+n)-time: How? Maintain the following information n indeg(w) = # of incoming edges from undeleted nodes n S = set of nodes without incoming edges from undeleted nodes ¤ Initialization: O(m+n) via single scan through graph ¤ Update: line 3 deletes v n Remove v from S n Decrement indeg(w) for all edges from v to w, and add w to S if indeg(w) hits 0; this is O(1) per edge Graphs 56 TopologicalOrder(G) 1. find a node v without incoming edges 2. order v 3. G = G – {v} // delete v from G 4. if (G is not empty) then TopologicalOrder(G)
  • 56. IRIS H.-R. JIANG Where to Start? ¨ A: A node that depends on no one, i.e., unconstrained. ¨ Lemma: In every DAG G, there is a node with no incoming edges. ¨ Pf: Proof by contradiction! ¤ Suppose that G is a DAG where every node has at least one incoming edge. Let's see how to find a cycle in G. ¤ Pick any node v, and begin following edges backward from v: Since v has at least one incoming edge (u, v) we can walk backward to u. ¤ Then, since u has at least one incoming edge (x, u), we can walk backward to x; and so on. ¤ Repeat this process n+1 times (the initial v counts one). We will visit some node w twice, since G has only n nodes. ¤ Let C denote the sequence of nodes encountered between successive visits to w. Clearly, C is a cycle. ®¬ Graphs 53 w x v u w IRIS H.-R. JIANG 2 3 1 5 7 6 4 Example: Topological Ordering Graphs 54 1 2 1 2 3 1 2 3 1 4 2 3 1 5 4 2 3 1 5 6 4 2 3 1 5 7 6 4 2 3 1 5 7 6 4 IRIS H.-R. JIANG Topological Ordering ¨ Lemma: If G is a DAG, then G has a topological ordering. ¨ Pf: Proof by induction! 1. Base case: true if n = 1. 2. Inductive step: n Induction hypothesis: true for DAGs with up to n nodes n Given a DAG on n+1 nodes, find a node v w/o incoming edges. n G – {v} is a DAG, since deleting v cannot create any cycles. n G – {v} has n nodes. By induction hypothesis, G – {v} has a topological ordering. n Place v first in topological ordering. This is safe since all edges of v point forward. n Then append nodes of G – {v} in topological order after v. Graphs 55 G – {v} v v + <v1, v2, …, vn> = <v, v1, v2, …, vn> IRIS H.-R. JIANG A Linear-Time Algorithm ¨ In fact, the proof has already suggested an algorithm. ¨ Time: From O(n2) to O(m+n) ¤ O(n2)-time: Total n iterations; line 1 in O(n)-time. How? ¤ O(m+n)-time: How? Maintain the following information n indeg(w) = # of incoming edges from undeleted nodes n S = set of nodes without incoming edges from undeleted nodes ¤ Initialization: O(m+n) via single scan through graph ¤ Update: line 3 deletes v n Remove v from S n Decrement indeg(w) for all edges from v to w, and add w to S if indeg(w) hits 0; this is O(1) per edge Graphs 56 TopologicalOrder(G) 1. find a node v without incoming edges 2. order v 3. G = G – {v} // delete v from G 4. if (G is not empty) then TopologicalOrder(G)