- By
**lala** - Follow User

- 75 Views
- Uploaded on

Download Presentation
## PowerPoint Slideshow about 'Analysis of Algorithms CS 477/677' - lala

Download Now**An Image/Link below is provided (as is) to download presentation**

Download Now

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript

Graphs

- Applications that involve not only a set of items, but also the connections between them

Maps

Schedules

Computer networks

Hypertext

Circuits

CS 477/677 - Lecture 19

2

1

1

2

1

3

4

3

4

3

4

Graphs - BackgroundGraphs = a set of nodes (vertices) with edges (links) between them.

Notations:

- G = (V, E) - graph
- V = set of vertices V = n
- E = set of edges E = m

Directed

graph

Undirected

graph

Acyclic

graph

CS 477/677 - Lecture 19

1

3

4

2

1

2

1

9

4

8

6

3

3

4

7

4

Other Types of Graphs- A graph is connected if there is a path between every two vertices
- A bipartite graph is an undirected graph G = (V, E) in which V = V1 + V2 and there are edges only between vertices in V1 and V2

Connected

Not connected

CS 477/677 - Lecture 19

1

3

5

4

Graph Representation- Adjacency list representation of G = (V, E)
- An array of V lists, one for each vertex in V
- Each list Adj[u] contains all the vertices v such that there is an edge between u and v
- Adj[u] contains the vertices adjacent to u (in arbitrary order)
- Can be used for both directed and undirected graphs

1

2

3

4

5

Undirected graph

CS 477/677 - Lecture 19

1

2

1

3

5

4

3

4

Properties of Adjacency List Representation- Sum of the lengths of all the adjacency lists
- Directed graph:
- Edge (u, v) appears only once in u’s list
- Undirected graph:
- u and v appear in each other’s adjacency lists: edge (u, v) appears twice

Directed graph

E

2 E

Undirected graph

CS 477/677 - Lecture 19

1

2

1

3

5

4

3

4

Properties of Adjacency List Representation- Memory required
- (|V| + |E|)
- Preferred when
- the graph is sparse: E << V 2
- Disadvantage
- no quick way to determine whether there is an edge between node u and v
- Time to list all vertices adjacent to u:
- (degree(u))
- Time to determine if (u, v) E:
- O(degree(u))

Undirected graph

Directed graph

CS 477/677 - Lecture 19

1

0

1

0

0

1

1

1

1

2

1

0

1

0

1

0

3

1

0

1

0

1

5

4

1

1

0

0

1

Graph Representation- Adjacency matrix representation of G = (V, E)
- Assume vertices are numbered 1, 2, … V
- The representation consists of a matrix A V x V :
- aij = 1 if (i, j) E

0 otherwise

1

2

3

4

5

For undirected graphs matrix A is symmetric:

aij = aji

A = AT

1

2

3

4

Undirected graph

5

CS 477/677 - Lecture 19

Properties of Adjacency Matrix Representation

- Memory required
- (|V|2), independent on the number of edges in G
- Preferred when
- The graph is dense: E is close to V 2
- We need to quickly determine if there is an edge between two vertices
- Time to list all vertices adjacent to u:
- (|V|)
- Time to determine if (u, v) E:
- (1)

CS 477/677 - Lecture 19

Weighted Graphs

- Weighted graphs = graphs for which each edge has an associated weight w(u, v)

w:E R, weight function

- Storing the weights of a graph
- Adjacency list:
- Store w(u,v) along with vertex v in u’s adjacency list
- Adjacency matrix:
- Store w(u, v) at location (u, v) in the matrix

CS 477/677 - Lecture 19

Searching in a Graph

- Graph searching = systematically follow the edges of the graph so as to visit the vertices of the graph
- Two basic graph searching algorithms:
- Breadth-first search
- Depth-first search
- The difference between them is in the order in which they explore the unvisited edges of the graph
- Graph algorithms are typically elaborations of the basic graph-searching algorithms

CS 477/677 - Lecture 19

Breadth-First Search (BFS)

