Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

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)

254 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