Lecture 17
Lecture 17
Lecture 17
Lecture #17
Trees and DAGs and Graphs,
Oh MY!
Bart Niswonger
Summer Quarter 2001
Today’s Outline
• Project IV
• Stuff Bart didn’t get to Monday
• Graphs (what are they?)
• Topological Sort
• Graph Data Structures
• Graph Properties
Graph… ADT?
raphs - a formalism for representing relationship
a graph G is represented as G = (V, E) Han
– V is a set of vertices: {v1, v2, …, vn}
– E is a set of edges: {e1, e2, …, em} where Leia
each ei connects two
vertices (vi1, vi2) Luke
A B
C D
Graph Applications
• Storing things that are graphs by nature
– distance between cities
– airline flights, travel options
– relationships between people, things
– distances between rooms in Clue
• Compilers
– callgraph - which functions call which others
– dependence graphs - which variables are
defined and used at which statements
Total Order
1
2
3
4
5
6
A B means A must go before B 7
Partial Order: Planning a Trip
reserve
check in flight call
airport taxi
pack
take bags
flight
locate
taxi to gate
airport
Topological Sort
Given a graph, G = (V, E), output all the
vertices in V such that no vertex is
output before any other vertex with an
edge to it.
reserve check in
flight airport
call
taxi take
taxi to flight
airport locate
pack gate
bags
Topo-Sort Take One
Label each vertex’s in-degree (# of inbound edges)
While there are vertices remaining
1. Pick a vertex with in-degree of zero and
output it
2. Reduce the in-degree of all vertices
adjacent to it
3. Remove it from the list of vertices
runtime:
Topo-Sort Take Two
Label each vertex’s in-degree
Initialize a queue to contain all in-degree zero
vertices
While there are vertices remaining in the queue
1.Pick a vertex v with in-degree of zero and output it
2.Reduce the in-degree of all vertices adjacent to v
3.Put any of these with new in-degree zero in the queue
4.Remove v from the queue
runtime:
Graph Representations
Han
• List of vertices + list of edges Luke
Leia
Han Luke
aka: di-graphs
Leia (edges are two-way):
• In undirected graphs, they don’t
Han Luke
Leia
• Vertices u and v are adjacent if (u, v) E
Weighted Graphs
Each edge has an associated weight or cost.
Clinton 20
Mukilteo
Kingston 30
Edmonds
Bainbridge 35
Seattle
60
Bremerton
There may be more
information in the graph as well.
Paths
A path is a list of vertices {v1, v2, …, vn}
such that (vi, vi+1) E for all 0 i < n.
Chicago
Seattle
San Francisco
Dallas
p = {Seattle, Salt Lake City, Chicago, Dallas, San Francisco, Seattle}
Path Length and Cost
Path length: the number of edges in the path
Path cost: the sum of the costs of each edge
3.5 Chicago
Seattle
2 2
3
San Francisco
Dallas
length(p) = 5 cost(p) = 11.5
Simple Paths and Cycles
A simple path repeats no vertices (except that the first
can be the last):
– p = {Salt Lake City, San Francisco, Dallas}
– p = {Seattle, Salt Lake City, Dallas, San Francisco, Seattle}
add()
read()
access()