Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Lecture 17

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 24

CSE 326: Data Structures

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

operations include: V = {Han, Leia, Luke}


– iterating over vertices
E = {(Luke, Leia),
– iterating over edges
(Han, Leia),
– iterating over vertices adjacent to a
(Leia, Han)}
specific vertex
– asking whether an edge exists
connected two vertices
How Many Edges?

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

• 2-D matrix of vertices (marking edges in


the cells)
“adjacency matrix”

• List of vertices each with a list of


adjacent vertices
“adjacency list”
Adjacency Matrix
A |V| x |V| array in which an
element (u, v) is true if and
only if there is an edge
Hanfrom to
Luke uLeia
v
Han Han
Luke
Luke
Leia
Leia

runtime: space requirements:


Adjacency List
A |V|-ary list (array) in which
each entry stores a list (linked
list) of all adjacent vertices
Han Han
Luke
Luke
Leia
Leia

runtime: space requirements:


Directed vs. Undirected Graphs
• In directed graphs, edges have a specific direction:

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

Salt Lake City

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

2 Salt Lake City


2.5
2.5 2.5

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}

A cycle is a path that starts and ends at the


same node:
– p = {Seattle, Salt Lake City, Dallas, San Francisco, Seattle}

A simple cycle is a cycle that repeats no vertices


except that the first vertex is also the last (in
undirected graphs, no edge can be repeated)
Connectivity
Undirected graphs are connected if there is a
path between any two vertices

Directed graphs are strongly connected if there


is a path from any one vertex to any other

Di-graphs are weakly connected if there is a


path between any two vertices, ignoring
direction
A complete graph has an edge between every
pair of vertices
Graph Density
A sparse graph has O(|V|) edges

A dense graph has (|V|2) edges

Anything in between is either sparsish or


densy depending on the context.
Trees as Graphs
• Every tree is a graph A
with some
restrictions: B C
– the tree is directed
– there are no cycles D E F
(directed or
undirected) G H
– there is a directed
path from the root to I J
every node
Directed Acyclic Graphs (DAGs)
DAGs are directed
main()
graphs with no
cycles.
mult()

add()

read()
access()

Trees  DAGs  Graphs


To Do
• Finish Project III (due Today!)
• Read chapter 9 (see Calendar)
• Read Project IV writeup
Coming Up
• Graph Algorithms!
• Quiz (tomorrow)
• Project IV code

You might also like