ece-250 course slides -- topological sortcmoreno/ece250/2012-03-16--topological-s… · topological...
TRANSCRIPT
![Page 1: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/1.jpg)
Topological sort
Carlos Moreno cmoreno @ uwaterloo.ca
EIT-4103
https://ece.uwaterloo.ca/~cmoreno/ece250
![Page 2: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/2.jpg)
Topological sort
Standard reminder to set phones to silent/vibrate mode, please!
![Page 3: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/3.jpg)
Topological sort
● During today's class, we will:● Look at Topological sort, a common and useful
operation with Directed Acyclic Graphs (DAGs)● Discuss an algorithm to implement this operation.● Briefly talk about some of its applications.
![Page 4: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/4.jpg)
Topological sort
● The basic idea of a topological sort is the following:● Given a DAG, in which we could see adjacencies
as representing a pre-requisite task, we want to place the vertices in sequence.
● The sequence must be one in which all dependencies on pre-requisites are satisfied.
● Such a sequential arrangement of the vertices is called a topological sort of the DAG.
![Page 5: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/5.jpg)
Topological sort
● A simple and obvious application is:● We have a DAG where vertices are tasks that we
want to perform (e.g., part of a compiler's code generation subsystem).
● We need to execute all the tasks, but we can only do one at a time.
● A topological sort gives a valid sequence of executed tasks — no task can proceed until all pre requisite tasks have completed.‑
![Page 6: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/6.jpg)
Topological sort
● Formally, we would define a topological sort as follows:● Let be a DAG, with G = (V , E ) V = {v1 , v2 , ⋯ , vn−1 , vn}
![Page 7: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/7.jpg)
Topological sort
● Formally, we would define a topological sort as follows:● Let be a DAG, with
● Then, a topological sort is a sequence containing all the elements in V, such that for all i, j ( ), if there exists a path from to , then i < j.
G = (V , E ) V = {v1 , v2 , ⋯ , vn−1 , vn}
{v k 1, v k 2
, ⋯ , v k n−1v k n}
0 ⩽ i , j ⩽ nv k i v k j
![Page 8: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/8.jpg)
Topological sort
● Formally, we would define a topological sort as follows:● Let be a DAG, with
● Then, a topological sort is a sequence containing all the elements in V, such that for all i, j ( ), if there exists a path from to , then i < j.
– Simply put, if there is a path from vertex v to vertex w,
then v appears before w in the output sequence.
G = (V , E ) V = {v1 , v2 , ⋯ , vn−1 , vn}
{v k 1, v k 2
, ⋯ , v k n−1v k n}
0 ⩽ i , j ⩽ nv k i v k j
![Page 9: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/9.jpg)
Topological sort
● Question: why is the notion specific to DAGs?
![Page 10: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/10.jpg)
Topological sort
● Question: why is the notion specific to DAGs?● Let's have xkcd answer that question for us,
pointing out that cycles in dependencies can be problematic:
![Page 11: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/11.jpg)
Topological sort
● Question: why is the notion specific to DAGs?● Let's have xkcd answer that question for us,
pointing out that cycles in dependencies can be problematic:
http://xkcd.com/754/
![Page 12: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/12.jpg)
Topological sort
● In fact, let's look at (and prove) this interesting fact:● A directed graph is a DAG if and only if it has a
topological sort.
![Page 13: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/13.jpg)
Topological sort
● In fact, let's look at (and prove) this interesting fact:● A directed graph is a DAG if and only if it has a
topological sort.● Proof:
We observe that there are two independent statements to prove:– A DAG has a topological sort– If a directed graph has a topological sort, then it is a DAG
![Page 14: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/14.jpg)
Topological sort
● In fact, let's look at (and prove) this interesting fact:● A directed graph is a DAG if and only if it has a
topological sort.● Proof:
We observe that there are two independent statements to prove:– A DAG has a topological sort– If a directed graph has a topological sort, then it is a DAG
● (this is a normal aspect of if-and-only-if statements; proving them is really proving two statements)
![Page 15: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/15.jpg)
Topological sort
● Let's start with the easy one:● If a graph has a topological sort, then it is a DAG.● Proof: (by contrapositive — that is, we prove the
statement “if a graph is not a DAG, it can not have a topological sort”)
![Page 16: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/16.jpg)
Topological sort
● Let's start with the easy one:● If a graph has a topological sort, then it is a DAG.● Proof: (by contrapositive — that is, we prove the
statement “if a graph is not a DAG, it can not have a topological sort”)
Assuming the graph is not a DAG means that we can find a cycle, say
Since there is a path from v1 to v2, then v1 must
appear before v2 in a topological sort.
But there is also a path from v2 to v1, so v2 must
appear before v1 in a topological sort.
{v1 , v2 , ⋯ , v k , v1}
![Page 17: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/17.jpg)
Topological sort
We can not satisfy both conditions; therefore, the graph can not have a topological sort.
![Page 18: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/18.jpg)
Topological sort
● For the other part, we prove by induction (on the number of vertices) that if a graph is a DAG, then it has a topological sort.
![Page 19: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/19.jpg)
Topological sort
● For the other part, we prove by induction (on the number of vertices) that if a graph is a DAG, then it has a topological sort.● Base case: A graph with one vertex is a
DAG, and it has a topological sort.
![Page 20: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/20.jpg)
Topological sort
● For the other part, we prove by induction (on the number of vertices) that if a graph is a DAG, then it has a topological sort.● Base case: A graph with one vertex is a
DAG, and it has a topological sort.● Induction hypothesis: A DAG with n vertices
has a topological sort.
![Page 21: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/21.jpg)
Topological sort
● For the other part, we prove by induction (on the number of vertices) that if a graph is a DAG, then it has a topological sort.● Base case: A graph with one vertex is a
DAG, and it has a topological sort.● Induction hypothesis: A DAG with n vertices
has a topological sort.● For the induction step, we must show that the
induction hypothesis implies that a DAG with n+1 vertices must have a topological sort.
![Page 22: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/22.jpg)
Topological sort
● Consider a graph with n+1 vertices.● Such a graph must have at least one vertex v0 with
in degree 0 (can you prove this?).‑
![Page 23: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/23.jpg)
Topological sort
● Consider a graph with n+1 vertices.● Such a graph must have at least one vertex v0 with
in degree 0 (can you prove this?).‑● Remove that vertex to obtain a graph with n
vertices.– Since the original graph had no cycles and we are
removing edges (not adding), then the resulting graph must be a DAG.
– By induction hypothesis, since it is a DAG with n vertices, then it has a topological sort.
![Page 24: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/24.jpg)
Topological sort
● Consider a graph with n+1 vertices.● Thus, a topological sort can be constructed for the
n+1 vertices DAG, by prepending v0 to the topological sort of the n vertices DAG.‑
(we can definitely do that, since v0 has in-degree 0, so no path exists from any other vertex to v0, and this means that it can appear before any other vertex)
![Page 25: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/25.jpg)
Topological sort
● A somewhat more “obvious” observation:● A topological sort is not necessarily unique.
– There's one very solid argument to this in the previous proof ... anyone?
![Page 26: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/26.jpg)
Topological sort
● A somewhat more “obvious” observation:● A topological sort is not necessarily unique.
– There's one very solid argument to this in the previous proof ... anyone?
– For one, there may be several vertices with in-degree 0, and either one of them can be the first one in a topological sort.
![Page 27: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/27.jpg)
Topological sort
● Next, let's look at an algorithm to obtain a topological sort given a DAG.● The idea is that any vertex with in-degree 0 can be
the first one in a topological sort.● We can look at it as follows: each time that we
output one of those in-degree 0 vertices, we remove it from the graph.– That would in turn lead to creating additional vertices with
in degree 0, which we can now output.‑
![Page 28: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/28.jpg)
Topological sort
● An example:● There's only one vertex with in-degree 0 (vertex 1),
so we start with that one (and think of it as removed from the graph):
![Page 29: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/29.jpg)
Topological sort
● An example:● As we “remove” 1, now 2 and 3 have in-degree 0,
so the topological sort could continue with either one of these — we'll choose 2:
1
![Page 30: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/30.jpg)
Topological sort
● An example:● Without 2, now 4 and 5 have in-degree 0, so the
topological sort could continue with either 3, 4, or 5 — we'll choose 4:
1, 2
![Page 31: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/31.jpg)
Topological sort
● An example:● We continue ...
1, 2, 4
![Page 32: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/32.jpg)
Topological sort
● An example:● We continue ...
1, 2, 4, 8
![Page 33: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/33.jpg)
Topological sort
● An example:● We continue ...
1, 2, 4, 8, 5
![Page 34: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/34.jpg)
Topological sort
● An example:● We continue ...
1, 2, 4, 8, 5, 9
![Page 35: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/35.jpg)
Topological sort
● An example:● We continue ...
1, 2, 4, 8, 5, 9, 11
![Page 36: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/36.jpg)
Topological sort
● An example:● We continue ...
1, 2, 4, 8, 5, 9, 11, 3
![Page 37: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/37.jpg)
Topological sort
● An example:● We continue ...
1, 2, 4, 8, 5, 9, 11, 3 ··· etc.
![Page 38: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/38.jpg)
Topological sort
● An example:● At this point, the output is complete.
1, 2, 4, 8, 5, 9, 11, 3, 6, 10, 7, 12, 13
![Page 39: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/39.jpg)
Topological sort
● The fact that a topological sort is not unique should have become quite clear from this example — anyone?
![Page 40: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/40.jpg)
Topological sort
● The fact that a topological sort is not unique should have become quite clear from this example — anyone?● At several points in the process, we had to choose
one among several equally valid candidates; different choices would have produced different topological sorts.
![Page 41: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/41.jpg)
Topological sort
● A typical implementation uses an array of in degrees, and optionally a queue (for ‑efficiency)
![Page 42: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/42.jpg)
Topological sort
● A typical implementation uses an array of in degrees, and optionally a queue (for ‑efficiency)● We start by initializing the table of in-degrees (how
do we do this efficiently? A single pass through the list of vertices, perhaps?)
![Page 43: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/43.jpg)
Topological sort
● A typical implementation uses an array of in degrees, and optionally a queue (for ‑efficiency)● We start by initializing the table of in-degrees (how
do we do this efficiently? A single pass through the list of vertices, perhaps?)– And BTW, why the big deal with doing this efficiently??
How would we do it inefficiently?
![Page 44: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/44.jpg)
Topological sort
● Obtaining the in-degrees of every vertex inefficiently is quite easy — for each vertex, determine its in-degree by visiting every other vertex to count how many this vertex is adjacent to (quadratic run time).
![Page 45: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/45.jpg)
Topological sort
● A more reasonable approach is: initialize all in degrees in the array to 0. Visit each vertex, ‑and increase by 1 the in-degree of each of the vertices that are adjacent to the one being visited.● What's the run time of this?
![Page 46: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/46.jpg)
Topological sort
● A more reasonable approach is: initialize all in degrees in the array to 0. Visit each vertex, ‑and increase by 1 the in-degree of each of the vertices that are adjacent to the one being visited.● What's the run time of this?
● Would you agree if I said it is ?Θ(∣V∣+∣E∣)
![Page 47: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/47.jpg)
Topological sort
● A more reasonable approach is: initialize all in degrees in the array to 0. Visit each vertex, ‑and increase by 1 the in-degree of each of the vertices that are adjacent to the one being visited.● What's the run time of this?
● Would you agree if I said it is ?● In fact, we'll see that this is the run time for the
topological sort (i.e., for the whole procedure)
Θ(∣V∣+∣E∣)
![Page 48: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/48.jpg)
Topological sort
● Let's look at an example, directly from Prof. Harder's slides.
![Page 49: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/49.jpg)
Topological Sort
49
Example
Consider the following DAG with six vertices
![Page 50: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/50.jpg)
Topological Sort
50
Example
Let us define the table of in-degrees(or more likely, copy it)
Vertex In-degree
1 0
2 1
3 3
4 3
5 2
6 0
![Page 51: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/51.jpg)
Topological Sort
51
Example
And a queue into which we can insert vertices 1 and 6
1 6
Queue
Vertex In-degree
1 0
2 1
3 3
4 3
5 2
6 0
![Page 52: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/52.jpg)
Topological Sort
52
Example
We dequeue the head (1), decrement the in-degree of all adjacent vertices: 2 and 4– 2 is decremented to zero: enqueue 2
6 2
QueueSort
1
Vertex In-degree
1 0
2 0
3 3
4 2
5 2
6 0
![Page 53: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/53.jpg)
Topological Sort
53
Example
We dequeue 6 and decrement the in-degree of all adjacent vertices– Neither is decremented to zero
2
QueueSort1, 6
Vertex In-degree
1 0
2 0
3 2
4 2
5 1
6 0
![Page 54: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/54.jpg)
Topological Sort
54
Example
We dequeue 2, decrement, and enqueue vertex 5
5
QueueSort1, 6, 2
Vertex In-degree
1 0
2 0
3 1
4 1
5 0
6 0
![Page 55: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/55.jpg)
Topological Sort
55
Example
We dequeue 5, decrement, and enqueue vertex 3
3
QueueSort1, 6, 2, 5
Vertex In-degree
1 0
2 0
3 0
4 1
5 0
6 0
![Page 56: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/56.jpg)
Topological Sort
56
Example
We dequeue 3, decrement 4, and add 4 to the queue
4
QueueSort1, 6, 2, 5, 3
Vertex In-degree
1 0
2 0
3 0
4 0
5 0
6 0
![Page 57: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/57.jpg)
Topological Sort
57
Example
We dequeue 4, there are no adjacent vertices to decrement the in degree
QueueSort1, 6, 2, 5, 3, 4
Vertex In-degree
1 0
2 0
3 0
4 0
5 0
6 0
![Page 58: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/58.jpg)
Topological Sort
58
Example
The queue is now empty, so a topological sort is
1, 6, 2, 5, 3, 4
![Page 59: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/59.jpg)
Topological sort
● And BTW ... How do we implement the graph itself?
![Page 60: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/60.jpg)
Topological sort
● And BTW ... How do we implement the graph itself?● We typically don't go for a tree-like implementation
of a node:– Too much overhead: Potentially very large number of
associations, but actual graphs tend to contain a small fraction of that maximum.
![Page 61: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/61.jpg)
Topological sort
● And BTW ... How do we implement the graph itself?● Two typical approaches are:
– Adjacency lists– Adjacency matrix
![Page 62: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/62.jpg)
Topological sort
● With adjacency lists, vertices are associated with a number between 0 and
● An array of adjacencies is defined — each element of the array is a list (either a dynamic array or a linked list) of the vertices adjacent to the vertex corresponding to that subscript.
∣V∣−1
![Page 63: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/63.jpg)
Topological sort
● Ajacency list — example:
V = {1, 2,3, 4,5,6}E = {(1,2) ,(1,4) ,(2,3) ,(2,4) ,(2,5) ,(3,4) ,(5,3) ,(6,3) ,(6,5)}
![Page 64: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/64.jpg)
Topological sort
● Ajacency list — example:
Representation:
V = {1, 2,3, 4,5,6}E = {(1,2) ,(1,4) ,(2,3) ,(2,4) ,(2,5) ,(3,4) ,(5,3) ,(6,3) ,(6,5)}
0
1
2
3
4
5
6
2 4
3 4 5
4
3
3 5
![Page 65: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/65.jpg)
Topological sort
● With an adjacency matrix, as the name suggests, we define a array of booleans (if unweighted graph) or doubles (if weighted graph) where element at [row][col] indicates whether vertex col is adjacent to vertex row.
∣V∣×∣V∣
![Page 66: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/66.jpg)
Topological sort
● Adjacency list vs. Adjacency matrix — which approach is better?
![Page 67: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/67.jpg)
Topological sort
● Adjacency list vs. Adjacency matrix — which approach is better?● Not surprisingly, it depends on the situation:
– If there are very few edges, then the adjacency matrix is inefficient in memory usage.
– However, if there are many edges, then the extra complexity in the adjacency list is not justified.
![Page 68: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/68.jpg)
Topological sort
● Adjacency list vs. Adjacency matrix — which approach is better?● Not surprisingly, it depends on the situation:
– If there are very few edges, then the adjacency matrix is inefficient in memory usage.
– However, if there are many edges, then the extra complexity in the adjacency list is not justified.
– With an adjacency list, we can efficiently iterate over all the adjacent vertices (why not with an adjacency matrix?)
– However, with an adjacency matrix we can determine in Θ(1) whether two given vertices are adjacent.
![Page 69: ECE-250 Course Slides -- Topological sortcmoreno/ece250/2012-03-16--topological-s… · Topological sort During today's class, we will: Look at Topological sort, a common and useful](https://reader034.vdocuments.site/reader034/viewer/2022042419/5f367093fe1fca19665742f4/html5/thumbnails/69.jpg)
Summary
● During today's class, we:● Looked at Topological sort for Directed Acyclic
Graphs (DAGs)● Presented an algorithm to implement this operation.● Saw some of its applications.● Briefly looked into implementation strategies:
– Adjacency list– Adjacency matrix