Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study...
Transcript of Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study...
![Page 1: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/1.jpg)
Introduction to Graphs
Tecniche di Programmazione – A.A. 2015/2016
![Page 2: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/2.jpg)
Summary
A.A. 2012/2013Tecniche di programmazione2
Definition: Graph
Related Definitions
Applications
Graph representation
Graph visits
![Page 3: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/3.jpg)
Definition: Graph
Introduction to Graphs
![Page 4: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/4.jpg)
Definition: Graph
A.A. 2012/2013Tecniche di programmazione4
A graph is a collection of points and lines connecting
some (possibly empty) subset of them.
The points of a graph are most commonly known
as graph vertices, but may also be called “nodes” or
simply “points.”
The lines connecting the vertices of a graph are most
commonly known as graph edges, but may also be called
“arcs” or “lines.”
http://mathworld.wolfram.com/
![Page 5: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/5.jpg)
What's in a name?
A.A. 2012/2013Tecniche di programmazione5
http://spikedmath.com/382.html
![Page 6: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/6.jpg)
Big warning: Graph ≠ Graph ≠ Graph
Graph (plot)
(italiano: grafico)
Graph (maths)
(italiano: grafo)
A.A. 2012/2013Tecniche di programmazione6
≠
Graph (chart)
(italiano: grafico)
![Page 7: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/7.jpg)
History
A.A. 2012/2013Tecniche di programmazione7
The study of graphs is known as graph theory, and was
first systematically investigated by D. König in the 1930s
Euler’s proof about the walk across all seven bridges of
Königsberg (1736), now known as the Königsberg bridge
problem, is a famous precursor to graph theory.
In fact, the study of various sorts of paths in graphs has
many applications in real-world problems.
![Page 8: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/8.jpg)
Königsberg Bridge Problem
A.A. 2012/2013Tecniche di programmazione8
Can the 7 bridges the of
the city of Königsberg
over the river Preger all
be traversed in a single
trip without doubling back,
with the additional
requirement that the trip
ends in the same place it
began?
Today: Kaliningrad, Russia
![Page 9: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/9.jpg)
Königsberg Bridge Problem
A.A. 2012/2013Tecniche di programmazione9
Can the 7 bridges the of
the city of Königsberg
over the river Preger all
be traversed in a single
trip without doubling back,
with the additional
requirement that the trip
ends in the same place it
began?
Today: Kaliningrad, Russia
![Page 10: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/10.jpg)
Unless…
A.A. 2012/2013Tecniche di programmazione10
http://spikedmath.com/541.html
![Page 11: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/11.jpg)
Types of graphs: edge cardinality
A.A. 2012/2013Tecniche di programmazione11
Simple graph:
At most one edge (i.e., either one edge or no edges) may connect any two vertices
Multigraph:
Multiple edges are allowed between vertices
Loops:
Edge between a vertex and itself
Pseudograph:
Multigraph with loops
loop
![Page 12: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/12.jpg)
Types of graphs: edge direction
A.A. 2012/2013Tecniche di programmazione12
Undirected
Oriented
Edges have one direction
(indicated by arrow)
Directed
Edges may have one or
two directions
Network
Oriented graph with
weighted edges
![Page 13: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/13.jpg)
Types of graphs: labeling
A.A. 2012/2013Tecniche di programmazione13
Labels
None
On Vertices
On Edges
Groups (=colors)
Of Vertices
no edge connects two identically colored vertices
Of Edges
adjacent edges must receive different colors
Of both
![Page 14: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/14.jpg)
A.A. 2012/2013Tecniche di programmazione14
Directed and Oriented graphs
A Directed Graph (di-graph) G is a pair (V,E), where
V is a (finite) set of vertices
E is a (finite) set of edges, that identify a binary relationship
over V
𝐸 ⊆ 𝑉 × 𝑉
![Page 15: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/15.jpg)
A.A. 2012/2013Tecniche di programmazione15
Example
4
1
5 6
2 3
![Page 16: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/16.jpg)
A.A. 2012/2013Tecniche di programmazione16
Example
4
1
5 6
2 3
Loop
![Page 17: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/17.jpg)
A.A. 2012/2013Tecniche di programmazione17
Example
4
1
5 6
2 3
V={1,2,3,4,5,6}
E={(1,2), (2,2), (2,5),
(5,4), (4,5), (4,1),
(2,4), (6,3)}
![Page 18: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/18.jpg)
A.A. 2012/2013Tecniche di programmazione18
Undirected graph
Ad Undirected Graph is still represented as a couple
G=(V,E), but the set E is made of non-ordered pairs of
vertices
![Page 19: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/19.jpg)
A.A. 2012/2013Tecniche di programmazione19
Example
4
1
5 6
2 3
V={1,2,3,4,5,6}
E={(1,2), (2,5), (5,1), (6,3)}
![Page 20: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/20.jpg)
A.A. 2012/2013Tecniche di programmazione20
Example
4
1
5 6
2 3
V={1,2,3,4,5,6}
E={(1,2), (2,5), (5,1), (6,3)}
Edge (1,5) adjacent
(or incident) to
vertices 1 and 5
Vertex 5 is adjacent
to vertices 1 and 2
Vertex 4 is isolated
![Page 21: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/21.jpg)
Related Definitions
Introduction to Graphs
![Page 22: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/22.jpg)
A.A. 2012/2013Tecniche di programmazione22
Degree
In an undirected graph,
the degree of a vertex is the number of incident edges
In a directed graph
The in-degree is the number of incoming edges
The out-degree is the number of departing edges
The degree is the sum of in-degree and out-degree
A vertex with degree 0 is isolated
![Page 23: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/23.jpg)
A.A. 2012/2013Tecniche di programmazione23
Degree
4
1
5 6
2 3
2 2
20 1
1
![Page 24: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/24.jpg)
A.A. 2012/2013Tecniche di programmazione24
Degree
4
1
5 6
2 3
In: 1
Out: 1
In: 2
Out: 2
In: 1 or 2
Out: 2 or 3
In: 2
Out: 1
In: 1
Out: 0
In: 0
Out: 1
![Page 25: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/25.jpg)
Paths
A.A. 2012/2013Tecniche di programmazione25
A path on a graph G=(V,E) also called a trail, is
a sequence {v1, v2, …, vn} such that:
v1, …, vn are vertices: vi V
(v1, v2), (v2, v3), ..., (vn-1,vn) are graph edges: (vi-1,vi) E
vi are distinct (for “simple” paths).
The length of a path is the number of edges (n-1)
If there exist a path between vA and vB we say that vB is
reachable from vA
![Page 26: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/26.jpg)
A.A. 2012/2013Tecniche di programmazione26
Example
4
1
5 6
2 3
Path = { 1, 2, 5 }
Length = 2
![Page 27: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/27.jpg)
A.A. 2012/2013Tecniche di programmazione27
Cycles
A cycle is a path where v1 = vn
A graph with no cycles is said acyclic
![Page 28: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/28.jpg)
A.A. 2012/2013Tecniche di programmazione28
Example
4
1
5 6
2 3
Path = { 1, 2, 5, 1 }
Length = 3
![Page 29: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/29.jpg)
A.A. 2012/2013Tecniche di programmazione29
Reachability (Undirected)
An undirected graph is connected if, for every couple of
vertices, there is a path connecting them
The connected sub-graph of maximum size are called
connected components
A connected graph has exactly one connected
component
![Page 30: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/30.jpg)
A.A. 2012/2013Tecniche di programmazione30
Connected components
4
1
5 6
2 3
The graph is not
connected.
Connected components =
3
{ 4 } , { 1, 2, 5 }, { 3, 6 }
![Page 31: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/31.jpg)
A.A. 2012/2013Tecniche di programmazione31
Reachability (Directed)
A directed graph is strongly connected if, for every
ordered pair of vertices (v, v’), there exists at least one
path connecting v to v’
![Page 32: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/32.jpg)
A.A. 2012/2013Tecniche di programmazione32
Example
4
1
5
2
The graph is strongly
connected
![Page 33: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/33.jpg)
A.A. 2012/2013Tecniche di programmazione33
Example
4
1
5
2
The graph is not strongly
connected
![Page 34: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/34.jpg)
Complete graph
A.A. 2012/2013Tecniche di programmazione34
A graph is complete if, for every pair of vertices, there is
an edge connecting them (they are adjacent)
Symbol: Kn
![Page 35: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/35.jpg)
A.A. 2012/2013Tecniche di programmazione35
Complete graph: edges
In a complete graph with n vertices, the number of
edges is
n(n-1), if the graph is directed
n(n-1)/2, if the graph is undirected
If self-loops are allowed, then
n2 for directed graphs
n(n-1) for undirected graphs
![Page 36: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/36.jpg)
Density
A.A. 2012/2013Tecniche di programmazione36
The density of a graph G=(V,E) is the ratio of the number
of edges to the total number of edges
𝑑 =𝐸 𝐺
𝐸 𝐾 𝑉(𝐺)
![Page 37: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/37.jpg)
A.A. 2012/2013Tecniche di programmazione37
Esempio
4
1
3
2
Density = 0.5
Existing: 3 edges
Total: 6 possible edges
![Page 38: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/38.jpg)
A.A. 2012/2013Tecniche di programmazione38
Trees and Forests
An undirected acyclic graph is called forest
An undirected acyclic connected graph is called tree
![Page 39: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/39.jpg)
A.A. 2012/2013Tecniche di programmazione39
ExampleTree
![Page 40: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/40.jpg)
A.A. 2012/2013Tecniche di programmazione40
ExampleForest
![Page 41: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/41.jpg)
A.A. 2012/2013Tecniche di programmazione41
Example This is not a tree nor a
forest
(it contains a cycle)
![Page 42: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/42.jpg)
Rooted trees
A.A. 2012/2013Tecniche di programmazione42
In a tree, a special node may be singled out
This node is called the “root” of the tree
Any node of a tree can be the root
![Page 43: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/43.jpg)
Tree (implicit) ordering
A.A. 2012/2013Tecniche di programmazione43
The root node of a tree induces an ordering of the
nodes
The root is the “ancestor” of all other nodes/vertices
“children” are “away from the root”
“parents” are “towards the root”
The root is the only node without parents
All other nodes have exactly one parent
The furthermost (children-of-children-of-children…)
nodes are “leaves”
![Page 44: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/44.jpg)
A.A. 2012/2013Tecniche di programmazione44
ExampleRooted Tree
![Page 45: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/45.jpg)
A.A. 2012/2013Tecniche di programmazione45
ExampleRooted Tree
![Page 46: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/46.jpg)
A.A. 2012/2013Tecniche di programmazione46
Weighted graphs
A weighted graph is a graph in which each branch (edge)
is given a numerical weight.
A weighted graph is therefore a special type of labeled
graph in which the labels are numbers (which are usually
taken to be positive).
![Page 47: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/47.jpg)
Applications
Introduction to Graphs
![Page 48: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/48.jpg)
Graph applications
A.A. 2012/2013Tecniche di programmazione48
Graphs are everywhere
Facebook friends (and posts, and ‘likes’)
Football tournaments (complete subgraphs + binary tree)
Google search index (V=page, E=link, w=pagerank)
Web analytics (site structure, visitor paths)
Car navigation (GPS)
Market Matching
![Page 49: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/49.jpg)
Market matching
A.A. 2012/2013Tecniche di programmazione49
H = Houses (1, 2, 3, 4)
B = Buyers (a, b, c, d)
V = H B
Edges: (h, b) E if b would like to buy h
Problem: can all houses be sold and all
buyers be satisfied?
Variant: if the graph is weighted with a
purchase offer, what is the most
convenient solution?
Variant: consider a ‘penalty’ for unsold
items
This graph is called
“bipartite”:
H B =
![Page 50: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/50.jpg)
Connecting cities
A.A. 2012/2013Tecniche di programmazione50
We have a water reservoir
We need to serve many cities
Directly or indirectly
What is the most efficient set of inter-city water
connections?
Also for telephony,
gas, electricity, …
We are searching for
the “minimum
spanning tree”
![Page 51: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/51.jpg)
Google Analytics (Visitors Flow)
A.A. 2012/2013Tecniche di programmazione51
![Page 52: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/52.jpg)
Customer behavior
A.A. 2012/2013Tecniche di programmazione52
User actions encoded
as frequencies
![Page 53: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/53.jpg)
Street navigation
A.A. 2012/2013Tecniche di programmazione53
We must find a
“Hamiltonian cycle”
TSP: The traveling
salesman problem
![Page 54: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/54.jpg)
Train maps
A.A. 2012/2013Tecniche di programmazione54
![Page 55: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/55.jpg)
Chemistry (Protein folding)
A.A. 2012/2013Tecniche di programmazione55
![Page 56: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/56.jpg)
Facebook friends
A.A. 2012/2013Tecniche di programmazione56
![Page 57: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/57.jpg)
A.A. 2012/2013Tecniche di programmazione57
Flow chart
BEGIN
END
![Page 58: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/58.jpg)
Graph representation
Representing and visiting graphs
![Page 59: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/59.jpg)
Representing graphs
List structures Matrix structures
A.A. 2013/2014Tecniche di programmazione59
Adjacency list Each vertex has a list of which
vertices it is adjacent to.
For undirected graphs, information is duplicated
Incidence list Each vertex has a list of ‘edge’
objects
Edges are represented by a pair (a tuple if directed) of vertices (that the edge connects) and possibly weight and other data.
Adjacency matrix A = |V| x |V| matrix of
Booleans or integers
If there is an edge from a vertex v to a vertex v’, then the element A[v,v’] is 1, otherwise 0.
Incidence matrix IM = |V| x |E| matrix of integers
IM[v,e] = 1 (incident), 0 (not incident)
For directed graphs, may be -1 (out) and +1 (in)
![Page 60: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/60.jpg)
Example
A.A. 2013/2014Tecniche di programmazione60
Adjacency
matrix
Adjacency
list
![Page 61: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/61.jpg)
Adjacency list (undirected graph)
A.A. 2013/2014Tecniche di programmazione61
5
1
4
2
3
1
2
3
4
5
2 5
1 5 3 4
2 4
5 2 3
1 2 4
![Page 62: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/62.jpg)
Adjacency list (undirected graph)
A.A. 2013/2014Tecniche di programmazione62
5
1
4
2
3
1
2
3
4
5
2 5
1 5 3 4
2 4
5 2 3
1 2 4
Undirected ==>
All edges are
represented twice
![Page 63: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/63.jpg)
Adjacency list (un-connected graph)
A.A. 2013/2014Tecniche di programmazione63
Un-connected graph,
same rules
![Page 64: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/64.jpg)
Adjacency list (directed graph)
A.A. 2013/2014Tecniche di programmazione64
5
1
4
2
3
1
2
3
4
5
2
3 4
3
5
1 2
![Page 65: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/65.jpg)
Adjacency list
A.A. 2013/2014Tecniche di programmazione65
![Page 66: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/66.jpg)
Adjacency matrix (undirected graph)
A.A. 2013/2014Tecniche di programmazione66
1 2 3 4 5
1 0 1 0 0 1
2 1 0 1 1 1
3 0 1 0 1 0
4 0 1 1 0 1
5 1 1 0 1 0
5
1
4
2
3
Undirected =>
symmetric matrix
No self-loops: zero
diagonal
![Page 67: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/67.jpg)
Adjacency matrix (undirected graph)
A.A. 2013/2014Tecniche di programmazione67
1 2 3 4 5
1 1 0 0 1
2 1 1 1
3 1 0
4 1
5
5
1
4
2
3
Undirected =>
symmetric matrix
50% of memory can
be saved
![Page 68: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/68.jpg)
Adjacency matrix (directed graph)
A.A. 2013/2014Tecniche di programmazione68
1 2 3 4 5
1 0 1 0 0 0
2 0 0 1 1 0
3 0 0 1 0 0
0 0 0 0 1
1 1 0 0 0
5
1
4
2
3
4
5
From-vertex
(out-edges)
To-vertex
(in-edges)
Self-loops in the
diagonal
![Page 69: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/69.jpg)
Adjacency matrix (weighted graph)
A.A. 2013/2014Tecniche di programmazione69
1 2 3 4 5
1 0 2 0 0 0
2 0 0 3 5 0
3 0 0 1 0 0
0 0 0 0 2
1 3 0 0 0
5
1
4
2
3
4
5
Values = edge weight
2
3
1
2
5
1
3
![Page 70: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/70.jpg)
Adjacency matrix
A.A. 2013/2014Tecniche di programmazione70
![Page 71: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/71.jpg)
Incidence matrix (undirected graph)
A.A. 2013/2014Tecniche di programmazione71
1 2 3 4 5
1 1 1 0 0 0
2 1 0 1 1 0
3 0 0 0 0 0
4 0 0 0 1 1
5 0 1 1 0 1
v5
v1
v4
v2
v3
Edges e1…e7
e1
e2 e3 e4
e5
e6
e7
6
0
1
1
0
0
7
0
0
1
1
0
Vertices
v1…v5
Exactly 2 “ones”
in every column
# of “ones” in a
row = vertex
degree
![Page 72: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/72.jpg)
Incidence matrix (directed graph)
A.A. 2013/2014Tecniche di programmazione72
v5
v1
v4
v2
v3
e1
e2 e3 e4
e5
e6
e7
1 2 3 4 5
1 -1 +1 0 0 0
2 +1 0 +1 -1 0
3 0 0 0 0 0
4 0 0 0 +1 -1
5 0 -1 -1 0 +1
Edges e1…e7
6
0
-1
+1
0
0
7
0
0
-1
+1
0
Vertices
v1…v5
Self loops can’t
be represented
-1: exit
+1: enter
indegree =
count(+1)
outdegree =
count(-1)
![Page 73: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/73.jpg)
Complexity & trade-offs
A.A. 2013/2014Tecniche di programmazione73
Adjacency List Adjacency Matrix Incidence Matrix
Space O( |V| + |E| ) O( |V| x |V| ) O( |V| x |E| )
Space For sparse graphs
|E| << |V|2For dense graphs
|E| ~ |V|2
Check edge O(1+deg(v)) O(1) O(|E|) if v,v’ are
known, or
O(1) if e is known
Find all adjacent O(1+deg(v)) O(|V|) O(|V|+|E|)
![Page 74: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/74.jpg)
Graph visits
Representing and visiting graphs
![Page 75: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/75.jpg)
Visit Algorithms
A.A. 2013/2014Tecniche di programmazione75
Visit =
Systematic exploration of a graph
Starting from a ‘source’ vertex
Reaching all reachable vertices
Main strategies
Breadth-first visit (“in ampiezza”)
Depth-first visit (“in profondità”)
![Page 76: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/76.jpg)
Breadth-First Visit
A.A. 2013/2014Tecniche di programmazione76
Also called Breadth-first search (BFV or BFS)
All reachable vertices are visited “by levels”
L – level of the visit
SL – set of vertices in level L
L=0, S0={ vsource }
Repeat while SL is not empty:
SL+1 = set of all vertices:
not visited yet, and
adjacent to at least one vertex in SL
L=L+1
![Page 77: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/77.jpg)
Example
A.A. 2013/2014Tecniche di programmazione77
r s t u
v w x y
Source = s
L = 0
S0 = {s}
![Page 78: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/78.jpg)
Example
A.A. 2013/2014Tecniche di programmazione78
r s t u
v w x y
L = 1
S0 = {s}
S1 = {r, w}
![Page 79: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/79.jpg)
Example
A.A. 2013/2014Tecniche di programmazione79
r s t u
v w x y
L = 2
S1 = {r, w}
S2 = {v, t, x}
![Page 80: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/80.jpg)
Example
A.A. 2013/2014Tecniche di programmazione80
r s t u
v w x y
L = 3
S2 = {v, t, x}
S3 = {u, y}
![Page 81: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/81.jpg)
BFS Tree
A.A. 2013/2014Tecniche di programmazione81
The result of a BFV identifies a “visit tree” in the graph:
The tree root is the source vertex
Tree nodes are all graph vertices
(in the same connected component of the source)
Tree are a subset of graph edges
Those edges that have been used to “discover” new vertices.
![Page 82: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/82.jpg)
BFS Tree
A.A. 2013/2014Tecniche di programmazione82
r s t u
v w x y
![Page 83: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/83.jpg)
Minimum (shortest) paths
A.A. 2013/2014Tecniche di programmazione83
Shortest path: the minumum number of edges on any
path between two vertices
The BFS procedure computes all minimum paths for all
vertices, starting from the source vertex
NB: unweighted graph : path length = number of edges
![Page 84: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/84.jpg)
Depth First Visit
A.A. 2013/2014Tecniche di programmazione84
Also called Depth-first search (DFV or DFS)
Opposite approach to BFS
At every step, visit one (yet unvisited) vertex, adjacent to
the last visited one
If no such vertex exist, go back one step to the previously
visited vertex
Lends itself to recursive implementation
Similar to tree visit procedures
![Page 85: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/85.jpg)
DFS Algorithm
A.A. 2013/2014Tecniche di programmazione85
DFS(Vertex v)
For all ( w : adjacent_to(v) )
If( not visited (w) )
Visit (w)
DFS(w)
Start with: DFS(source)
![Page 86: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/86.jpg)
Example
A.A. 2013/2014Tecniche di programmazione86
r s t u
v w x y
Source = s
![Page 87: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/87.jpg)
Example
A.A. 2013/2014Tecniche di programmazione87
r s t u
v w x y
Source = s
Visit r
![Page 88: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/88.jpg)
Example
A.A. 2013/2014Tecniche di programmazione88
r s t u
v w x y
Source = s
Visit r
Visit v
![Page 89: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/89.jpg)
Example
A.A. 2013/2014Tecniche di programmazione89
r s t u
v w x y
Source = s
Back to r
Back to s
Visit w
![Page 90: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/90.jpg)
Example
A.A. 2013/2014Tecniche di programmazione90
r s t u
v w x y
Source = s
Visit w
Visit t
![Page 91: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/91.jpg)
Example
A.A. 2013/2014Tecniche di programmazione91
r s t u
v w x y
Source = s
Visit w
Visit t
Visit u
![Page 92: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/92.jpg)
Example
A.A. 2013/2014Tecniche di programmazione92
r s t u
v w x y
Source = s
Visit w
Visit t
Visit u
Visit y
![Page 93: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/93.jpg)
Example
A.A. 2013/2014Tecniche di programmazione93
r s t u
v w x y
Source = s
Visit w
Visit t
Visit u
Visit y
Visit x
![Page 94: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/94.jpg)
Example
A.A. 2013/2014Tecniche di programmazione94
r s t u
v w x y
Source = s
Back to y
Back to u
Back to t
Back to w
DFS tree
Back to s = STOP
![Page 95: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/95.jpg)
Edge classification
A.A. 2013/2014Tecniche di programmazione95
In an directed graph, after a DFS visit, all edges fall in one
of these 4 categories:
T: Tree edges (belonging to the DFS tree)
B: Back edges (not in T, and connect a vertex to one of its
ancestors)
F: Forward edges (not in T and B, and connect a vertex to one
of its descendants)
C: Cross edges (all remaining edges)
![Page 96: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/96.jpg)
Example
A.A. 2013/2014Tecniche di programmazione96
x
y
w v
z s
u
t
Directed graph
![Page 97: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/97.jpg)
Example
A.A. 2013/2014Tecniche di programmazione97
x
y
w v
z s
u
t
DFS visit
(sources: s, t)
![Page 98: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/98.jpg)
Example
A.A. 2013/2014Tecniche di programmazione98
x
y
w v
z s
u
t
Edge classification
T T
T TTT B BBF
C C C
![Page 99: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/99.jpg)
Cycles
A.A. 2013/2014Tecniche di programmazione99
Theorem:
A directed graph is acyclic if and only if a depth-first visit
does not produce any B edge
![Page 100: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/100.jpg)
Complexity
A.A. 2013/2014Tecniche di programmazione100
Visits have linear complexity in the graph size
BFS : O(V+E)
DFS : (V+E)
N.B. for dense graphs, E = O(V2)
![Page 101: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/101.jpg)
Resources
A.A. 2012/2013Tecniche di programmazione101
Maths Encyclopedia: http://mathworld.wolfram.com/
Basic Graph Theory with Applications to Economics
http://www.isid.ac.in/~dmishra/mpdoc/lecgraph.pdf
Application of Graph Theory in real world
http://prezi.com/tseh1wvpves-/application-of-graph-theory-
in-real-world/
![Page 102: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/102.jpg)
Resources
A.A. 2013/2014Tecniche di programmazione102
Open Data Structures (in Java), Pat Morin,
http://opendatastructures.org/
Algorithms Course Materials, Jeff Erickson,
http://www.cs.uiuc.edu/~jeffe/teaching/algorithms/
Graphbook - A book on algorithmic graph theory, David
Joyner, Minh Van Nguyen, and David Phillips,
https://code.google.com/p/graphbook/
![Page 103: Tecniche di Programmazione A.A. 2015/2016 · 7 Tecniche di programmazione A.A. 2012/2013 The study of graphs is known as graph theory, and was first systematically investigated by](https://reader035.fdocuments.net/reader035/viewer/2022071006/5fc3ebaa315c031286099879/html5/thumbnails/103.jpg)
Licenza d’uso
A.A. 2012/2013Tecniche di programmazione103
Queste diapositive sono distribuite con licenza Creative Commons“Attribuzione - Non commerciale - Condividi allo stesso modo (CC BY-NC-SA)”
Sei libero: di riprodurre, distribuire, comunicare al pubblico, esporre in pubblico,
rappresentare, eseguire e recitare quest'opera
di modificare quest'opera
Alle seguenti condizioni: Attribuzione — Devi attribuire la paternità dell'opera agli autori
originali e in modo tale da non suggerire che essi avallino te o il modo in cui tu usi l'opera.
Non commerciale — Non puoi usare quest'opera per fini commerciali.
Condividi allo stesso modo — Se alteri o trasformi quest'opera, o se la usi per crearne un'altra, puoi distribuire l'opera risultante solo con una licenza identica o equivalente a questa.
http://creativecommons.org/licenses/by-nc-sa/3.0/