Graph Algorithm #1: Topological Sort, Exercises of Network Design

✦ Optimizing routing of packets on the internet: ➭ Vertices = routers, edges = network links with different delays. ➭ What is the routing path with smallest ...

Typology: Exercises

2022/2023

Uploaded on 05/11/2023

dewan
dewan 🇺🇸

4.6

(17)

253 documents

1 / 19

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
1
R. Rao, CSE 326
Lecture 20: Topo-Sort and Dijkstra’s Greedy Idea
Items on Today’s Lunch Menu:
Topological Sort (ver. 1 & 2): Gunning for linear time…
Finding Shortest Paths
Breadth-First Search
Dijkstra’s Method: Greed is good!
Covered in Chapter 9 in the textbook
Some slides based on: CSE 326 by S. Wolfman, 2000
2
R. Rao, CSE 326
Graph Algorithm #1: Topological Sort
321
143
142
322
326
341
370
378
401
421
Problem: Find an order in
which all these courses can
be taken.
Example: 142 143 378
370 321 341 322
326 421 401
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13

Partial preview of the text

Download Graph Algorithm #1: Topological Sort and more Exercises Network Design in PDF only on Docsity!

R. Rao, CSE 326 1

Lecture 20: Topo-Sort and Dijkstra’s Greedy Idea

✦ Items on Today’s Lunch Menu:

➭ Topological Sort (ver. 1 & 2): Gunning for linear time… ➭ Finding Shortest Paths ➧ Breadth-First Search ➧ Dijkstra’s Method: Greed is good!

✦ Covered in Chapter 9 in the textbook

Some slides based on: CSE 326 by S. Wolfman, 2000

Graph Algorithm #1: Topological Sort

(^143321)

142

322

326 (^370341)

378

401

421

Problem: Find an order in which all these courses can be taken. Example: 142 143 378 370 321 341 322 326 421 401

R. Rao, CSE 326 3

Topological Sort Definition

Topological sorting problem : given digraph G = ( V , E ) ,

find a linear ordering of vertices such that:

for all edges ( v , w ) in E , v precedes w in the ordering

A

B

C

F

D E

Topological Sort

Topological sorting problem: given digraph G = ( V , E ) ,

find a linear ordering of vertices such that:

for any edge ( v , w ) in E , v precedes w in the ordering

A

B

C

F

D E

A B F C D E

Any linear ordering in which all the arrows go to the right is a valid solution

R. Rao, CSE 326 7

Step 1: Identify vertices that have no incoming edge

  • If no such edges , graph has cycles (cyclic graph)

A

B

C

D

Topological Sort Algorithm

Example of a cyclic graph: No vertex of in-degree 0

Step 1: Identify vertices that have no incoming edges

  • Select one such vertex

A

B

C

F

D E

Topological Sort Algorithm

Select

R. Rao, CSE 326 9

A

B

C

F

D E

Topological Sort Algorithm

Step 2: Delete this vertex of in-degree 0 and all its

outgoing edges from the graph. Place it in the output.

A

B

C

F

D E

Topological Sort Algorithm

Repeat Steps 1 and Step 2 until graph is empty

Select

R. Rao, CSE 326 13

Topological Sort Algorithm

Repeat Steps 1 and Step 2 until graph is empty

A B F C D E

Final Result:

R. Rao, CSE 326 14

