Graphs Slide credits: K. Wayne, Princeton U. C. E. Leiserson and E. Demaine, MIT K. Birman,...
-
Upload
jeremy-parsons -
Category
Documents
-
view
215 -
download
2
description
Transcript of Graphs Slide credits: K. Wayne, Princeton U. C. E. Leiserson and E. Demaine, MIT K. Birman,...
Graphs
Slide credits: K. Wayne, Princeton U. C. E. Leiserson and E. Demaine, MIT K. Birman, Cornell U.
These are not Graphs
...not the kind we mean, anyway
These are Graphs
K5 K3,3
=
Applications of Graphs
Communication networks Routing and shortest path problems Commodity distribution (flow) Traffic control Resource allocation Geometric modeling ...
Undirected Graphs
Undirected graph. G = (V, E) is an ordered pair consisting of V = nodes. E = edges between pairs of nodes. Captures pairwise relationship between objects. Graph size parameters: n = |V|, m = |E|. Two nodes connected by an edge are said to be neighbor.
V = { 1, 2, 3, 4, 5, 6, 7, 8 }E = { 1-2, 1-3, 2-3, 2-4, 2-5, 3-5, 3-7, 3-8, 4-5, 5-6 }n = 8m = 11
Some Properties of Undirected Graph
|E|= O(V2) If G is connected |E|≥|V|–1
– An undirected graph is connected if for every pair of nodes u
and v, there is a path between u and v. deg(V) is defined as the number of edges incident to V
– Handshaking lemma: Σv∈V deg(v) = 2|E|
Directed Graphs
Directed graph. G = (V, E) Edge (u, v) goes from node u to node v.
Ex. Web graph - hyperlink points from one web page to another. Directedness of graph is crucial. Modern web search engines exploit hyperlink structure to rank
web pages by importance.
World Wide Web
Web graph. Node: web page. Edge: hyperlink from one page to another.
cnn.com
cnnsi.comnovell.comnetscape.com timewarner.com
hbo.com
sorpranos.com
Graph Representation: Adjacency Matrix
Adjacency matrix. n-by-n matrix with Auv = 1 if (u, v) is an edge. Two representations of each edge. Space proportional to n2. Checking if (u, v) is an edge takes O(1) time. Identifying all edges takes O(n2) time. Use for dense graph
1 2 3 4 5 6 7 81 0 1 1 0 0 0 0 02 1 0 1 1 1 0 0 03 1 1 0 0 1 0 1 14 0 1 0 1 1 0 0 05 0 1 1 1 0 1 0 06 0 0 0 0 1 0 0 07 0 0 1 0 0 0 0 18 0 0 1 0 0 0 1 0
Graph Representation: Adjacency List
Adjacency list. Node indexed array of lists. Two representations of each edge. Space proportional to m + n. Checking if (u, v) is an edge takes O(deg(u)) time. Identifying all edges takes O(m + n) time. Use for sparse graph
1 2 3234 2 55
67 3 88
1 3 4 51 2 5 87
2 3 4 65
degree = number of neighbors of u
3 7
Paths and Connectivity
Def. 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.
Def. A path is simple if all nodes are distinct.
Def. An undirected graph is connected if for every pair of nodes u and v, there is a path between u and v.
Cycles
Def. 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.
cycle C = 1-2-4-5-3-1
Trees
Def. An undirected graph is a tree if it is connected and does not contain a cycle.
Theorem. 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.
Rooted Trees
Rooted tree. Given a tree T, choose a root node r and orient each edge away from r.
Importance. Models hierarchical structure.
a tree the same tree, rooted at 1
v
parent of v
child of v
root r
Graph Traversal
Problem: Search for a certain node or traverse all nodes in the graph
Depth First Search– Once a possible path is found, continue the search until
the end of the path Breadth First Search
– Start several paths at a time, and advance in each one step at a time
Depth First Traversal
A natural way to do Depth-first search (BFS) is using recursion.
DFS( Node c ) {Mark c "Visited”For each neighbor n of c
If n "Unvisited" DFS( n )}
Possible visit sequence: 1, 2, 4, 5, 6, 3, 8, 7
Breadth First Traversal
Breadth-first search (BFS) not naturally recursive. Use a queue so that vertices are visited in order according
to their distance from the starting vertex.
BFS(Node v) { create a queue Q enqueue v onto Q mark v “Visited” while Q is not empty { dequeue t from Q for each neighbor u of t do
if u is not marked { mark u “Visited” enqueue u onto Q
}}
Breadth First Search
L0
L1
L2
L3
Visit sequence: 1, 2, 3, 4, 5, 7, 8, 6
Applications: Finding a Path
Find path from source vertex s to destination vertex d Use graph search starting at s and terminating as soon as we
reach d Need to remember edges traversed Use depth – first search
DFS
EF
G
B
CD
A start
destination
A DFS on A ADFS on BB
A
DFS on CBC
AB Return to call on BD Call DFS on D
ABD
Call DFS on GG found destination - done!Path is implicitly stored in DFS recursionPath is: A, B, D, G
DFS Process
Minimum spanning trees
Minimum spanning tree. Given a connected undirected graph G = (V, E) with real-valued edge weights ce, an MST is a subset of the edges T E such that T is a spanning tree whose sum of edge weights is minimized.
Minimum spanning trees
Greedy Algorithms
Prim's algorithm. Start with some root node s and greedily grow a tree T from s outward. At each step, add the cheapest edge e to T that has exactly one endpoint in T.
Theorem. Let T be the MST of G= (V, E), and let A⊆V. Suppose that (u, v) ∈ E is the least-weight edge connecting A to V–A. Then, (u, v) ∈T.
Greedy Algorithms
Proof:• Suppose (u, v) ∉T.• Consider the unique simple path from u to v in T.• Swap (u, v) with the first edge on this path that connects a vertex in A to a vertex in V–A to get a lower-weight MST