compsci220 – algorithms and data structures€¦ · • don't be shy to approach me, but try...
TRANSCRIPT
![Page 2: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/2.jpg)
A bit about myself• I'm a physicst by training and didn't "become" a computer
scientist until my PhD
• Have taught in this department since 2000
• Have been involved in a wide variety of courses ranging from application development, data communication, Internet programming and introductory programming to computer architecture
• I'm quite an approachable person & you can find me in my office (303S.594)
2
![Page 3: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/3.jpg)
Why I teach this course• My research is in a variety of fields, including applied ones. What we do here mixes
into most of these.
• E.g.: I have an interest in variable‐length codes in data communication. Such codes are often visualised as trees, and digraphs turn up all over the place in coding and communication – even in web programming.
• E.g.: One of the most important algorithms I've developed works in O(n log n) as opposed to its predecessor's O(n2) – thanks to a complex but highly efficient data structure.
• E.g., algorithms such as Dijkstra's or Floyd's which you'll meet in part 3 of 220 are of fundamental importance in data networks – but not just there.
• I don't like theory for its own sake. I like it because it ever so often really helps me in the practical side of what I do. And because of that, I ever so often feel obliged to give something back.
3
![Page 4: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/4.jpg)
Communication with me• Don't be shy to approach me, but try and make life easier for all of us
• Put "COMPSCI220" in the subject of your e‐mail on a question that relates to COMPSCI220
• Try to be as concise as possible in your question. It doesn't need to be as short as a text message. It helps if you refer to slide numbers, assignment questions, etc.
• I may anonymise your question and cc the rest of the class into my answer if I think it's of interest to others. Check and keep your e‐mail – it'll often already contain the answer you're looking for.
• Note that around assignment due dates, tests and exams, I often get lots of questions by e‐mail. Checking your past class e‐mail is often a faster way to get an answer!
• Get in early and don't wait to the last minute if you need help.
4
![Page 5: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/5.jpg)
Course overview
• This part of the course has 11 lectures
• If there is demand, I'll give an extra lecture / tutorial / review at the end
5
![Page 6: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/6.jpg)
Preliminaries
• The following material has probably been covered by Nevil Brownlee
• I’m including my old slides here just in case we need to look back to a concept or in case something we need wasn’t covered
6
![Page 7: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/7.jpg)
Graphs• A graph G consists of two sets V and E.
• V is the set of vertices (also called nodes). A vertex (not "vertice"!) is often graphically displayed as a point or junction point (like the seven little circles on the right).
• E is the set of edges. Each edge connects two vertices uand v in V. Edges have no direction – they equally go from u to v and from v to u. We denote an edge as (u,v) with the understanding that (u,v)=(v,u). The graph on the right contains eight edges (the black lines).
• If two vertices u and v are connected by an egde, they are said to be adjacent. We also say that u is a neighbour of v.
• It is not uncommon to number the vertices or otherwise label them uniquely. This is then called a labelled graph.
7 3
1 4
6
2
5
7
![Page 8: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/8.jpg)
Graphs ‐ remarks
• We also write G(V, E) for the graph itself, or E(G) for the edges, or V(G)for the vertices.
• Note: not every vertex of a graph needs to have an edge attached; not every pair of vertices needs to be connected by an edge, and it's perfectly OK to have a graph with many vertices but no edges at all!
7 3
1 4
6
2
5
This is one graph
8
![Page 9: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/9.jpg)
Order and size of a graph
• The order of a graph G is the number of its vertices: |V(G)|
• The size of a graph G is the number of its edges: |E(G)|
• Remember that |X| denotes the number of elements of a set X.
7 3
1 4
6
2
5
In this example:|V(G)| = 7|E(G)| = 8
9
![Page 10: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/10.jpg)
Real‐life examples of graphs
• Computer networks
• Street networks (with two‐way streets only)
• Airline route networks (as long as the planes fly both ways on each route)
10
![Page 11: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/11.jpg)
How many edges can a graph have?
• Observation 1: At most one edge per pair of different vertices.
• Observation 2: There are |V(G)| (|V(G)| -1)possible such vertex pairs (u,v), but there can be only one such edge for (u,v) and (v,u).
• So we need to divide this number by two:
• 0 ≤ |E(G)| ≤ |V(G)| (|V(G)| -1)/2.
11
![Page 12: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/12.jpg)
Sparse and dense graphs• If |E(G)| approaches the high end of the scale 0 ≤ |E(G)| ≤
|V(G)| (|V(G)| -1)/2, we say that the graph is dense
• If |E(G)| approaches the low end of the scale 0 ≤ |E(G)| ≤ |V(G)| (|V(G)| -1)/2, we say that the graph is sparse
• Knowing whether a graph that we are dealing with is dense or sparse makes a difference in how it is best stored when space efficiency is important.
• There is no defined boundary between when we would call a graph sparse or dense – but the criterion of storage could help us decide if we wanted such a criterion.
12
![Page 13: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/13.jpg)
Sparse and dense graphs
7
3
14
6
2
57
3
14
6
2
5
A sparse graph (2 out of 21 possible edges)
Generally more efficient to store edges by recording betweenwhich vertices they occur
A dense graph (16 out of 21 possible edges)
Generally more efficient to store edges by listing vertex pairs and recording between which pairs there are edges
13
![Page 14: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/14.jpg)
The degree of a vertex in a graph• The degree of a vertex v is the number of edges that terminate in this vertex
• Observation 1: The number of edges is the sum of the degrees of all vertices divide by 2 (Why? Every edge has two endpoints!)
• Observation 2: In sparse graphs, the nodes tend to have a lower degree than in dense graphs.
7
3
14
6
2
5Node 1: degree 5Node 2: degree 4Node 3: degree 5Node 4: degree 4Node 5: degree 4Node 6: degree 5Node 7: degree 5
14
![Page 15: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/15.jpg)
A sense of direction: di(rected) graphs
• In a directed graph (or digraph for short), we replace the set E of edges by a set E of arcs.
• The difference between an edge and an arc is that an arc has a direction: an edge runs between two vertices u and v, an arc runs from a vertex u to a vertex v.
• The textbook draws arcs as arrows – the fact that we draws it curved allows us to have arcs between two vertices in both directions. We use double‐headed arrows here to indicate that two vertices are connected by arcs in both directions (LLDS1)
• This also requires us to extend and amend our previous definitions and terminology a little. 1 Lazy Lecturer Drawing Syndrome
7 3
1 4
6
2
5
15
![Page 16: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/16.jpg)
There goes the neighbourhood…• In a directed graph, we now have two
sorts of neighbours:
• A neighbour v of u is an out‐neighbourof u if there is an arc from u to v.
• A neighbour v of u is an in‐neighbour of u if there is an arc from v to u.
• Similarly, there are two sorts of degrees now: the out‐degree (number of out‐neighbours) and the in‐degree (number of in‐neighbours).
• Obviously, now (u,v)≠(v,u).
• Size of a digraph = number of arcs
7 3
1 4
6
2
5
E.g.: • 1 is an out‐neighbour of 5• 2 is an in‐neighbour of 6• 2 is an in‐neighbour and out‐neighbour of 4 (and vice versa)• 7 has in‐degree 0 and out‐degree 3• 4 has in‐degree 3 and out‐degree 3• Size is 10
16
![Page 17: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/17.jpg)
Sources and sinks…• A vertex with in‐degree 0 is called a
source (all arcs "flow out" from the vertex).
• A vertex with out‐degree 0 is called a sink (all arcs "flow into" the vertex).
7 3
1 4
6
2
5
• 1 and 6 are sinks• 5 and 7 are sources• The other nodes are neither sinks nor sources
17
![Page 18: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/18.jpg)
Going for a walk…• A walk is a sequence of
vertices v0, v1,… , vl, such that (vi,vi+1) is an arc in Efor 0≤ i <l.
• A walk can pass by the same vertex twice, i.e., vi= vj is possible even for i≠j.
• The length of the walk is l. This is the number of arcs involved.
7
3
1
4
6
25
E.g., 4 5 6 4 3 1 2 3 1 7 2 is a walk
18
![Page 19: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/19.jpg)
…but are we sticking to a path?• A path is a walk in which no vertex
is repeated
• A cycle is a walk of length 3 or more on a graph or any walk on a digraph where v0=vl, i.e., a walk that ends in the same vertex that it started in and that does not simply go down one arc and comes back along an arc in the opposite direction.
We'll encounter cycles again later.
7
3
1
4
6
25
E.g., 4 5 6 4 3 1 2 3 1 7 2 is a walk but not a path: We visit 4, 3, 1, and 2 more than once.E.g., 4 5 6 2 3 1 is a path. E.g., 2 3 1 2 is a cycle. E.g., 3 1 3 is a cycle in the digraph but not a cycle in its underlying graph (obtained by removing the arrowheads, see slide 26).
19
![Page 20: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/20.jpg)
Subgraphs and subdigraphs
• A sub(di)graph G'(V',E') of a (di)graph G(V,E) is a (di)graph for which V' V and E' E.
• Note that G'(V',E') still has to be a (di)graph in its own right, i.e., all edges/arcs in E' must be associated with vertices in V'.
• If V'=V, i.e., if it G' contains all vertices of G, theG' is called a spanning sub(di)graph.
20
![Page 21: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/21.jpg)
Exercise: Subdigraph or not?
7
3
1
4
6
25
G
7
3
4
6
25
G'
21
![Page 22: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/22.jpg)
Exercise: Subdigraph or not?
7
3
1
4
6
25
G
7
3
6
25
G'
22
![Page 23: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/23.jpg)
Exercise: Spanning subdigraph or not?
7
3
1
4
6
25
G G'
7
3
1
4
6
25
23
![Page 24: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/24.jpg)
Induced sub(di)graphs
• A sub(di)graph G' of G based on a subset of vertices V' V and the edges/arcs in E' E is referred to as the induced sub(di)graph of V' if the following condition applies:
• For all u,v ϵV', if (u,v) is an edge/arc in E then (u,v) is an edge/arc in E'.
• In plain English: it's the sub(di)graph consisting of all vertices in V that are also in V' and all the edges/arcs in E that connect them.
24
![Page 25: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/25.jpg)
Induced subdigraph
7
3
1
4
6
25
G
E.g. V'= 1,2,3,4,6
25
![Page 26: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/26.jpg)
Reverse digraph
• The reverse digraph Gr of a digraph G is constructed by reversing the direction of all arcs in G
7
3
1
4
6
25
G Gr
7
3
1
4
6
25
26
![Page 27: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/27.jpg)
Underlying graph of a digraph
• The underlying graph G' of a digraph G is constructed by converting all arcs in G into edges
7
3
1
4
6
25
G G'
7
3
1
4
6
25
27
![Page 28: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/28.jpg)
Storing a (di)graph on a computer• Computers don't know (di)graphs – they know just bits and bundles of bits called
"data structures". To store a (di)graph, we need to find an appropriate data structure.
• Choice of two main data structures for general (di)graphs of order n: an adjacency matrix or an adjacency list.
• The adjacency matrix is an n‐by‐n matrix whose rows represent vertices that an arc/edge may originate from and whose columns represent vertices an arc/edge may end at. Its entry (i, j) in row i and column j is 0 (false) if there is no arc/edge from vertex i to vertex j, and 1 (true) if there is such an arc/edge.
• The adjacency list is a list with n entries L1, L2, … Ln. Each of these entries Li is a sequence of between 0 and n-1 numbers. The sequence Li list the vertices that are (out‐)neighbours of vertex i.
• Note: Textbook error in 2nd ed. Definition 4.22 on p. 88: number the sequences from 1 to n not 0 to n‐1, as shown on this slide
28
![Page 29: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/29.jpg)
Adjacency matrix example
7
3
1
4
6
25
0000010000101001000000010100000000101001001000110
G
Arcs to out‐neighbours of vertex 6 (vertices 2 and 4)
Arc from vertex 2 to 3
29
![Page 30: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/30.jpg)
Adjacency list example
7
3
1
4
6
25
24,2
65,3
16,37,3,2
7
6
5
4
3
2
1
LLLLLLL
G
Arcs to out‐neighbours of vertex 6 (vertices 2 and 4)
Arc from vertex 2 to 3
30
![Page 31: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/31.jpg)
Adjacency list or matrix?• Whether it is better to use an adjacency matrix or an adjacency list
to implement a (di)graph in a computer program depends on three factors governing storage requirement and performance:
• The order of the (di)graph: the storage space we require for an adjacency matrix is O(n2).
• The size of the (di)graph: the storage space we require for an adjacency list is O(n2 log n). However, in most practical cases, the graphs are sparse. E.g., if the in‐/out‐degree is limited, the space requirement is only O(n log n).
• What we want to do with the graph (operations). This requires a bit more discussion.
31
![Page 32: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/32.jpg)
Elementary graph operations• Does the arc (u,v) exist?
• What is the outdegree of vertex u?
• What is the indegree of vertex u?
• Add an arc between two vertices u and v.
• Delete the arc between vertices u and v.
• Add a node to the (di)graph.
• Delete a node from the (di)graph.
32
![Page 33: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/33.jpg)
Does the arc (u,v) exist?• In the adjacency matrix, we need to find the entry in row u, column v. This operation is equivalent to accessing an element in an array: ϴ(1).
• In the adjacency list, the requires looking up the list (ϴ(1)) and then checking whether v is on that list. If dis the outdegree of vertex u, this will take ϴ(d) in the worst case. The overall worst case scenario is thus ϴ(d).
• The matrix wins!
33
![Page 34: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/34.jpg)
What is the outdegree of vertex u?• In the adjacency matrix, we need to scan row u, and count
the number of 1's we find. This operation is ϴ(n).
• In the adjacency list, this requires looking up the size of the sequence Lu, which takes ϴ(1) (if the sequence is properly implemented).
• The list wins!
• Note: This problem is equivalent to finding all the out‐neighbours of u.
34
![Page 35: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/35.jpg)
What is the indegree of vertex u?
• In the adjacency matrix: Essentially the same operation as for the outdegree, except that we scan a column for u rather than a row: ϴ(n).
• In the adjacency list, this requires checking for all v ≠ u whether u is in the sequence Lv. which takes ϴ(n+|E|). Note: need to check each Lv even if the sequence is empty
• The matrix wins (at least for dense (di)graphs)!
35
![Page 36: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/36.jpg)
Adding an arc from u to v
• For the adjacency matrix: change value of matrix element (u,v). This is ϴ(1).
• For the adjacency list: Insert v into list u. This is also ϴ(1).
• Matrix and list perform equally well here.
36
![Page 37: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/37.jpg)
Deleting an arc from u to v• This problem is pretty much identical to the that of answering the question whether the arc exists
• In the adjacency matrix, rather than returning the value of (u,v), we set it to 0 (false). So we have ϴ(1).
• In the adjacency list, we delete the appropriate list entry, and operation of constant time once we have located the entry in the list. ϴ(d).
• Matrix wins!
37
![Page 38: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/38.jpg)
Adding a vertex to the (di)graph
• In the adjacency matrix: Need to add 2n+1entries (one row with n entries at the bottom and then one column with n+1 entries at the end): ϴ(n).
• In the adjacency list: Add one entry: ϴ(1).
• List wins!
38
![Page 39: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/39.jpg)
Deleting a vertex from the (di)graph
• Note that the vertex may have arcs attached!
• Matrix: Need to remove a row and a column, so need to shift up to (n-1) elements up and up to (n-1) elements to the left: ϴ(n2).
• List: Need to look at all n entries and need to check their sequences for the presence of the node that needs to be removed. The total number of sequence entries is the number of arcs, m, so the total time complexity here is ϴ(n+m).
• In sufficiently sparse graphs, the list wins, but as m≤ 2n(n-1) for digraphs and m≤ n(n-1) for graphs, this isn't necessarily always so!
39
![Page 40: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/40.jpg)
Conclusion here
• Use adjacency matrix for small, dense (di)graphs for which we wish to test for the existence of arcs, find the indegree of vertices, and/or delete arcs.
• Use adjacency list for large, sparse (di)graphs for which we need to compute outdegree and add and/or delete vertices.
40
![Page 41: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/41.jpg)
Lectures this week
• Lecture 1: Graph traversal – general approach, depth‐first search (DFS), breadth‐first search (BFS)
• Lecture 2: Priority‐first search (PFS), directed acyclic graphs (DAGs), topological sorting
• Lecture 3: (Di)Graph connectivity, strongly connected components
41
![Page 42: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/42.jpg)
Lecture 1
• Graph traversal – general approach, depth‐first search (DFS), breadth‐first search (BFS)
42
![Page 43: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/43.jpg)
Graph traversal basics• Common problem: Need to write a program to visit all vertices of a
graph or digraph to perform some operation with them, and need to visit them following existing edges/arcs (i.e., we can't simply go row‐by‐row in an adjacency matrix or list).
• As far as possible, we want to avoid visiting vertics more than once
• Classical example: "Travelling Salesman Problem" (visit all cities in a country using the road network)
• Many algorithms exist to do this, but they all follow a common underlying algorithm, which we will discuss first.
43
![Page 44: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/44.jpg)
Fundamental graph traversal algorithmStart: "colour" all vertices "white".
Select one of the grey vertices in the (di)graph.
Select one of the white vertices in the (di)graph and colour it grey.
Are there any grey vertices
left?
Are there any white vertices
left?
Done!
Yes YesNo
No
Does the vertex have a white
(out‐)neighbour?
Yes No
No
Colour the (out‐) neighbour grey.
Colour the vertex black
Note: pseudocode for thisalgorithm is in the textbookin Figure 5.1. The inner loop (on the left) here correspondsto the visit algorithm, the outer loop (that surrounds this box) to traverse.
44
![Page 45: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/45.jpg)
Notes on the fundamental algorithm• The use of three "colours" means that we do not visit vertices twice: we always
continue work at grey vertices first and only their white out‐neighbours are coloured grey.
• Only once these grey vertices are "used up", we continue with the next white node to generate more. This allows us to deal with graphs that do not have a path from the starting vertex to each other vertex.
• Note that the fundamental algorithm says nothing about how the next grey or white node is chosen. This choice is made in actual implementations and is quite important!
• One typically implements colours as some sort of state property for a vertex object (e.g., with integer values). White: unvisited; grey: visited but outgoing arcs/edges not followed; black: visited and outgoing arcs/edges followed.
• Note that it is possible for a grey vertex to have only grey out‐neighbours if these have been visited from other vertices!
45
![Page 46: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/46.jpg)
Search forests• Using the fundamental algorithm, the inner loop (which colours vertices
black and its out‐neighbours grey) implicitly generates a tree.
• In this tree, the out‐neighbours that are coloured grey become the descendants of the vertex (node) that is coloured black, which is their ancestor in the tree.
• The outer loop (that colours a white node grey) corresponds to starting a new tree.
• This way, the algorithm produces a set of disjoint trees called a search forest.
• Note that different versions of the algorithm may produce different forests!
46
![Page 47: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/47.jpg)
Arc, arc…• In a search forest F of a graph G, we can find four different kinds of arcs:
• Tree arc: an arc in G that connects a vertex in G to one of its immediate descendants in the tree of F that the vertex belongs to, i.e., if the arc belongs to the tree
• Forward arc: an arc that does not belong to a tree in F but that connects a vertex to one of its descendants in the tree
• Back arcs: an arc that does not belong to a tree in F but that connects a vertex to one of its ancestors in the tree
• Cross arcs: arcs that fall into neither of the above categories
• Examples: will be provided for breadth‐first and depth‐first search soon
47
![Page 48: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/48.jpg)
Depth‐first search algorithm (DFS)
• DFS is a specific implementation of our fundamental graph traversal algorithm (also known as depth‐first traversal)
• It specifies that we select the next grey vertex to pick as the youngest remaining grey vertex.
• The following slides are best viewed online as they trace the steps of the algorithm (the starting nodes for the outer loop of our traversal algorithm are always the nodes at the top, from left to right).
48
![Page 49: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/49.jpg)
Depth‐first traversal
49
![Page 50: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/50.jpg)
Depth‐first traversal
1
50
![Page 51: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/51.jpg)
Depth‐first traversal
1
51
![Page 52: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/52.jpg)
Depth‐first traversal
1
2
52
![Page 53: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/53.jpg)
Depth‐first traversal
1
2
53
![Page 54: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/54.jpg)
Depth‐first traversal
1
3
2
54
![Page 55: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/55.jpg)
Depth‐first traversal
1
3
2
55
![Page 56: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/56.jpg)
Depth‐first traversal
1
3
2
56
![Page 57: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/57.jpg)
Depth‐first traversal
1
43
2
57
![Page 58: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/58.jpg)
Depth‐first traversal
1
43
2
58
![Page 59: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/59.jpg)
Depth‐first traversal
1
43
2
59
![Page 60: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/60.jpg)
Depth‐first traversal
1
43
2
60
![Page 61: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/61.jpg)
Depth‐first traversal
1
43
2 5
61
![Page 62: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/62.jpg)
Depth‐first traversal
1
43
2 5
62
![Page 63: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/63.jpg)
Depth‐first traversal
1
4 63
2 5
63
![Page 64: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/64.jpg)
Depth‐first traversal
1
4 63
2 5
64
![Page 65: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/65.jpg)
Depth‐first traversal
1
4 63
2 5
7
65
![Page 66: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/66.jpg)
Depth‐first traversal
1
4 63
2 5
7
66
![Page 67: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/67.jpg)
Depth‐first traversal
1
4 63
2 5
7
67
![Page 68: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/68.jpg)
Depth‐first traversal
1
4 63
2 5
7 8
68
![Page 69: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/69.jpg)
Depth‐first traversal
1
4 63
2 5
7 8
69
![Page 70: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/70.jpg)
Depth‐first traversal
1
4 63
2 5
7 8
70
![Page 71: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/71.jpg)
Depth‐first traversal
1
4 63
2 5
7 8
71
![Page 72: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/72.jpg)
Depth‐first traversal
1
4 63
2 5
9
7 8
72
![Page 73: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/73.jpg)
Depth‐first traversal
1
4 63
2 5
9
7 8
73
![Page 74: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/74.jpg)
Depth‐first traversal
1
4 63
2 5
9
7 8
74
![Page 75: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/75.jpg)
Depth‐first traversal
1
4 63
2 5
9 10
7 8
75
![Page 76: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/76.jpg)
Depth‐first traversal
1
4 63
2 5
9 10
7 8
76
![Page 77: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/77.jpg)
Depth‐first traversal
1
4 63
2 5
9 10
7 8
77
![Page 78: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/78.jpg)
Depth‐first traversal
1
4 63
2 5
9 10
7 8
78
![Page 79: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/79.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
79
![Page 80: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/80.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
80
![Page 81: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/81.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
81
![Page 82: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/82.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
12
82
![Page 83: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/83.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
12
83
![Page 84: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/84.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
13
12
84
![Page 85: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/85.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
13
12
85
![Page 86: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/86.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
14
13
12
86
![Page 87: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/87.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
14
13
12
87
![Page 88: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/88.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
14
13
12
88
![Page 89: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/89.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
14
13
12
15
89
![Page 90: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/90.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
14
13
12
15
90
![Page 91: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/91.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
14
13
12
15
91
![Page 92: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/92.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
14
1613
12
15
92
![Page 93: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/93.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
14
1613
12
15
93
![Page 94: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/94.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
14
1613
12
1715
94
![Page 95: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/95.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
14
1613
12
1715
95
![Page 96: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/96.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
14
1613
12
1715
96
![Page 97: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/97.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
14
1613
12
1715
97
![Page 98: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/98.jpg)
Depth‐first traversal
1
11
4 63
2 5
9 10
7 8
14
1613
12
1715
98
![Page 99: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/99.jpg)
Depth‐first traversal – tree arcs
1
11
4 63
2 5
9 10
7 8
14
1613
12
1715
99
![Page 100: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/100.jpg)
Depth‐first traversal – back arc
1
11
4 63
2 5
9 10
7 8
14
1613
12
1715
100
![Page 101: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/101.jpg)
Depth‐first traversal – forward arcs
1
11
4 63
2 5
9 10
7 8
14
1613
12
1715
101
![Page 102: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/102.jpg)
Depth‐first traversal – cross arc
1
11
4 63
2 5
9 10
7 8
14
1613
12
1715
102
![Page 103: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/103.jpg)
Breadth‐first search algorithm (BFS)
• BFS is also a specific implementation of our fundamental graph traversal algorithm (and also known as breadth‐first traversal)
• It specifies that we select the next grey vertex to pick as the oldest remaining grey vertex.
• The following slides are again best viewed online as they trace the steps of the algorithm (the starting nodes for the outer loop of our traversal algorithm are always the nodes at the top, from left to right).
103
![Page 104: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/104.jpg)
Breadth‐first traversal
104
![Page 105: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/105.jpg)
Breadth‐first traversal
1
105
![Page 106: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/106.jpg)
Breadth‐first traversal
1
2
106
![Page 107: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/107.jpg)
Breadth‐first traversal
1
2 3
107
![Page 108: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/108.jpg)
Breadth‐first traversal
1
42 3
108
![Page 109: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/109.jpg)
Breadth‐first traversal
1
42 3
109
![Page 110: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/110.jpg)
Breadth‐first traversal
1
4
5
2 3
110
![Page 111: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/111.jpg)
Breadth‐first traversal
1
4
65
2 3
111
![Page 112: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/112.jpg)
Breadth‐first traversal
1
4
65
2 3
112
![Page 113: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/113.jpg)
Breadth‐first traversal
1
4
6 75
2 3
113
![Page 114: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/114.jpg)
Breadth‐first traversal
1
4
6 75
2 3
8
114
![Page 115: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/115.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9
8
115
![Page 116: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/116.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
8
116
![Page 117: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/117.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
8
117
![Page 118: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/118.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
8
118
![Page 119: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/119.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
8
119
![Page 120: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/120.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
8
120
![Page 121: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/121.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
11 8
121
![Page 122: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/122.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
11 8
122
![Page 123: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/123.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
11 8
123
![Page 124: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/124.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
11 8
124
![Page 125: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/125.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
11 8
125
![Page 126: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/126.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
11 8
12
126
![Page 127: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/127.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
11 8
12
127
![Page 128: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/128.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
11 8
13
12
128
![Page 129: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/129.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
11 8
1413
12
129
![Page 130: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/130.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
11 8
1413
12
130
![Page 131: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/131.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
11 8
15
1413
12
131
![Page 132: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/132.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
11 8
15
1413
12
16
132
![Page 133: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/133.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
11 8
15
1413
12
16
133
![Page 134: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/134.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
11 8
15
1413
12
1716
134
![Page 135: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/135.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
11 8
15
1413
12
1716
135
![Page 136: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/136.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
11 8
15
1413
12
1716
136
![Page 137: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/137.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
11 8
15
1413
12
1716
137
![Page 138: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/138.jpg)
Breadth‐first traversal
1
4
6 75
2 3
9 10
11 8
15
1413
12
1716
138
![Page 139: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/139.jpg)
Breadth‐first traversal – tree arcs
1
4
6 75
2 3
9 10
11 8
15
1413
12
1716
139
![Page 140: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/140.jpg)
Breadth‐first traversal – back arc
1
4
6 75
2 3
9 10
11 8
15
1413
12
1716
140
![Page 141: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/141.jpg)
Breadth‐first traversal – cross arcs
1
4
6 75
2 3
9 10
11 8
15
1413
12
1716
Note: Breadth‐first traversal does notproduce forward arcs!
141
![Page 142: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/142.jpg)
Depth‐first traversal and stacks • A depth‐first traversal operates like a stack (last‐in‐first‐out, LIFO)
• Vertices are pushed onto the stack when we colour them grey
• We always operate on the vertex that is on top of the stack
• If the vertex on top of the stack has an (out‐)neighbour that is still white, we push that (out‐)neighbour onto the stack (we colour it grey)
• If the vertex on top of the stack has no more white (out‐)neighbours, we pop the vertex off the stack (we colour it black)
• Depth‐first traversals are usually implemented via a recursive method/ function call (see textbook). By the way: When you see a stack mentioned anywhere, the one word that should pop into your head is "recursive"…
142
![Page 143: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/143.jpg)
Breadth‐first traversal and queues• A breadth‐first traversal operates like a queue (first‐in‐first‐out, FIFO)
• Vertices are added to the end of the queue when we colour them grey
• We always operate on the vertex that is at the front of the queue (the vertex that has been grey for the longest time)
• If the vertex at the front of the queue has an (out‐)neighbour that is still white, we add that (out‐)neighbour to the end of the queue (we colour it grey)
• If the vertex at the front of the queue has no more white (out‐)neighbours, we take the vertex out of the queue (we colour it black)
143
![Page 144: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/144.jpg)
Basic theorem on search forests• For a (di)graph G, and vertices u,v ϵV(G):
• If T1 and T2 are two distinct trees in the search forest F for G for some algorithm that follows our basic traversal algorithm, and T1 is traversed before T2, then there are no arcs/edges from T1 to T2.
• If u is visited before v and there is a path from u to v, then uand v belong to the same tree in F.
• If u and v belong to the same tree T in F, then any path from u to v must have all its vertices in T.
144
![Page 145: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/145.jpg)
Basic theorems on DFS• A (recursive) DFS from a vertex v (inner loop visitalgorithm) terminates only once all vertices reachable from v via a path of white vertices have been visited.
• If u and v are in F and u is visited (coloured grey) before v, then
a) if u is an ancestor of v, u is coloured black after v is coloured black.
b) if u is not an ancestor of v, u is coloured black before v is coloured grey (or black, for that matter)
145
![Page 146: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/146.jpg)
Basic theorems on BFS• Theorems 5.6, 5.7 and 5.8
• When we visit the vertex v at the front of the queue with distance d(v) from the root:
a) any tree arcs from v lead to a white vertex with distance d(v)+1from the root (for graphs: any tree edges lead to a vertex with distance d(v)+1 or distance d(v)-1).b) any back arcs from v lead to a black vertex with distance less than d(v) from the rootc) any cross arcs either lead to a black vertex with distance up to d(v) from the root, or to a grey vertex with distance d(v) or d(v)-1. For graphs, the difference in distance that a cross edge bridges is 0, 1, or ‐1. d) In BFS, there are no forward arcs.
146
![Page 147: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/147.jpg)
Time complexity of DFS and BFS
• With adjacency matrix: Need to find out‐neighbours for n vertices. With ϴ(n) per vertex, this means ϴ(n2).
• With adjacency list: ϴ(n+m).
• No difference between BFS and DFS here as time needed to choose the next grey/white node is constant
147
![Page 148: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/148.jpg)
Application examples of DFS and BFS
• Listing all files in a directory and its subdirectories: if we explore a subdirectory as soon as we see it, it's DFS, if we first list all other files and subdirectories in the directory before we come back to explore the directory, it's BFS
• "Depth" and "breadth" are used because DFS and BFS are often used in conjunction with digraphs that are rooted trees (such as a directory structure on a computer)
• Often the decision between using DFS and BFS in these cases is based on when we expect to "find" what we have been looking for in our "search".
148
![Page 149: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/149.jpg)
Lecture 2
• Priority‐first search, DAGs, topological sorting
149
![Page 150: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/150.jpg)
Priority‐first search (PFS)• Next grey vertex is selected according to a priority value
• Typically, this is an integer, such that the grey vertex with the lowest value is selected first
• Priority value is assigned (often computed) no later than when the vertex turns grey
• In simple PFS, the priority value of a vertex does not change. In advanced PFS, the priority value of a vertex may be updated again later.
• BFS and DFS are really just special cases of simple PFS. In BFS, the priority values are the order in which the vertices turn grey (1, 2, 3, …). In DFS, the priority values are the negative order in which the vertices turn grey (‐1, ‐2, ‐3, …).
150
![Page 151: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/151.jpg)
Time complexity of PFS• General time complexity is not very good: Need to find minimum
priority value each time we need to select the next grey node
• If we search up to n vertices (say, in an array) for the minimum priority value, we need Ω(n2)
• This can be improved on a little by using a priority queue ADT (e.g., a heap) for the grey vertices, but it's still slower than pure DFS or BFS
• Use PFS when there is an advantage in processing high priority vertices first (e.g., when this allows us to remove other vertices or edges from the (di)graph to be traversed, thereby reducing the search space)
151
![Page 152: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/152.jpg)
DAGS – Directed Acyclic Graphs
• What's the difference between the following two graphs?
152
![Page 153: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/153.jpg)
DAGS – Directed Acyclic Graphs
• What's the difference between the following two graphs?
153
![Page 154: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/154.jpg)
DAGS – Directed Acyclic Graphs
• What's the difference between the following two graphs?
154
![Page 155: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/155.jpg)
• Digraphs can have cycles ‐ such as the one on the left on the previous slide
• A digraph without a cycle such as the digraph on the right of the previous slides is called acyclic.
• We call such a graph a DAG – a directed acyclic graph
DAGS – Directed Acyclic Graphs
155
![Page 156: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/156.jpg)
• Any walk on a DAG G is limited in length
• A DAG must have at least one source and one sink (why?)
• If G is a DAG, then it is possible to find a topological order of the vertices. A topological order is a numbering of the vertices such that an arc (u,v) in the digraph means that u has a smaller number than v.
• Only DAGs have a topological ordering
• Just because a DAG has no cycles does not mean that the underlying graph has none. E.g., all the DAGs in the examples here have cycles in their underlying graphs!
DAGS – Properties
156
![Page 157: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/157.jpg)
Topological order – Example 1
5
43
1
76
2
157
![Page 158: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/158.jpg)
Topological order – Example 2
6
43
1
57
2
158
![Page 159: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/159.jpg)
Topological order – Example 3
4
53
2
67
1
159
![Page 160: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/160.jpg)
Topological orders
• There is often more than one topological order for a digraph (see examples on previous slides)
• A topological order is also called a topological sort or a linear order.
• Why "linear" order? Because you can order the vertices in a line and make all arcs point the same way!
160
![Page 161: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/161.jpg)
Topological order – to linear
4
53
2
67
1
4 532 6 71
These two digraphsare exactly the same!
In linear sort order, all arcs run from left to right!
161
![Page 162: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/162.jpg)
Creating a topological order on a DAG
• Algorithm:1. Initialise a counter
2. Find a source on the digraph (a vertex with outwards arcs only). If we cannot find a source, the digraph is not a DAG.
3. Assign the value of the counter to this source vertex.
4. Increment the counter
5. "Delete" the vertex and its outward arcs from the digraph and continue working with the remaining digraph. (Note: This cannot create a cycle)
6. If there are still vertices left, continue at step 2 162
![Page 163: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/163.jpg)
Is it a DAG?
• A simple way to test whether a digraph is a DAG or not is to run a DFS on it
• If DFS yields a back arc, then the digraph has a cycle and is not a DAG.
• DFS also gives us a topological order if we number the vertices in the opposite order in which they are being popped off the stack.
163
![Page 164: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/164.jpg)
Topological order by DFS• Starting at the node A:
• push A, push C, push D,• push E, pop E, pop D,• push F, push G, pop G,• pop F, pop C, pop A,• push B, pop B
• So, we get B=1, A=2, C=3, F=4, G=5, D=6, E=7 (as in example 2)
D
FC
B
GE
A
164
![Page 165: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/165.jpg)
Lecture 3
• Graph connectivity; strongly connected components
165
![Page 166: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/166.jpg)
Connectivity
• A graph is connected if for each vertex uϵV(G), there is a path to any other vertex vϵV(G)
1
45
32
connected1
45
32
not connected
166
![Page 167: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/167.jpg)
Connected components of a graph
• Any graph (note not digraph) G consists of one or more subgraphs Gi such that:– each Gi is connected, and– if there is a path between u, v ϵV(G), then u and vare in the same subgraph Gi.
• The subgraphs Gi are called the connected components of G
167
![Page 168: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/168.jpg)
Connected components
1
45
32
1
45
32
Note: The connected components (indicated by the red ellipses) are thetrees of the search forest we obtain if we run DFS or BFS on the graph(so, nothing new, really!)
168
![Page 169: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/169.jpg)
Connectivity and digraphs
• Problem
1
45
32
There is no path from 1 and 4 to 2, 3, and 5.Connected or not?Answer: weakly connected
169
![Page 170: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/170.jpg)
Connectivity and digraphs
• A digraph G whose underlying graph is not connected is also not connected
• A digraph G whose underlying graph is connected but for which a pair of vertices u, v exists such that there is no path from u to v is said to be weakly connected
• A digraph G for which each vertex u has a path to each other vertex v is said to be strongly connected
170
![Page 171: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/171.jpg)
Strongly connected components of digraphs
• The strongly connected components of a digraph G are strongly connected subdigraphs, but their union does not yield G (unlike for graphs)
• Rather, the union of the subsets of the vertices in the strongly connected subdigraphs forms V (the set of all vertices in G)
• In other words: some arcs do not belong to any of the strongly connected subdigraphs, so they are missing from the union
• This applies in particular to any arcs starting or terminating in sources or sinks, and any arcs that are responsible for weakly connecting different strongly connected components of G
171
![Page 172: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/172.jpg)
Finding the strongly connected components in a digraph
• Trickier than for a graph
• Consider this: within a strongly connected component, there is a path from any vertex in the component to any outgoing arc that connects the component weakly to another component
• Similarly, from any incoming arc that weakly connects from another component, there is a path to any vertex in the strongly connected component – e.g., a DFS starting at a vertex in the strongly connected component would find all these vertices.
• So we can (conceptually) treat a strongly connected component like a single vertex
172
![Page 173: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/173.jpg)
Treating strongly connected components like single vertices
173
![Page 174: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/174.jpg)
Treating strongly connected components like single vertices
174
![Page 175: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/175.jpg)
Finding the strongly connected components in a digraph
• Some preliminary observations
• Consider a digraph G and its reverse digraph Gr. Then the strongly connected components are the same subsets of vertices in both digraphs.
• Now consider "shrinking" the connected components down to a single vertex in both digraphs. This gives us DAGs H from G and Hrfrom Gr.
175
![Page 176: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/176.jpg)
Treating strongly connected components like single vertices
H
176
![Page 177: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/177.jpg)
Treating strongly connected components like single vertices
Hr
177
![Page 178: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/178.jpg)
Finding the strongly connected components in a digraph
• Run a DFS on Gr. Having separate trees in the resulting search forest you get means that there is no path from vertices in one tree to any of its successor trees (there may be back arcs but we'll get to that).
• As strongly connected components require such a path, the vertices of each strongly connected component must reside within the same tree. Different strongly connected components can reside in different trees, but a strongly connected component cannot overlap two trees.
• However, there could be more than one strongly connected component in a tree. How do we find out?
178
![Page 179: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/179.jpg)
Finding the strongly connected components in a digraph
• Here's the trick: As you run the DFS on Gr, number the nodes in the order they turn black: i.e., in a graph with n vertices, the first vertex to turn black is numbered 1, the next 2, and so on
• Note that this makes the vertex numbered n the root of the last tree of the search forest for Gr. The numbers in that tree are all higher than those in other trees of the search forest.
• More generally, the root in each tree of the search forest has the highest number in that tree, and the vertices in that tree have numbers between the number of the root and the number of the root of the previous tree in the search forest.
179
![Page 180: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/180.jpg)
Finding the strongly connected components in a digraph
• Now we run DFS on G by using the white node with the highest number as root whenever we start a new tree in the search forest for G.
• This means we start with the root of the last tree in the search forest of Gr.
• Because no tree in Gr has an incoming arc from a predecessor tree, there is no arc from that tree in G to the predecessor tree (remember that the arcs in both digraphs are the same, just in opposite directions!)
• So our DFS on G will not leave the respective trees from the DFS on Gr.
• If the DFS on G does not reach every vertex in the current tree from Gr, then the tree contains more than one strongly connected component.
• In this case, we again start the next tree with the white node with the highest number.
180
![Page 181: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/181.jpg)
Step 1: DFS on Gr
2
13
45
10
9
8
7
6
Hr
Vertices numbered in orderof completion (turning black)
181
![Page 182: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/182.jpg)
Step 2: DFS on G
2
13
45
10
9
8
7
6
H
Trees in thick black with bold roots
First tree root: vertex 10Second tree root: vertex 8Third tree root: vertex 2
182
![Page 183: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/183.jpg)
Algorithm postmortem
• Think about the DFS on Gr as cutting the weak links in G that run in forward direction
• The DFS on G then cuts the weak links that run backwards
• Note: The description of the algorithm here differs a little from the textbook, but the algorithm itself is the same!
183
![Page 184: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/184.jpg)
Lectures this week
• Lecture 4: Cycles, girth, graph colouring
• Lecture 5: Matching on bipartite graphs
• Lecture 6: Weighted digraphs and single‐source shortest paths (Dijkstra’s algorithm)
184
![Page 185: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/185.jpg)
Lecture 4
• Cycles, girth, graph colouring
185
![Page 186: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/186.jpg)
Cycles and girth of a graph• Recap: A cycle is a walk of length 3 or more on a graph (or length 2
or more on a digraph) where v0=vl, i.e., a walk that ends in the same vertex that it started in and that does not simply go down an undirected edge and comes back in the opposite direction.
• In a digraph, we talk about directed cycles.
• The length of the shortest cycle in a graph is called the graph's girth.
• NOTE: In the case of a digraph, the girth is determined based on the underlying graph, i.e., we do not require a walk on the digraph itself. We may refer to the length of the smallest directed cycle of a digraph as its directed girth.
![Page 187: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/187.jpg)
Examples: graphs and girth
4
3
12
Girth: 3Directed girth: 3
4
3
12
Girth: 4Directed girth: undefined
43
1
2
Girth: undefinedDirected girth: undefined
43
1
2
5
67
Girth: 3Directed girth: 4
![Page 188: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/188.jpg)
Finding the girth of a graph• Simple algorithm based on BFS:
• Perform BFS |V| times, starting at each vertex v`ϵ V in turn.
• If during a BFS search, we encounter a grey (rather than white) neighbour while exploring the edges that start at grey vertex x, we continue to the end of the current level (i.e., explore the remaining vertices at this distance from the starting vertex) and then stop.
• For each edge (x,y) at this level for which both x and y are grey and for which v is the lowest common ancestor in the search tree, we compute the distances d(x) and d(y) to v.
• The length of the cycle involving x, y and v is then d(x) + d(y) + 1
• The minimum of these lengths at the level is the smallest cycle that involves v.
• The smallest cycle among all possible start vertices v is the girth.
![Page 189: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/189.jpg)
Example: finding the smallest cycle involving vertex 1
1
62
3
4
5
7
8
![Page 190: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/190.jpg)
Example: finding the smallest cycle involving vertex 1
1
62
3
4
5
7
8
Queue: 1
![Page 191: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/191.jpg)
Example: finding the smallest cycle involving vertex 1
1
62
3
4
5
7
8
Queue: 1 2
![Page 192: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/192.jpg)
Example: finding the smallest cycle involving vertex 1
1
62
3
4
5
7
8
Queue: 1 2 6
![Page 193: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/193.jpg)
Example: finding the smallest cycle involving vertex 1
1
62
3
4
5
7
8
Queue: 2 6 8
![Page 194: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/194.jpg)
Example: finding the smallest cycle involving vertex 1
1
62
3
4
5
7
8
Queue: 6 8 3
![Page 195: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/195.jpg)
Example: finding the smallest cycle involving vertex 1
1
62
3
4
5
7
8
Queue: 6 8 3 5
![Page 196: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/196.jpg)
Example: finding the smallest cycle involving vertex 1
1
62
3
4
5
7
8
Queue: 8 3 5 7
![Page 197: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/197.jpg)
Example: finding the smallest cycle involving vertex 1
1
62
3
4
5
7
8
Queue: 8 3 5 7
7 is already grey!
![Page 198: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/198.jpg)
Example: finding the smallest cycle involving vertex 1
1
62
3
4
5
7
8
Queue: 3 5 7 (stopped)
7 is already grey!y
x
![Page 199: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/199.jpg)
Example: finding the smallest cycle involving vertex 1
1
62
3
4
5
7
8
Queue: 3 5 7 (stopped)
7 is already grey!y
x
d(y) = 2
![Page 200: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/200.jpg)
Example: finding the smallest cycle involving vertex 1
1
62
3
4
5
7
8
Queue: 3 5 7 (stopped)
7 is already grey!y
x
d(y) = 2
d(x) = 1
![Page 201: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/201.jpg)
Example: finding the smallest cycle involving vertex 1
1
62
3
4
5
7
8
Queue: 3 5 7 (stopped)
7 is already grey!y
x
d(y) = 2
d(x) = 1
Length of smallest cycle with vertex 1:d(x) + d(y) +1= 4
![Page 202: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/202.jpg)
k‐colourings• A graph G is said to have a k‐colouring if its set of vertices V(G) can be divided into k disjoint subsets such that every edge in E(G) connects two vertices from different subsets.
• This is a problem that turns up e.g., for map makers (cartographers): colour a map of countries with kcolours such that no two adjacent countries have the same colour.
• If a graph has a k‐colouring, then it also has a (k+1)‐colouring. The reverse does not apply!
![Page 203: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/203.jpg)
k‐colourings
1
3 4
2 1
3 4
2
This graph has a 4‐colouring … and a 3‐colouring…
1
3 4
2 1
3 4
2 1
3 4
2 1
3 4
2
… but no 2‐colouring!
![Page 204: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/204.jpg)
Bi‐partite graphs
• Bi‐partite graphs are graphs that have a 2‐colouring
• This is equivalent to saying that the graph has no odd‐length cycles: every edge crosses from one of the colour to the other, and to get back to a vertex of the same colour, we need a multiple number of switches to the other colour and back.
![Page 205: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/205.jpg)
Example: bipartite graphs
1
2 3
1
2 3
bipartite not bipartite
1
2 3
bipartite
4
5
6
1
2 3
bipartite
4
5
6 1
2 3
not bipartite
4
5
6
![Page 206: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/206.jpg)
Example: bipartite graphs
1
2 3
1
2 3
bipartite not bipartite
1
2 3
bipartite
4
5
6
1
2 3
bipartite
4
5
6 1
2 3
not bipartite
4
5
6
![Page 207: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/207.jpg)
Lecture 5
• Matchings on bipartite graphs
207
![Page 208: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/208.jpg)
Matchings
• A matching M is a set of pairwise non‐adjacent edges in a graph:
1
2
3
4
5
6
7
![Page 209: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/209.jpg)
Matchings
• A matching is a set of pairwise non‐adjacent edges in a graph:
1
2
3
4
5
6
7
![Page 210: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/210.jpg)
Matchings
• A matching is a set of pairwise non‐adjacent edges in a graph:
1
2
3
4
5
6
7
![Page 211: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/211.jpg)
Matchings
• A matching is a set of pairwise non‐adjacent edges in a graph:
1
2
3
4
5
6
7
![Page 212: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/212.jpg)
Matchings
• A matching is a set of pairwise non‐adjacent edges in a graph:
1
2
3
4
5
6
7
![Page 213: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/213.jpg)
Why matchings are important
• Matchings are used whenever we need to assign members of a set to each other as exclusive pairs based on suitability criteria
• The members of the set are the vertices and the edges indicate potentially suitable pairings
• Matchings are often but not always used in conjunction with bipartite graphs
![Page 214: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/214.jpg)
Matchings example: Car ferry• A small car ferry across a river can take two vehicles at a time with a
combined weight of 4,000 kg. On one side, the following cars are waiting for a trip across:
Toyota2,200kg
BMW2,300kg
Jeep2,400kg
Mazda1,400kg
Holden1,850kg Fiat
1,650kg
![Page 215: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/215.jpg)
Matchings example: Car ferry• Edges indicate cars that can be put on the ferry together:
Toyota2,200kg
BMW2,300kg
Jeep2,400kg
Mazda1,400kg
Holden1,800kg Fiat
1,650kg
![Page 216: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/216.jpg)
Matchings example: Car ferry• A matching indicates a possible way in which to get the cars across: in this
case, we require four ferry trips: two with a pair of cars and two with a single car each.
Toyota2,200kg
BMW2,300kg
Jeep2,400kg
Mazda1,400kg
Holden1,800kg Fiat
1,650kg
![Page 217: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/217.jpg)
Matchings example: Car ferry• In this matching, we can get all cars across in three ferry trips:
Toyota2,200kg
BMW2,300kg
Jeep2,400kg
Mazda1,400kg
Holden1,800kg Fiat
1,650kg
![Page 218: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/218.jpg)
Matchings example: Car ferry• Our first matchings example matched only two pairs of cars. Yet it is
a maximal matching, because it is not a subset of any other matching.
• Our second example is a maximum matching, because we cannot find a matching with more edges (in this case, because there are only six vertices, but there are other reasons why this may happen as well)
• So, a maximum matching is always a maximal matching, but a maximal matching is not necessarily a maximum matching.
• Note: A maximum matching in an arbitrary graph G can be found in polynomial time. For a polynomial time algorithm see section 5.9 in the textbook.
![Page 219: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/219.jpg)
Notes on finding maximum matchings
• A maximum matching in an arbitrary graph Gcan be found in polynomial time
![Page 220: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/220.jpg)
Graph diameter
• The diameter of a graph or strongly connected digraph G is the length (in number of edges) of the longest shortest path in G.
• This is equivalent to the maximum distance d(u,v) between any two vertices u and v in the (di)graph.
![Page 221: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/221.jpg)
Lecture 6
• Weighted digraphs and single‐source shortest paths (Dijkstra's algorithm)
221
![Page 222: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/222.jpg)
Weighted (di)graphs• In many applications, arcs (or edges) in (di)graphs carry a cost. In
this case, we talk of a weighted (di)graph and the cost of an edge is also called its weight. (The term distance is also sometimes used, in which case its is usually distinguished from our existing definition of distance we by referring to the latter as "distance in hops" or "distance in edges/arcs")
• Example: distances, travel times or fares in a transport network, usage charges or latencies (signal travel times) in a communication network
• We can model this by means of a cost function c(x,y) that returns the cost of the arc (edge) from vertex x to vertex y.
![Page 223: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/223.jpg)
Example: Weighted graphAuckland
Wellington
Hamilton
Rotorua
Taupo
Napier
New Plymouth
Whanganui
PalmerstonNorth
127 km
Gisborne
378 km
215 km
319 km
141 km
81 km
242 km
145 km
73 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 224: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/224.jpg)
A note on the weight function c(x,y)• Strictly speaking, the weight function c(x,y) is only defined if there is actually an
edge (or arc) from x to y.
• However, for practical reasons, it's often necessary to attach a value to c(x,y) in implementations even when there is no edge or arc from x to y.
• In this case, we usually assign weight of +∞
• Can store weights either in adjacency matrix format (distance matrix) or in adjacency list format.
• In the case of an adjacency matrix, we use the weights instead of the 1's and 0's (although we may sometimes – confusingly – use 0 to indicate that a weight is infinite, i.e., that there is no edge/arc).
• In the case of an adjacency list, each storage of an out‐neighbour is paired with the weight to that out‐neighbour.
![Page 225: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/225.jpg)
Distance matrix representation
Auckland
Hamilton
Rotorua
Gisborne
New Plymouth
Whanganui
Napier
Wellington
Taupo
Palmerston North
0208731592080145319
081242141810106
7314524203871590239
31914102151063872390378127
21537801270
Auckland
Hamilton
Rotorua
Gisb
orne
New
Plymou
th
Whanganui
Napier
Wellington
Taup
o
Palm
erston
North
![Page 226: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/226.jpg)
Adjacency list representation
Auckland: Hamilton, 127
Hamilton: Auckland, 127, Gisborne 378, New Plymouth, 239, Palmerston North, 387, Rotorua, 106
Rotorua: Hamilton, 106, Taupo, 81
Gisborne: Hamilton, 378, Napier, 215
New Plymouth: Hamilton, 239, Whanganui, 159
Whanganui: New Plymouth, 159, Palmerston North, 73, Wellington, 208
Napier: Gisborne, 215, Taupo, 141, Wellington, 319
Wellington: Napier, 319, Palmerston North, 145, Whanganui, 208
Taupo: Napier, 141, Palmerston North, 242, Rotorua, 81
Palmerston North: Hamilton, 387, Taupo, 242, Whanganui, 73, Wellington, 145
‐> basically, we need the same number of extra storage spacesas there are objects, so the fundamental complexity does not change!
![Page 227: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/227.jpg)
The negative weight issue• The vast majority of weighted graph problems that occur in
practice have no negative weights attached (i.e., following an edge/arc costs rather than gains us something)
• However, exceptions exist where the weight of an edge/arc can be negative.
• E.g., consider going on a holiday tripping around the world. Between some cities, you may need to buy a train/ferry ticket or an airfare (=cost, positive weight), but between others you might actually have the opportunity to earn money by working as crew on a ship, train, or plane (=gain, negative weight).
![Page 228: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/228.jpg)
Classical algorithms on weighted graphs
• Dijkstra (pronounced "Dyke‐stra"): Used to find the cost to each destination vertex from a single source ("single source shortest path" ‐ SSSP). Cannot handle negative weights.
• Bellman‐Ford: solves SSSP as well, slower than Dijkstra but can handle negative weights
• Floyd: solves all‐pairs shortest path (APSP) problem – minimal cost between any given pair of vertices
![Page 229: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/229.jpg)
Dijkstra's algorithmStart: "colour" all
vertices "white" and colour the source
vertex "black". Set the distance cost d(s,x) of all vertices to the respective c(s,x)
Select the white vertex u with the lowest d(s,x) and colour it black.
Loop through all white vertices x and set their d(s,x) to the lower of d(s,x)
and d(s,u) + c(u,x).
Are there any white vertices
left?
Done!
Yes
No
![Page 230: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/230.jpg)
Dijkstra at workAuckland
Wellington+∞ km
Hamilton127 km
Rotorua+∞ km
Taupo+∞ km
Napier+∞ km
New Plymouth+∞ km
Whanganui+∞ km
PalmerstonNorth+∞ km
127 km
Gisborne+∞ km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
73 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 231: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/231.jpg)
Dijkstra at workAuckland
Wellington+∞ km
Hamilton127 km
Rotorua233 km
Taupo+∞ km
Napier+∞ km
New Plymouth366 km
Whanganui+∞ km
PalmerstonNorth514 km
127 km
Gisborne505 km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
73 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 232: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/232.jpg)
Dijkstra at workAuckland
Wellington+∞ km
Hamilton127 km
Rotorua233 km
Taupo314 km
Napier+∞ km
New Plymouth366 km
Whanganui+∞ km
PalmerstonNorth514 km
127 km
Gisborne505 km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
73 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 233: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/233.jpg)
Dijkstra at workAuckland
Wellington+∞ km
Hamilton127 km
Rotorua233 km
Taupo314 km
Napier455 km
New Plymouth366 km
Whanganui+∞ km
PalmerstonNorth514 km
127 km
Gisborne505 km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
73 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 234: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/234.jpg)
Dijkstra at workAuckland
Wellington+∞ km
Hamilton127 km
Rotorua233 km
Taupo314 km
Napier455 km
New Plymouth366 km
Whanganui525 km
PalmerstonNorth514 km
127 km
Gisborne505 km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
73 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 235: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/235.jpg)
Dijkstra at workAuckland
Wellington774 km
Hamilton127 km
Rotorua233 km
Taupo314 km
Napier455 km
New Plymouth366 km
Whanganui525 km
PalmerstonNorth514 km
127 km
Gisborne505 km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
73 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 236: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/236.jpg)
Dijkstra at workAuckland
Wellington774 km
Hamilton127 km
Rotorua233 km
Taupo314 km
Napier455 km
New Plymouth366 km
Whanganui525 km
PalmerstonNorth514 km
127 km
Gisborne505 km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
73 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 237: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/237.jpg)
Dijkstra at workAuckland
Wellington659 km
Hamilton127 km
Rotorua233 km
Taupo314 km
Napier455 km
New Plymouth366 km
Whanganui525 km
PalmerstonNorth514 km
127 km
Gisborne505 km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
73 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 238: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/238.jpg)
Dijkstra at workAuckland
Wellington659 km
Hamilton127 km
Rotorua233 km
Taupo314 km
Napier455 km
New Plymouth366 km
Whanganui525 km
PalmerstonNorth514 km
127 km
Gisborne505 km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
73 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 239: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/239.jpg)
Dijkstra at workAuckland
Wellington659 km
Hamilton127 km
Rotorua233 km
Taupo314 km
Napier455 km
New Plymouth366 km
Whanganui525 km
PalmerstonNorth514 km
127 km
Gisborne505 km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
73 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 240: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/240.jpg)
Notes on Dijkstra• Note that the only vertices that have their total cost updated in
each iteration of the loop are those that are adjacent to the vertex that just turned black.
• Black vertices have the final minimal total cost and are never updated.
• White vertices may have their total cost updated more than once.
• Update process and selection of white vertex with lowest total cost can also be implemented as a priority queue – in which case Dijkstra becomes a simple PFS: The white vertices that have a total cost of less than infinity can be regarded as grey, and the total cost is simply the priority key. See the Dijkstra2 algorithm in the textbook.
![Page 241: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/241.jpg)
Dijkstra analysis: ϴ(n2)Start: "colour" all
vertices "white" and colour the source
vertex "black". Set the distance cost d(s,x) of all vertices to the respective c(s,x)
Select the white vertex u with the lowest d(s,x) and colour it black.
Loop through all white vertices x and set their d(s,x) to the lower of d(s,x)
and d(s,u) + c(u,x).
Are there any white vertices
left?
Done!
Yes
No
Loop runs n-1 times – one white vertex turns black in each iteration
Requires an internal loop that runs n times.Lookup of c(s,x) is ϴ(1) in adjacency matrix format orϴ(n) in adjacency list format. Total is ϴ(n2)
These items both need loops that run ϴ(n2) timeseach across all iterations ofthe outer loop.
![Page 242: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/242.jpg)
Dijkstra analysis II: ϴ((n+m) log n)• So what if we run Dijkstra using PFS with a priority queue?
• Presume we implement the queue using a binary heap.
• Then we need: n operations to insert / delete a vertex with the minimum key to / from the queue, at a cost of O(log n) each: O(nlog n)
• We also need an update (decrease) of the priority value for up to medges, at a cost of O(log n) each: O(m log n)
• Total cost in this case is thus O((n+m) log n). Do remember though that m is O(n2). So this isn't necessarily an improvement unless the graph is sparse.
![Page 243: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/243.jpg)
Lectures this week
• Lecture 7: Single‐source shortest paths (Bellman‐Ford algorithm)
• Lecture 8: All‐pairs shortest paths (Floyd's algorithm)
• Lecture 9: Minimum spanning trees
243
![Page 244: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/244.jpg)
Lecture 7
• Single‐source shortest paths (Bellman‐Ford algorithm)
244
![Page 245: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/245.jpg)
Bellman‐FordStart: Set the distance cost d(s,x) of all vertices
to +∞, except for d(s,s), which is set to 0.Set a counter i to 0.
Loop through all edges (x,y) and set d(s,y) to the lower of d(s,y) and
d(s,x) + c(x,y).Is i<n?
Done!
Yes
No
Increment i
![Page 246: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/246.jpg)
Bellman‐Ford at workAuckland
Wellington+∞ km
Hamilton+∞ km
Rotorua+∞ km
Taupo+∞ km
Napier+∞ km
New Plymouth+∞ km
Whanganui+∞ km
PalmerstonNorth+∞ km
127 km(12)
Gisborne+∞ km
378 km (9)
215 km (14)
319 km (1)
141 km (6)
81 km (11)
242 km (2)
145 km (13)
73 km (5)
387 km(10)
239 km(8)
159 km(4)
208 km(7)
106 km(3)
Source of distances: Google Maps
Note: numbers in parentheses giveone possible orderin which edges areprocessed.
![Page 247: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/247.jpg)
Bellman‐Ford at workAuckland
Wellington+∞ km
Hamilton127 km
Rotorua+∞ km
Taupo+∞ km
Napier+∞ km
New Plymouth+∞ km
Whanganui+∞ km
PalmerstonNorth+∞ km
127 km(12)
Gisborne+∞ km
378 km (9)
215 km (14)
319 km (1)
141 km (6)
81 km (11)
242 km (2)
145 km (13)
73 km (5)
387 km(10)
239 km(8)
159 km(4)
208 km(7)
106 km(3)
Source of distances: Google Maps
i=0
![Page 248: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/248.jpg)
Bellman‐Ford at workAuckland
Wellington659 km
Hamilton127 km
Rotorua233km
Taupo314 km
Napier720 km
New Plymouth366 km
Whanganui+∞ km
PalmerstonNorth514 km
127 km(12)
Gisborne505 km
378 km (9)
215 km (14)
319 km (1)
141 km (6)
81 km (11)
242 km (2)
145 km (13)
73 km (5)
387 km(10)
239 km(8)
159 km(4)
208 km(7)
106 km(3)
Source of distances: Google Maps
i=1
![Page 249: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/249.jpg)
Bellman‐Ford at workAuckland
Wellington659 km
Hamilton127 km
Rotorua233km
Taupo314 km
Napier445 km
New Plymouth366 km
Whanganui525 km
PalmerstonNorth514 km
127 km(12)
Gisborne505 km
378 km (9)
215 km (14)
319 km (1)
141 km (6)
81 km (11)
242 km (2)
145 km (13)
73 km (5)
387 km(10)
239 km(8)
159 km(4)
208 km(7)
106 km(3)
Source of distances: Google Maps
i=2
![Page 250: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/250.jpg)
Bellman‐Ford at workAuckland
Wellington659 km
Hamilton127 km
Rotorua233km
Taupo314 km
Napier445 km
New Plymouth366 km
Whanganui525 km
PalmerstonNorth514 km
127 km(12)
Gisborne505 km
378 km (9)
215 km (14)
319 km (1)
141 km (6)
81 km (11)
242 km (2)
145 km (13)
73 km (5)
387 km(10)
239 km(8)
159 km(4)
208 km(7)
106 km(3)
Source of distances: Google Maps
i>2No change!
![Page 251: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/251.jpg)
Bellman‐Ford notes• The order in which we iterate over the edges in the (inner) loop does matter: e.g.,
for i=1 we got distances for Taupo and Napier because the edges (Rotorua,Taupo) and (Gisborne,Napier) were processed after (Hamilton,Rotorua) and (Hamilton‐Gisborne)
• There is no hard and fast rule on which order to choose, however
• Note that Bellman‐Ford converged rather quickly to the result – after only 3 iterations out of a possible 9. Can stop processing if no distance has changed after an iteration.
• Note also that while Bellman‐Ford can handle negative edge weights, it cannot handle negative weight cycles (which mean that there is no solution to the minimum weight path problem anyway!)
• If we can have negative edge weights, then we must also check after running the algorithm as to whether there are any such negative weight cycles.
![Page 252: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/252.jpg)
Bellman‐Ford analysisStart: Set the distance cost d(s,x) of all vertices
to +∞, except for d(s,s), which is set to 0.Set a counter i to 0.
Loop through all edges (x,y) and set d(s,y) to the lower of d(s,y) and
d(s,x) + c(x,y).Is i<n?
Done!
Yes
No
Increment i
Requires a loop that runs n times: ϴ(n)
Outer loop runs n times: ϴ(n)
Inner loop runs m times (adjacency list): ϴ(m)or n2 times (adjacency/distance matrix): ϴ(n2)
![Page 253: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/253.jpg)
Bellman‐Ford analysis
• For sparse graphs and adjacency lists: ϴ(n)ϴ(m) = ϴ(nm)
• For dense graphs we have ϴ(m)=O(n2), so Bellman‐Ford is ϴ(n)O(n2) = O(n3).
• With an adjacency matrix: ϴ(n3).
• Conclusion: Dijkstra is faster but doesn't give the right answers when we have negative weight edges/arcs
![Page 254: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/254.jpg)
Lecture 8
• All‐pairs shortest paths (Floyd’s algorithm)
254
![Page 255: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/255.jpg)
All‐Pairs‐Shortest‐Path• Remember the distance matrix?
• Our graph is clearly connected. So how can we produce a matrix that has the actual lowest costs rather than just ∞ ?
Auckland
Hamilton
Rotorua
Gisborne
New Plymouth
Whanganui
Napier
Wellington
Taupo
Palmerston North
0208731592080145319
081242141810106
7314524203871590239
31914102151063872390378127
21537801270
Auckland
Hamilton
Rotorua
Gisb
orne
New
Plymou
th
Whanganui
Napier
Wellington
Taup
o
Palm
erston
North
![Page 256: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/256.jpg)
Options for All‐Pairs‐Shortest‐Path
• Run Dijkstra's algorithm starting at each of the n vertices: ϴ(n) for iterating through the vertices, and ϴ(n2) for each Dijkstra run. Total: ϴ(n3).
• Use the Bellman‐Ford algorithm n times: ϴ(n2m) at best, ϴ(n4) at worst!
• Alternative: Use Floyd's algorithm
![Page 257: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/257.jpg)
Floyd's algorithmStart: Set the distance cost d(x,y) of all pairs of ver ces x and y to +∞, except for d(s,s), which is set to 0.
i<n?
Done!
Yes
No
Increment i
Set a counter i=0
Set a counter j=0
j<n?
Yes
Set a counter k=0
No
Yesk<n?No
Increment j
Let x be the i'th , y the j'th and z the k'th vertex in V. Set d(y,z) to the lower of d(y,z) and d(y,x) + d(x,z).
Increment k
![Page 258: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/258.jpg)
Notes on Floyd's algorithm• Essentially just three nested loops: ϴ(n3). The outer loop
specifies the potential "via" vertex, the inner two loops the end points of the path.
• Generally faster than a Bellman‐Ford algorithm repeated ntimes.
• Not necessarily faster than Dijkstra but handles negative edge weights correctly.
• See simulator under "Resources" on Cecil (a normal HTML file, download and open in a browser)
![Page 259: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/259.jpg)
Lectures this week
• Lecture 5: Single‐source shortest paths (Bellman‐Ford algorithm)
• Lecture 6: All‐pairs shortest paths (Floyd's algorithm)
• Lecture 7: Minimum spanning trees
259
![Page 260: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/260.jpg)
Lecture 9
• Minimum spanning trees
260
![Page 261: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/261.jpg)
Spanning trees
• A spanning tree of a graph G is a connected acyclic graph T that is a spanning subgraph of G, such that V(T)=V(G) and E(T) E(G).
• That is, we can walk from any vertex of G to any other vertex of G along exactly one path whose edges are part of the tree T.
• Finding a spanning tree is easy: Run DFS or BFS from any of the vertices. If G is connected, there will be only one search tree and this will be a spanning tree.
![Page 262: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/262.jpg)
Spanning trees – yes or no?
![Page 263: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/263.jpg)
Minimum spanning trees• If G is a weighted graph (i.e., we have a
cost function c(u,v) for the cost (weight) of edge (u,v)), we can compute the total weight of a spanning tree as the sum of the weights of its edges.
• A minimum spanning tree (MST) T of G is a spanning tree with the lowest possible weight among all spanning trees of G.
• Problem: The number of possible spanning trees can be huge, so how do we find a minimum spanning tree?
• Two algorithms: Prim's algorithm and Kruskal's algorithm
25
5
182
7
8
17
6
920
![Page 264: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/264.jpg)
Note: Minimum spanning trees are not unique
1
1
1 1
1
1
![Page 265: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/265.jpg)
Prim's algorithm• Prim's algorithm is essentially the same as Dijkstra's. We simply pick one
of the vertices in G as the source.
• The differences between Dijkstra's algorithm and Prim's are:– Instead of selecting the white vertex with the shortest distance to the source,
we select the white vertex with the shortest distance to a black vertex (black vertices are part of the partial MST)
– Instead of the distance to the source in each vertex, we record the shortest distance to a black vertex (we do that by “relaxing” the edges to the white neighbours each time we turn a vertex black)
– We also store the search tree (by recording the edge through which we have last updated each vertex)
• Whenever we update the distance from the source to a vertex, we also update the information about the edge that we use to reach this vertex.
![Page 266: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/266.jpg)
Prim's algorithmStart: "colour" all vertices "white" and colour the source vertex s
"black". Set the distance cost d(x)of all vertices to the respective c(s,x). Record the parent of all
vertices x as p(x)=null, except for the neighbours of s, for which
p(x)=s
Select the white vertex u with the lowest d(u) to a black vertex x and
colour it black.
Loop through all white neighbours yof u and set their d(y) to the lower of d(y) and c(u,y). If you set it to c(u,y),
then also set p(y)=u.
Are there any white vertices
left?
Done!
Yes
No
The resulting minimum spanning tree isgiven by the black vertices x and the edges (p(x),x)
![Page 267: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/267.jpg)
Prim’s algorithm at workAuckland
Wellington+∞ km
Hamilton127 km
Rotorua+∞ km
Taupo+∞ km
Napier+∞ km
New Plymouth+∞ km
Whanganui+∞ km
PalmerstonNorth+∞ km
127 km
Gisborne+∞ km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
73 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 268: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/268.jpg)
Prim’s algorithm at workAuckland
Wellington+∞ km
Hamilton127 km
Rotorua106 km
Taupo+∞ km
Napier+∞ km
New Plymouth239 km
Whanganui+∞ km
PalmerstonNorth387 km
127 km
Gisborne378 km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
73 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 269: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/269.jpg)
Prim’s algorithm at workAuckland
Wellington+∞ km
Hamilton127 km
Rotorua106 km
Taupo81 km
Napier+∞ km
New Plymouth239 km
Whanganui+∞ km
PalmerstonNorth387 km
127 km
Gisborne378 km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
73 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 270: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/270.jpg)
Prim’s algorithm at workAuckland
Wellington+∞ km
Hamilton127 km
Rotorua106 km
Taupo81 km
Napier141 km
New Plymouth239 km
Whanganui+∞ km
PalmerstonNorth242 km
127 km
Gisborne378 km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
73 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 271: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/271.jpg)
Prim’s algorithm at workAuckland
Wellington319 km
Hamilton127 km
Rotorua106 km
Taupo81 km
Napier141 km
New Plymouth239 km
Whanganui+∞ km
PalmerstonNorth242 km
127 km
Gisborne215 km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
73 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 272: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/272.jpg)
Prim’s algorithm at workAuckland
Wellington319 km
Hamilton127 km
Rotorua106 km
Taupo81 km
Napier141 km
New Plymouth239 km
Whanganui+∞ km
PalmerstonNorth242 km
127 km
Gisborne215 km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
73 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 273: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/273.jpg)
Prim’s algorithm at workAuckland
Wellington319 km
Hamilton127 km
Rotorua106 km
Taupo81 km
Napier141 km
New Plymouth239 km
Whanganui159 km
PalmerstonNorth242 km
127 km
Gisborne215 km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
73 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 274: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/274.jpg)
73 km
Prim’s algorithm at workAuckland
Wellington208 km
Hamilton127 km
Rotorua106 km
Taupo81 km
Napier141 km
New Plymouth239 km
Whanganui159 km
PalmerstonNorth73 km
127 km
Gisborne215 km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 275: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/275.jpg)
73 km
Prim’s algorithm at workAuckland
Wellington73 km
Hamilton127 km
Rotorua106 km
Taupo81 km
Napier141 km
New Plymouth239 km
Whanganui159 km
PalmerstonNorth73 km
127 km
Gisborne215 km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 276: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/276.jpg)
73 km
Prim’s algorithm at workAuckland
Wellington73 km
Hamilton127 km
Rotorua106 km
Taupo81 km
Napier141 km
New Plymouth239 km
Whanganui159 km
PalmerstonNorth73 km
127 km
Gisborne215 km
378 km
215 km
319 km
141 km
81 km
242 km
145 km
387 km
239 km
159 km
208 km
106 km
Source of distances: Google Maps
![Page 277: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/277.jpg)
Analysis: Prim's algorithm
• Prim's algorithm is essentially the same as Dijkstra's
• The extra update of the vertex property (parent / immediate predecessor of vertex in search tree) can be done in O(1), the time complexity is the same as Dijkstra's: O((m+n) log n).
![Page 278: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/278.jpg)
Kruskal's algorithmSort edges in increasing order of weight (cost) such that
ei = (ui,vi) is the i-th"cheapest" edge. Mark all
edges as white. Set a counter i=0.
i<m?
Done!
No
Yes
Does eiconnect two
subgraphs that are currently not connected to each other by black
edges??
YesColour ei black
No
Increment i
Remove ei
![Page 279: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/279.jpg)
Kruskal's algorithm
25
5
182
7
8
17
16
920
15
4
14
11
10
6
4
![Page 280: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/280.jpg)
Kruskal's algorithm
25
5
182
7
8
17
16
920
15
4
14
11
10
6
4
![Page 281: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/281.jpg)
Kruskal's algorithm
25
5
182
7
8
17
16
920
15
4
14
11
10
6
4
i=0
![Page 282: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/282.jpg)
Kruskal's algorithm
25
5
182
7
8
17
16
920
15
4
14
11
10
6
4
i=1
![Page 283: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/283.jpg)
Kruskal's algorithm
25
5
182
7
8
17
16
920
15
4
14
11
10
6
4
i=2
![Page 284: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/284.jpg)
Kruskal's algorithm
25
5
182
7
8
17
16
920
15
4
14
11
10
6
4
i=3
![Page 285: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/285.jpg)
Kruskal's algorithm
25
5
182
7
8
17
16
920
15
4
14
11
10
6
4
i=4
![Page 286: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/286.jpg)
Kruskal's algorithm
25
5
182
7
8
17
16
920
15
4
14
11
10
6
4
i=5
![Page 287: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/287.jpg)
Kruskal's algorithm
25
5
182
7
8
17
16
920
15
4
14
11
10
6
4
i=6
![Page 288: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/288.jpg)
Kruskal's algorithm
25
5
182
7
8
17
16
920
15
4
14
11
10
6
4
i=7
![Page 289: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/289.jpg)
Kruskal's algorithm
25
5
182
7
8
17
16
920
15
4
14
11
10
6
4
i=8
![Page 290: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/290.jpg)
Kruskal's algorithm
25
5
182
7
8
17
16
920
15
4
14
11
10
6
4
i=9
![Page 291: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/291.jpg)
Kruskal's algorithm
25
5
182
7
8
17
16
920
15
4
14
11
10
6
4
i=10
![Page 292: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/292.jpg)
Kruskal's algorithm
25
5
182
7
8
17
16
920
15
4
14
11
10
6
4
i=11
![Page 293: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/293.jpg)
Kruskal's algorithm
25
5
182
7
8
17
16
920
15
4
14
11
10
6
4
i=12
![Page 294: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/294.jpg)
Kruskal's algorithm
25
5
182
7
8
17
16
920
15
4
14
11
10
6
4
i=13
![Page 295: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/295.jpg)
Kruskal's algorithm
25
5
182
7
8
17
16
920
15
4
14
11
10
6
4
i=14
![Page 296: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/296.jpg)
Kruskal's algorithm
25
5
182
7
8
17
16
920
15
4
14
11
10
6
4
i=15
![Page 297: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/297.jpg)
Kruskal's algorithm
25
5
182
7
8
17
16
920
15
4
14
11
10
6
4
i=16
![Page 298: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/298.jpg)
Analysis: Kruskal's algorithm
• Time complexity is dominated by having to sort the edges by weight: O(m log n)
• Kruskal's algorithm is a little harder to program but actually easier to do by hand
![Page 299: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/299.jpg)
Lectures this week
• Lecture 10: Review of harder graph problems
• Lecture 11: Overflow
299
![Page 300: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/300.jpg)
Lecture 10
• Review of some harder graph problems
300
![Page 301: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/301.jpg)
Harder graph problems
• Actively researched area
• Perhaps you might be able to find a solution?
• General problem: complexity of known solutions isn't polynomial – meaning the time it takes to solve the problem will quickly outgrow available resources
301
![Page 302: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/302.jpg)
Example 1
• Finding the longest path between two nodes in a digraph
• How would you tackle this problem?
302
![Page 303: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/303.jpg)
Example 2
• Finding a k‐colouring for k > 2
• This problem is often encountered by cartographers: How do you colour countries on a map in k colours such that no two adjacent countries have the same colour?
303
![Page 304: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/304.jpg)
Example 3
• The "Traveling Salesperson Problem" (also known as "Travelling Salesman Problem") ‐ TSP
• Find a minimum‐weight path that passes through all vertices in a graph
• Idea: Salesperson has to visit all cities in a country – what's the shortest route to do this by?
• One of the most famous problems in computing!
304
![Page 305: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/305.jpg)
Example 4
• Finding a Hamiltonian cycle (a cycle that passes through all vertices of a graph)
• Similar to TSP but with different constraints: no minimum weight criterion but must return to origin & not visit a vertex twice
305
![Page 306: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/306.jpg)
Example 5• Finding the largest independent set or smallest vertex cover of a graph
• An independent set is a set of vertices such that no two vertices from the set share a common edge
• A vertex cover is a set of vertices such that each vertex in the graph is adjacent to a vertex from the cover
306
![Page 307: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/307.jpg)
Approaches to hard graph problems
• May need to check all possible combinations
• Sometimes, we can discount some combinations in the search
• In some cases, it may be possible to prove that no polynomial solution exists
307
![Page 308: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/308.jpg)
A quiet reminder…
• …that your PeerWise 2 Assignment is due at 5 pm on June 7!
308
![Page 309: COMPSCI220 – Algorithms and data structures€¦ · • Don't be shy to approach me, but try and make life easier for all of us • Put "COMPSCI220" in the subject of your e‐mail](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f605a79fb162d6c7c2040c9/html5/thumbnails/309.jpg)
…and, finally:
All the best for your exam!