Graphs

advertisement
Graphs
SFO
LAX
ORD
DFW
Many slides taken from Goodrich, Tamassia 2004
1
Graphs
A graph is a pair (V, E), where



V is a set of nodes, called vertices (node=vertex)
E is a collection of pairs of vertices, called edges
Vertices and edges are positions and store elements
Example:


A vertex represents an airport and stores the three-letter airport code
An edge represents a flight route between two airports and stores the
mileage of the route
SFO
PVD
ORD
LGA
HNL
© 2004 Goodrich, Tamassia
LAX
DFW
MIA
2
Edge Types
Directed edge




ordered pair of vertices (u,v)
first vertex u is the origin
second vertex v is the destination
e.g., a flight
ORD
flight
AA 1206
PVD
ORD
849
miles
PVD
Undirected edge


unordered pair of vertices (u,v)
e.g., a flight route
Directed graph


all the edges are directed
e.g., route network
Undirected graph


all the edges are undirected
e.g., flight network
© 2004 Goodrich, Tamassia
3
Applications
cslab1a
cslab1b
Electronic circuits


Printed circuit board
Integrated circuit
Transportation networks




brown.edu
qwest.net
att.net
Local area network
Internet
Web
Databases

cs.brown.edu
Highway network
Flight network
Computer networks

math.brown.edu
cox.net
John
Paul
David
Entity-relationship diagram
© 2004 Goodrich, Tamassia
4
Terminology
End vertices (or endpoints) of
an edge

U and V are the endpoints of a
a
Edges incident on a vertex

a, d, and b are incident on V
Adjacent vertices

U and V are adjacent
Degree of a vertex

X has degree 5
Parallel edges

h and i are parallel edges
Self-loop

U
V
b
d
h
X
c
e
W
j
Z
i
g
f
Y
j is a self-loop
© 2004 Goodrich, Tamassia
5
Terminology (cont.)
Path




sequence of alternating
vertices and edges
begins with a vertex
ends with a vertex
each edge is preceded and
followed by its endpoints
Simple path

path such that all its vertices
and edges are distinct
Examples


P1=(V,b,X,h,Z) is a simple path
P2=(U,c,W,e,X,g,Y,f,W,d,V) is a
path that is not simple
© 2004 Goodrich, Tamassia
a
U
c
V
b
d
P2
P1
X
e
W
h
Z
g
f
Y
6
Terminology (cont.)
Cycle


circular sequence of alternating
vertices and edges
each edge is preceded and
followed by its endpoints
Simple cycle

cycle such that all its vertices
and edges are distinct
Examples


C1=(V,b,X,g,Y,f,W,c,U,a,) is a
simple cycle
C2=(U,c,W,e,X,g,Y,f,W,d,V,a,)
is a cycle that is not simple
© 2004 Goodrich, Tamassia
a
U
c
V
b
d
C2
X
e
C1
g
W
f
h
Z
Y
7
Properties
Property 1
Sv deg(v) = 2m
Proof: each edge is
counted twice
Property 2
In an undirected graph
with no self-loops and
no multiple edges
m  n (n - 1)/2
Proof: each vertex has
degree at most (n - 1)
Notation
n
m
deg(v)
number of vertices
number of edges
degree of vertex v
Example
 n = 4
 m = 6
 deg(v) = 3
What is the bound for a
directed graph?
© 2004 Goodrich, Tamassia
8
Main Methods of the Graph ADT
Vertices and edges


are positions
store elements
Update methods


Accessor methods





endVertices(e): an array of
the two endvertices of e
opposite(v, e): the vertex
opposite of v on e
areAdjacent(v, w): true iff v
and w are adjacent
replace(v, x): replace
element at vertex v with x
replace(e, x): replace
element at edge e with x


Iterator methods



© 2004 Goodrich, Tamassia
insertVertex(o): insert a
vertex storing element o
insertEdge(v, w, o): insert
an edge (v,w) storing
element o
removeVertex(v): remove
vertex v (and its incident
edges)
removeEdge(e): remove
edge e
incidentEdges(v): edges
incident to v
vertices(): all vertices in the
graph
edges(): all edges in the
graph
9
Implementation of Graphs
Vertex adjacency lists
Adjacency matrix
© 2004 Goodrich, Tamassia
10
Example problem
Store the airport flight graph
Given an airport, output all airports that
have direct flights
Given an airport, output all airports that
have flights with at most 1 connection
Given two airports, find minimum
number of hops needed to connect
them
© 2004 Goodrich, Tamassia
11
Shortest Paths
A
8
0
4
2
B
2
8
7
5
E
C
3
2
1
9
D
8
F
3
5
12
Weighted Graphs
In a weighted graph, each edge has an associated numerical
value, called the weight of the edge
Edge weights may represent, distances, costs, etc.
Example:

In a flight route graph, the weight of an edge represents the
distance in miles between the endpoint airports
SFO
PVD
ORD
LGA
HNL
© 2004 Goodrich, Tamassia
LAX
DFW
MIA
13
Shortest Paths
Given a weighted graph and two vertices u and v, we want to
find a path of minimum total weight between u and v.