Summary of Topo-Sort Algorithm

  1. Store each vertex’s In- Degree (# of incoming edges) in an array
  2. While there are vertices remaining: ➭ Find a vertex with In-Degree zero and output it ➭ Reduce In-Degree of all vertices adjacent to it by 1 ➭ Mark this vertex (In- Degree = -1)

B D

E

D E

C

A B C D E F

In-Degree array

Adjacency list

A

B C

F

D E

R. Rao, CSE 326 15

For input graph G = ( V , E ), Run Time =?

Break down into total time required to: § Initialize In-Degree array: O(| E |) § Find vertex with in-degree 0: | V | vertices, each takes O(| V |) to search In-Degree array. Total time = O(| V | 2 ) § Reduce In-Degree of all vertices adjacent to a vertex: O(| E |) § Output and mark vertex: O(| V |) Total time = O(| V | 2 + | E |) Quadratic time!

Topological Sort Algorithm #1: Analysis

Can we do better than quadratic time?

Problem: Need a faster way to find vertices with in-degree 0 instead of searching through entire in-degree array

R. Rao, CSE 326 19

Topological Sort Algorithm

  1. Store each vertex’s In-Degree in an array
  2. Initialize a queue with all in-degree zero vertices
  3. While there are vertices remaining in the queue: ➭ Dequeue and output a vertex ➭ Reduce In-Degree of all vertices adjacent to it by 1 ➭ Enqueue any of these vertices whose In-Degree became zero

Sort this digraph!

A

B C

F

D E

For input graph G = ( V , E ), Run Time =?

Break down into total time to: Initialize In-Degree array: O(| E |) Initialize Queue with In-Degree 0 vertices: O(| V |) Dequeue and output vertex: | V | vertices, each takes only O(1) to dequeue and output. Total time = O(| V |) Reduce In-Degree of all vertices adjacent to a vertex and Enqueue any In-Degree 0 vertices: O(| E |) Total time = O(| V | + | E |) Linear running time!

Topological Sort Algorithm #2: Analysis

R. Rao, CSE 326 21

Paths

✦ Recall definition of a path in a tree – same for graphs ✦ A path is a list of vertices {v 1 , v 2 , …, v (^) n } such that (v (^) i , v (^) i+1 ) is in E for all 0 ≤≤≤≤ i < n.

Seattle

San Francisco Dallas

Chicago

Salt Lake City

Example of a path:

p = {Seattle, Salt Lake City, Chicago, Dallas, San Francisco, Seattle}

Simple Paths and Cycles

✦ A simple path repeats no vertices (except the 1 st^ can be the last): ➭ p = {Seattle, 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 ✦ A directed graph with no cycles is called a DAG (directed acyclic graph) E.g. All trees are DAGs ➭ A graph with cycles is often a drag…

R. Rao, CSE 326 25

Why study shortest path problems?

✦ Plenty of applications ✦ Traveling on a “starving student” budget : What is the cheapest multi-stop airline schedule from Seattle to city X? ✦ Optimizing routing of packets on the internet : ➭ Vertices = routers, edges = network links with different delays ➭ What is the routing path with smallest total delay?Hassle-free commuting : Finding what highways and roads to take to minimize total delay due to traffic ✦ Finding the fastest way to get to coffee vendors on campus from your classrooms

Unweighted Shortest Paths Problem

Problem: Given a “source” vertex s in an unweighted graph G = ( V , E ), find the shortest path from s to all vertices in G

A

C

B

D

F H

G

E

Find the shortest path from C to: A B C D E F G H

Source

R. Rao, CSE 326 27

Solution based on Breadth-First Search

✦ Basic Idea: Starting at node s, find vertices that can be reached using 0, 1, 2, 3, …, N-1 edges (works even for cyclic graphs!)

Find the shortest path from C to: A B C D E F G H

On-board example:

A

C

B

D

F H

G

E

Breadth-First Search (BFS) Algorithm

✦ Uses a queue to store vertices that need to be expanded

✦ Pseudocode (source vertex is s):

**1. Dist[s] = 0

  1. Enqueue(s)
  2. While queue is not empty** 1. X = dequeue 2. For each vertex Y adjacent to X and not previously visited $ Dist[Y] = Dist[X] + 1 $ Prev[Y] = X $ Enqueue Y

✦ Running time (same as topological sort) = O(| V | + | E |) (why?)

( Prev allows paths to be reconstructed)

R. Rao, CSE 326 31

Dijkstra to the rescue…

✦ Legendary figure in computer science ✦ Some rumors collected from previous classes…

✦ Rumor #1: Supported teaching introductory computer courses without computers (pencil and paper programming)

✦ Rumor #2: Supposedly wouldn’t read his e-mail; so, his staff had to print out his e-mails and put them in his mailbox

E. W. Dijkstra (1930-2002)

An Aside: Dijsktra on GOTOs

Opening sentence of: “ Go To Statement Considered Harmful ” by Edsger W. Dijkstra, Letter to the Editor, Communications of the ACM, Vol. 11, No. 3, March 1968, pp. 147-148.

“For a number of years I have been familiar

with the observation that the quality of

programmers is a decreasing function of the

density of go to statements in the programs

they produce.”

R. Rao, CSE 326 33

Dijkstra’s Algorithm for Weighted Shortest Path

✦ Classic algorithm for solving shortest path in weighted graphs (without negative weights)

✦ Example of a greedy algorithm ➭ Irrevocably makes decisions without considering future consequences ➭ Sound familiar? Not necessarily the best life strategy… but works in some cases (e.g. Huffman encoding)

Dijkstra’s Algorithm for Weighted Shortest Path

✦ Basic Idea: ➭ Similar to BFS ➧ Each vertex stores a cost for path from source ➧ Vertex to be expanded is the one with least path cost seen so far $ Greedy choice – always select current best vertex $ Update costs of all neighbors of selected vertex ➭ But unlike BFS, a vertex already visited may be updated if a better path to it is found

R. Rao, CSE 326 37

Dijkstra’s Algorithm (greed in action)

A

C

B

D (^) E

2

2

(^11) 9 3 8

3

Initial Final

E No ∞ -

D No ∞ -

C Yes 0 -

B No ∞ -

A No ∞ -

vertex known cost Prev

E Yes 2 C

D Yes 5 E

C Yes 0 -

B Yes 10 A

A Yes 8 D

vertex known cost Prev

Questions for Next Time:

Does Dijkstra’s method always work?

How fast does it run?

Where else in life can I be greedy?

To Do:

Start Homework Assignment

(Don’t wait until the last few days!!!)

Continue reading and enjoying chapter 9