- Input:
- A graph G = (V, E) (directed or undirected)
- A source vertex s V
- Goal:
- Explore the edges of G to “discover” every vertex reachable from s, taking the ones closest to s first
- Output:
- d[v] = distance (smallest # of edges) from s to v, for all v V
- A “breadth-first tree” rooted at s that contains all reachable vertices

CS 477/677 - Lecture 19

2

2

1

1

1

3

3

3

5

5

5

4

4

4

Breadth-First Search (cont.)- Keeping track of progress:
- Color each vertex in either white, gray or black
- Initially, all vertices are white
- When being discovered a vertex becomes gray
- After discovering all its adjacent vertices the node becomes black
- Use FIFO queue Q to maintain the set of gray vertices

source

CS 477/677 - Lecture 19

1

3

5

4

Breadth-First Tree- BFS constructs a breadth-first tree
- Initially contains the root (source vertex s)
- When vertex v is discovered while scanning the adjacency list of a vertex u vertex v and edge (u, v) are added to the tree
- u is the predecessor (parent) of v in the breadth-first tree
- A vertex is discovered only once it has only one parent

source

CS 477/677 - Lecture 19

1

3

5

4

BFS Additional Data Structures- G = (V, E) represented using adjacency lists
- color[u] – the color of the vertex for all u V
- [u] – predecessor of u
- If u = s (root) or node u has not yet been discovered [u] = NIL
- d[u] – the distance from the source s to vertex u
- Use a FIFO queue Q to maintain the set of gray vertices

source

d=1

=1

d=2

=2

d=1

=1

d=2

=5

CS 477/677 - Lecture 19

r

r

s

s

s

t

t

t

u

u

u

0

v

v

v

w

w

w

x

x

x

y

y

y

BFS(V, E, s)- for each u V - {s}
- docolor[u] WHITE
- d[u] ←
- [u] = NIL
- color[s] GRAY
- d[s] ← 0
- [s] = NIL
- Q
- Q ← ENQUEUE(Q, s)

Q: s

CS 477/677 - Lecture 19

s

t

u

r

r

s

s

t

t

u

u

0

1

0

0

1

1

v

w

x

y

v

v

w

w

x

x

y

y

BFS(V, E, s)- while Q
- do u ← DEQUEUE(Q)
- for each v Adj[u]
- do if color[v] = WHITE
- thencolor[v] = GRAY
- d[v] ← d[u] + 1
- [v] = u
- ENQUEUE(Q, v)
- color[u] BLACK

Q: s

Q: w

Q: w, r

CS 477/677 - Lecture 19

Analysis of BFS

- for each u V - {s}
- do color[u] WHITE
- d[u] ←
- [u] = NIL
- color[s] GRAY
- d[s] ← 0
- [s] = NIL
- Q
- Q ← ENQUEUE(Q, s)

O(|V|)

(1)

CS 477/677 - Lecture 19

Scan Adj[u] for all vertices u in the graph

- Each vertex u is processed only once, when the vertex is dequeued
- Sum of lengths of all adjacency lists = (|E|)
- Scanning operations: O(|E|)

- while Q
- do u ← DEQUEUE(Q)
- for each v Adj[u]
- do if color[v] = WHITE
- thencolor[v] = GRAY
- d[v] ← d[u] + 1
- [v] = u
- ENQUEUE(Q, v)
- color[u] BLACK

- Total running time for BFS = O(|V| + |E|)

(1)

(1)

CS 477/677 - Lecture 19

s

t

u

1

0

2

3

2

1

2

3

v

w

x

y

Shortest Paths Property- BFS finds the shortest-path distance from the source vertex s V to each node in the graph
- Shortest-path distance = (s, u)
- Minimum number of edges in any path from s to u

source

CS 477/677 - Lecture 19

1

3

5

4

Depth-First Search- Input:
- G = (V, E) (No source vertex given!)
- Goal:
- Explore the edges of G to “discover” every vertex in V starting at the most current visited node
- Search may be repeated from multiple sources
- Output:
- 2 timestamps on each vertex:
- d[v] = discovery time
- f[v] = finishing time (done with examining v’s adjacency list)
- Depth-first forest

CS 477/677 - Lecture 19

1

3

5

4

Depth-First Search- Search “deeper” in the graph whenever possible
- Edges are explored out of the most recently discovered vertex v that still has unexplored edges

- After all edges of v have been explored, the search “backtracks” from the parent of v
- The process continues until all vertices reachable from the original source have been discovered
- If undiscovered vertices remain, choose one of them as a new source and repeat the search from that vertex
- DFS creates a “depth-first forest”

CS 477/677 - Lecture 19

GRAY

BLACK

WHITE

0

d[u]

f[u]

2|V|

DFS Additional Data Structures- Global variable: time-step
- Incremented when nodes are discovered/finished
- color[u] – similar to BFS
- White before discovery, gray while processing and black when finished processing
- [u] – predecessor of u
- d[u], f[u] – discovery and finish times

CS 477/677 - Lecture 19

v

w

u

u

v

v

w

w

1/

2/

1/

x

y

z

x

x

y

y

z

z

DFS-VISIT(u)- color[u] ← GRAY
- time ← time+1
- d[u] ← time
- for each v Adj[u]
- do if color[v] = WHITE
- then [v] ← u
- DFS-VISIT(v)
- color[u] ← BLACK
- time ← time + 1
- f[u] ← time

time = 1

CS 477/677 - Lecture 19

u

u

u

u

u

u

v

v

v

v

v

v

v

w

w

w

w

w

w

w

1/8

1/8

1/8

1/8

1/8

1/8

1/8

2/7

2/7

2/7

2/7

2/7

2/7

2/7

9/

9/

9/12

9/

9/

9/

C

C

C

C

C

4/5

4/5

4/5

4/5

4/5

4/5

4/5

3/6

3/6

3/6

3/6

3/6

3/6

3/6

10/

10/11

10/11

10/

x

x

x

x

x

x

x

y

y

y

y

y

y

y

z

z

z

z

z

z

z

B

B

B

B

B

B

B

B

B

B

F

F

F

F

F

F

F

Example (cont.)- The results of DFS may depend on:
- The order in which nodes are explored in procedure DFS
- The order in which the neighbors of a vertex are visited in DFS-VISIT

CS 477/677 - Lecture 19

v

w

u

v

w

1/

1/

2/

4/

3/

x

y

z

x

y

z

B

Edge Classification- Tree edge (reaches a WHITE vertex):
- (u, v) is a tree edge if v was first discovered by exploring edge (u, v)
- Back edge (reaches a GRAY vertex):
- (u, v), connecting a vertex u to an ancestor v in a depth first tree
- Self loops (in directed graphs) are also back edges

CS 477/677 - Lecture 19

u

v

v

w

w

1/8

1/

2/7

2/7

9/

C

4/5

4/5

3/6

3/6

x

x

y

y

z

z

B

B

F

F

Edge Classification- Forward edge (reaches a BLACK vertex & d[u] < d[v]):
- Non-tree edge (u, v) that connects a vertex u to a descendant v in a depth first tree
- Cross edge (reaches a BLACK vertex & d[u] > d[v]):
- Can go between vertices in same depth-first tree (as long as there is no ancestor / descendant relation) or between different depth-first trees

CS 477/677 - Lecture 19

(|V|) – without counting the time for

DFS-VISIT

Analysis of DFS(V, E)- for each u V
- do color[u] ← WHITE
- [u] ← NIL
- time ← 0
- for each u V
- do if color[u] = WHITE
- then DFS-VISIT(u)

CS 477/677 - Lecture 19

|Adj[u]|

(|E|)

Analysis of DFS-VISIT(u)- color[u] ← GRAY
- time ← time+1
- d[u] ← time
- for each v Adj[u]
- do if color[v] = WHITE
- then [v] ← u
- DFS-VISIT(v)
- color[u] ← BLACK
- time ← time + 1
- f[u] ← time

DFS-VISIT is called exactly once for each vertex

Total: ΣuV|Adj[u]| + (|V|) =

= (|V| + |E|)

CS 477/677 - Lecture 19

v

w

1/

2/

3/

x

y

z

Properties of DFS- u = [v] DFS-VISIT(v) was called during a search of u’s adjacency list
- Vertex v is a descendant of vertex u in the depth first forest v is discovered during the time in which u is gray

CS 477/677 - Lecture 19

Parenthesis Theorem

y

z

s

t

In any DFS of a graph G, for all u, v, exactly one of the following holds:

- [d[u], f[u]] and [d[v], f[v]] are disjoint, and neither of u and v is a descendant of the other
- [d[v], f[v]] is entirely within [d[u], f[u]] and v is a descendant of u
- [d[u], f[u]] is entirely within [d[v], f[v]] and u is a descendant of v

3/6

2/9

1/10

11/16

4/5

7/8

12/13

14/15

x

w

v

u

s

t

v

z

u

w

y

x

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

(s

(z

(y

(x

x)

y)

(w

w)

z)

s)

(t

(v

v)

(u

u)

t)

Well-formed expression: parenthesis are

properly nested

CS 477/677 - Lecture 19

u

1/

1/8

2/

2/7

9/12

C

4/5

3/6

10/11

v

v

B

B

F

Other Properties of DFSCorollary

Vertex v is a proper descendant of u

d[u] < d[v] < f[v] < f[u]

Theorem (White-path Theorem)

In a depth-first forest of a graph G, vertex v is a descendant of u if and only if at time d[u], there is a path u v consisting of only white vertices.

CS 477/677 - Lecture 19

Topological Sort

Topological sort of a directed acyclic graph G = (V, E): a linear order of vertices such that if there exists an edge (u, v), then u appears before v in the ordering.

- Directed acyclic graphs (DAGs)
- Used to represent precedence of events or processes that have a partial order

a before bb before c

b before c a before c

What about

a and b?

a before c

Topological sort helps us establish a total order

CS 477/677 - Lecture 19

undershorts

pants

shoes

watch

shirt

belt

tie

jacket

Topological Sortundershorts

socks

Topological sort:

an ordering of vertices along a

horizontal line so that all directed

edges go from left to right.

pants

shoes

shirt

belt

watch

tie

jacket

CS 477/677 - Lecture 19

Topological Sort

- TOPOLOGICAL-SORT(V, E)
- Call DFS(V, E) to compute finishing times f[v] for each vertex v
- When each vertex is finished, insert it onto the front of a linked list
- Return the linked list of vertices

undershorts

11/

16

17/

18

socks

15

12/

pants

shoes

13/

14

1/

8

shirt

6/

7

belt

watch

9/

10

tie

2/

5

jacket

3/

4

socks

undershorts

pants

shoes

watch

shirt

belt

tie

jacket

Running time: (|V| + |E|)

CS 477/677 - Lecture 19

Download Presentation

Connecting to Server..