Length of a path is the sum of the weights of its edges.
Example:

Shortest path between Providence and Honolulu
Applications



Internet packet routing
Flight reservations
Driving directions
SFO
PVD
ORD
LGA
HNL
© 2004 Goodrich, Tamassia
LAX
DFW
MIA
14
Shortest Path Properties
Property 1:
A subpath of a shortest path is itself a shortest path
Property 2:
There is a tree of shortest paths from a start vertex to all the other
vertices
Example:
Tree of shortest paths from Providence
SFO
PVD
ORD
LGA
HNL
© 2004 Goodrich, Tamassia
LAX
DFW
MIA
15
Dijkstra’s Algorithm
The distance of a vertex
v from a vertex s is the
length of a shortest path
between s and v
Dijkstra’s algorithm
computes the distances
of all the vertices from a
given start vertex s
Assumptions:



the graph is connected
the edges are
undirected
the edge weights are
nonnegative
© 2004 Goodrich, Tamassia
We grow a “cloud” of vertices,
beginning with s and eventually
covering all the vertices
We store with each vertex v a
label d(v) representing the
distance of v from s in the
subgraph consisting of the cloud
and its adjacent vertices
At each step


We add to the cloud the vertex
u outside the cloud with the
smallest distance label, d(u)
We update the labels of the
vertices adjacent to u
16
Edge Relaxation
Consider an edge e = (u,z)
such that


u is the vertex most recently
added to the cloud
z is not in the cloud
d(u) = 50
s
The relaxation of edge e
updates distance d(z) as
follows:
e
z
d(u) = 50
d(z)  min{d(z),d(u) + weight(e)}
s
© 2004 Goodrich, Tamassia
u
u
d(z) = 75
d(z) = 60
e
z
17
Example
A
8
0
4
A
8
2
B
8
7
2
C
2
1
D
9
E

F
A
8
4
5
B
8
7
5
E
2
C
3
B
2
7
5
E
1
9
0
4
2
D
8
A
8
3
5
F
2
8
4
2
3

0
0
4
2
C
3
© 2004 Goodrich, Tamassia
2
1
9
D
11
F
5
3
B
2
7
7
5
E
C
3
2
1
9
D
8
F
5
18
3
Example (cont.)
A
8
0
4
2
B
2
7
7
C
3
5
E
2
1
9
D
8
F
3
5
A
8
0
4
2
B
2
© 2004 Goodrich, Tamassia
7
7
C
3
5
E
2
1
9
D
8
F
3
5
19
Dijkstra’s Algorithm
Algorithm DijkstraDistances(G, s)
Q  new heap-based priority queue
for all v  G.vertices()
if v = s
setDistance(v, 0)
else
setDistance(v, )
Q.insert(getDistance(v), v)
while Q.isEmpty()
u  Q.removeMin()
for all e= (z,u)  G.incidentEdges(u)
/* relax edge e */
r  getDistance(u) + weight(e)
if r < getDistance(z)
setDistance(z,r)
Recompute position of z in Q
A priority queue stores the vertices
Key: distance, Element: vertex
© 2004 Goodrich, Tamassia
n
n
n
n
nlogn (priority heap queue)
n
nlogn (priority heap queue)
Sumn(deg(n))=2m
2m
2m
2m
2mlogn (priority heap queue)
outside the cloud:
O(mlogn)
20
Shortest Paths Tree
Using the template
method pattern, we
can extend Dijkstra’s
algorithm to return a
tree of shortest paths
from the start vertex
to all other vertices
We store with each
vertex a third label:

parent edge in the
shortest path tree
In the edge relaxation
step, we update the
parent label
© 2004 Goodrich, Tamassia
Algorithm DijkstraShortestPathsTree(G, s)
…
for all v  G.vertices()
…
setParent(v, )
…
for all e  G.incidentEdges(u)
{ relax edge e }
z  G.opposite(u,e)
r  getDistance(u) + weight(e)
if r < getDistance(z)
setDistance(z,r)
setParent(z,e)
Q.replaceKey(getLocator(z),r)
21
Why It Doesn’t Work for
Negative-Weight Edges
Dijkstra’s algorithm is based on the greedy
method. It adds vertices by increasing distance.

If a node with a negative
incident edge were to be added
late to the cloud, it could mess
up distances for vertices already
in the cloud.
A
8
0
4
6
B
2
7
7
C
0
5
E
5
1
-8
D
9
F
5
C’s true distance is 1, but
it is already in the cloud
with d(C)=5!
© 2004 Goodrich, Tamassia
22
4
Other Graph issues
Traversal


depth-first
Breadth-first
Very hard (NP-complete) problems on graphs

Coloring
 Given a graph, can we assign one of three colors
(say red, blue, or green) to each vertex, such that
no adjacent vertices have the same color?

Traveling salesman (Hamiltonian cycle)
 path that travels through every vertex once, and
winds up where it started
© 2004 Goodrich, Tamassia
23
Download