Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph...

52
Mudasser Naseer 1 07/04/2 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Transcript of Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph...

Page 1: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Mudasser Naseer 1 04/21/23

CS 201: Design and Analysis of Algorithms

Lecture # 17

Elementary Graph Algorithms (CH # 22)

Page 2: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Graphs

● Graphs are one of the unifying themes of computer science. A graph G = (V, E) is defined by a set of vertices V , and a set of edges E consisting of ordered or unordered pairs of vertices from V .

● Thus a graph G = (V, E)■ V = set of vertices■ E = set of edges = subset of V V■ Thus |E| = O(|V|2)

Mudasser Naseer 2 04/21/23

Page 3: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Examples

● Road Networks■ In modeling a road network, the vertices may

represent the cities or junctions, certain pairs of which are connected by roads/edges.

Mudasser Naseer 3 04/21/23

Page 4: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Examples

● Electronic Circuits■ In an electronic circuit, with junctions as vertices

and components as edges.

Mudasser Naseer 4 04/21/23

Page 5: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Graph Variations

● Variations:■ A connected graph has a path from every vertex to

every other■ In an undirected graph:

○ Edge (u,v) = Edge (v,u)○ Thus |E| <= |V| (|V|-1)/2○ No self-loops

A

ONM

LKJ

E F G H

DCB

I

P

Mudasser Naseer 5 04/21/23

Page 6: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

■ In a directed graph:○ Edge (u,v) goes from vertex u to vertex v, notated uv○ (u,v) is different from (v,u)○ Thus |E| <= |V| (|V|-1)

● Road networks between cities are typically undirected.● Street networks within cities are almost always directed

because of one-way streets.● Most graphs of graph-theoretic interest are undirected.

A

E F G H

DCB

I

Graph Variations

Mudasser Naseer 6 04/21/23

Page 7: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Graph Variations

● More variations:■ A weighted graph associates weights with either

the edges or the vertices○ E.g., a road map: edges might be weighted with their

length, drive-time or speed limit.

■ In unweighted graphs, there is no cost distinction between various edges and vertices.

Mudasser Naseer 7 04/21/23

Page 8: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

■ A multigraph allows multiple edges between the same vertices

○ E.g., the call graph in a program (a function can get called from multiple points in another function)

Mudasser Naseer 8 04/21/23

Page 9: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Simple vs. Non-simple Graphs

● Certain types of edges complicate the task of working with graphs. A self-loop is an edge (x; x) involving only one vertex.

● An edge (x; y) is a multi-edge if it occurs more than once in the graph.

● Any graph which avoids these structures is called simple.

Mudasser Naseer 9 04/21/23

Page 10: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Spars Vs Dense Graphs

● Graphs are sparse when only a small fraction of the possible number of vertex pairs actually have edges defined between them.

● Graphs are usually sparse due to application-specific constraints.

● Road networks must be sparse because of road junctions.

Mudasser Naseer 10 04/21/23

Page 11: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

● Typically dense graphs have a quadratic number of edges while sparse graphs are linear in size.

● We will typically express running times in terms of |E| and |V| (often dropping the |’s)■ If |E| |V|2 the graph is dense■ If |E| |V| the graph is sparse

● If you know you are dealing with dense or sparse graphs, different data structures may make sense

Spars Vs Dense Graphs

Mudasser Naseer 11 04/21/23

Page 12: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

● An acyclic graph does not contain any cycles. Trees are connected acyclic undirected graphs.

● Directed acyclic graphs are called DAGs. They arise naturally in scheduling problems, where a directed edge (x; y) indicates that x must occur before y.

Cyclic vs. Acyclic Graphs

Mudasser Naseer 12 04/21/23

Page 13: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Labeled vs. Unlabeled Graphs

● In labeled graphs, each vertex is assigned a unique name or identifier to distinguish it from all other vertices.

● An important graph problem is isomorphism testing, determining whether the topological structure of two graphs are in fact identical if we ignore any labels.

Mudasser Naseer 13 04/21/23

Page 14: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Subgraphs

● A subgraph S of a graph G is a graph such that ■ The edges of S are a

subset of the edges of G● A spanning subgraph of G

is a subgraph that contains all the vertices of G

Subgraph

Spanning subgraph

Page 15: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Trees and Forests

● A (free) tree is an undirected graph T such that■ T is connected■ T has no cycles

This definition of tree is different from the one of a rooted tree

● A forest is an undirected graph without cycles

● The connected components of a forest are trees

Tree

Forest

Page 16: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Spanning Trees and Forests

● A spanning tree of a connected graph is a spanning subgraph that is a tree

● A spanning tree is not unique unless the graph is a tree

● Spanning trees have applications to the design of communication networks

● A spanning forest of a graph is a spanning subgraph that is a forest

Graph

Spanning tree

Page 17: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Graph in Applications

● Internet: web graphs■ Each page is a vertex■ Each edge represent a hyperlink■ Directed

● GPS: highway maps■ Each city is a vertex■ Each freeway segment is an undirected edge■ Undirected

● Graphs are ubiquitous in computer science

Mudasser Naseer 17 04/21/23

Page 18: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Representing Graphs

● Assume V = {1, 2, …, n}● An adjacency matrix represents the graph as a

n x n matrix A:■ A[i, j] = 1 if edge (i, j) E (or weight of

edge)= 0 if edge (i, j) E

Mudasser Naseer 18 04/21/23

Page 19: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Graphs: Adjacency Matrix

● Example:

1

2 4

3

a

d

b c

A 1 2 3 4

1

2 ? ?3

4

Mudasser Naseer 19 04/21/23

Page 20: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Graphs: Adjacency Matrix

● Example:

1

2 4

3

a

d

b c

A 1 2 3 4

1 0 1 1 0

2 0 0 1 0

3 0 0 0 0

4 0 0 1 0

Mudasser Naseer 20 04/21/23

Page 21: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Graphs: Adjacency Matrix

● How much storage does the adjacency matrix require?

● A: O(V2)● What is the minimum amount of storage needed by

an adjacency matrix representation of an undirected graph with 4 vertices?

● A: 6 bits■ Undirected graph matrix is symmetric■ No self-loops don’t need diagonal

Mudasser Naseer 21 04/21/23

Page 22: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Graphs: Adjacency Matrix

● The adjacency matrix is a dense representation■ Usually too much storage for large graphs■ But can be very efficient for small graphs

● Most large interesting graphs are sparse■ E.g., planar graphs, in which no edges cross, have |

E| = O(|V|) by Euler’s formula■ For this reason the adjacency list is often a more

appropriate respresentation

Mudasser Naseer 22 04/21/23

Page 23: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Graphs: Adjacency List

● Adjacency list: for each vertex v V, store a list of vertices adjacent to v

● Example:■ Adj[1] = {2,3}■ Adj[2] = {3}■ Adj[3] = {}■ Adj[4] = {3}

● Variation: can also keep a list of edges coming into vertex

1

2 4

3

Mudasser Naseer 23 04/21/23

Page 24: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Graphs: Adjacency List

● How much storage is required?■ The degree of a vertex v in an undirected graph = # incident

edges○ Directed graphs have in-degree, out-degree

■ For directed graphs, # of items in adjacency lists is out-degree(v) = |E|takes (V + E) storage (Why?)

■ For undirected graphs, # items in adj lists is degree(v) = 2 |E|

also (V + E) storage

● So: Adjacency lists take O(V+E) storage

Mudasser Naseer 24 04/21/23

Page 25: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Graph Representation

Mudasser Naseer 25 04/21/23

Page 26: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Google Problem:Graph Searching

● How to search and explore in the Web Space?● How to find all web-pages and all the

hyperlinks?■ Start from one vertex “www.google.com”■ Systematically follow hyperlinks from the

discovered vertex/web page■ Build a search tree along the exploration

Mudasser Naseer 26 04/21/23

Page 27: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

General Graph Searching

● Given: a graph G = (V, E), directed or undirected● Goal: methodically explore every vertex and

every edge● Ultimately: build a tree on the graph

■ Pick a vertex as the root■ Choose certain edges to produce a tree■ Note: might also build a forest if graph is not

connected

Mudasser Naseer 27 04/21/23

Page 28: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Breadth-First Search

● “Explore” a graph, turning it into a tree■ One vertex at a time■ Expand frontier of explored vertices across the

breadth of the frontier

● Builds a tree over the graph■ Pick a source vertex to be the root■ Find (“discover”) its children, then their children,

etc.

Mudasser Naseer 28 04/21/23

Page 29: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Breadth-First Search

● Again will associate vertex “colors” to guide the algorithm■ White vertices have not been discovered

○ All vertices start out white

■ Grey vertices are discovered but not fully explored○ They may be adjacent to white vertices

■ Black vertices are discovered and fully explored○ They are adjacent only to black and gray vertices

● Explore vertices by scanning adjacency list of grey vertices

Mudasser Naseer 29 04/21/23

Page 30: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

A

ONM

LKJ

E F G H

DCB

I

P

0

Mudasser Naseer 30 04/21/23

Page 31: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

A

ONM

LKJ

E F G H

DCB

I

P

0

1 1

1

Mudasser Naseer 31 04/21/23

Page 32: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

A

ONM

LKJ

E F G H

DCB

I

P

0

1 1

1

2

2

Mudasser Naseer 32 04/21/23

Page 33: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

A

ONM

LKJ

E F G H

DCB

I

P

0

1 1

1

2

2

3 3

3

3

3

Mudasser Naseer 33 04/21/23

Page 34: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

A

ONM

LKJ

E F G H

DCB

I

P

0

1 1

1

2

2

3 3

3

3

3

4 4

4

Mudasser Naseer 34 04/21/23

Page 35: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

A

ONM

LKJ

E F G H

DCB

I

P

0

1 1

1

2

2

3 3

3

3

3

4 4

4

55

Mudasser Naseer 35 04/21/23

Page 36: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

A

ONM

LKJ

E F G H

DCB

I

P

0

1 1

1

2

2

3 3

3

3

3

4 4

4

55

Mudasser Naseer 36 04/21/23

Page 37: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

A

ONM

LKJ

E F G H

DCB

I

P

0

1 1

1

2

2

3 3

3

3

3

4 4

4

55

Mudasser Naseer 37 04/21/23

Page 38: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Breadth-First Search

BFS(G, s) {

initialize vertices;

Q = {s}; // Q is a queue (duh); initialize to s

while (Q not empty) {

u = RemoveTop(Q);

for each v u->adj { if (v->color == WHITE)

v->color = GREY;

v->d = u->d + 1;

v->p = u;

Enqueue(Q, v);

}

u->color = BLACK;

}

}

What does v->p represent?

What does v->d represent?

Mudasser Naseer 38 04/21/23

Page 39: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Breadth-First Search: Example

r s t u

v w x y

Mudasser Naseer 39 04/21/23

Page 40: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Breadth-First Search: Example

0

r s t u

v w x y

sQ:

Mudasser Naseer 40 04/21/23

Page 41: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Breadth-First Search: Example

1

0

1

r s t u

v w x y

wQ: r

Mudasser Naseer 41 04/21/23

Page 42: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Breadth-First Search: Example

1

0

1

2

2

r s t u

v w x y

rQ: t x

Mudasser Naseer 42 04/21/23

Page 43: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Breadth-First Search: Example

1

2

0

1

2

2

r s t u

v w x y

Q: t x v

Mudasser Naseer 43 04/21/23

Page 44: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Breadth-First Search: Example

1

2

0

1

2

2

3

r s t u

v w x y

Q: x v u

Mudasser Naseer 44 04/21/23

Page 45: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Breadth-First Search: Example

1

2

0

1

2

2

3

3

r s t u

v w x y

Q: v u y

Mudasser Naseer 45 04/21/23

Page 46: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Breadth-First Search: Example

1

2

0

1

2

2

3

3

r s t u

v w x y

Q: u y

Mudasser Naseer 46 04/21/23

Page 47: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Breadth-First Search: Example

1

2

0

1

2

2

3

3

r s t u

v w x y

Q: y

Mudasser Naseer 47 04/21/23

Page 48: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Breadth-First Search: Example

1

2

0

1

2

2

3

3

r s t u

v w x y

Q: Ø

Mudasser Naseer 48 04/21/23

Page 49: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

BFS: The Code Again

BFS(G, s) {

initialize vertices;

Q = {s};

while (Q not empty) {

u = RemoveTop(Q);

for each v u->adj { if (v->color == WHITE)

v->color = GREY;

v->d = u->d + 1;

v->p = u;

Enqueue(Q, v);

}

u->color = BLACK;

}

}What will be the running time?

Touch every vertex: O(V)

u = every vertex, but only once (Why?)

So v = every vertex that appears in some other vert’s adjacency list

Total running time: O(V+E)

Mudasser Naseer 49 04/21/23

Page 50: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

BFS: The Code Again

BFS(G, s) {

initialize vertices;

Q = {s};

while (Q not empty) {

u = RemoveTop(Q);

for each v u->adj { if (v->color == WHITE)

v->color = GREY;

v->d = u->d + 1;

v->p = u;

Enqueue(Q, v);

}

u->color = BLACK;

}

}

What will be the storage cost in addition to storing the tree?Total space used: O(max(degree(v))) = O(E)

Mudasser Naseer 50 04/21/23

Page 51: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Breadth-First Search: Properties

● BFS calculates the shortest-path distance to the source node■ Shortest-path distance (s,v) = minimum number

of edges from s to v, or if v not reachable from s

● BFS builds breadth-first tree, in which paths to root represent shortest paths in G■ Thus can use BFS to calculate shortest path from

one vertex to another in O(V+E) time

Mudasser Naseer 51 04/21/23

Page 52: Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Properties of BFS

● Proposition: Let G be a graph with n vertices and m edges. A BFS traversal of G takes time O(n + m). Also, there exist O(n + m) time algorithms based on BFS for the following problems:■ Testing whether G is connected.■ Computing a spanning tree of G■ Computing the connected components of G■ Computing, for every vertex v of G, the minimum

number of edges of any path between s and v.

Mudasser Naseer 52 04/21/23