inf421, lecture 2 queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · inf421,...
TRANSCRIPT
![Page 1: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/1.jpg)
INF421, Lecture 2Queues
Leo Liberti
LIX, Ecole Polytechnique, France
INF421, Lecture 2 – p. 1
![Page 2: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/2.jpg)
Course
Objective: to teach you some data structures and associated
algorithms
Evaluation: TP noté en salle info le 16 septembre, Contrôle à la fin.
Note: max(CC, 3
4CC + 1
4TP )
Organization: fri 26/8, 2/9, 9/9, 16/9, 23/9, 30/9, 7/10, 14/10, 21/10,
amphi 1030-12 (Arago), TD 1330-1530, 1545-1745 (SI31,32,33,34)
Books:
1. Ph. Baptiste & L. Maranget, Programmation et Algorithmique, Ecole Polytechnique
(Polycopié), 2006
2. G. Dowek, Les principes des langages de programmation, Editions de l’X, 2008
3. D. Knuth, The Art of Computer Programming, Addison-Wesley, 1997
4. K. Mehlhorn & P. Sanders, Algorithms and Data Structures, Springer, 2008
Website: www.enseignement.polytechnique.fr/informatique/INF421
Contact: [email protected] (e-mail subject: INF421)
INF421, Lecture 2 – p. 2
![Page 3: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/3.jpg)
Remarks on TD1
Every object must be initialized
object = something meaningful;
If L is a list of the Java library,
LinkedList<Integer> L = null;
is NOT THE EMPTY LIST!!!!
Try
LinkedList<Integer> L = new LinkedList<Integer>();
instead!
In some implementations of a list, null might be theempty list, though — just pay attention to theinstructions for using the implementation at hand
INF421, Lecture 2 – p. 3
![Page 4: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/4.jpg)
Answers to your comments
1. Rhythm: most are happy, some find it slow. Your class has a mixed level, it’s
not going to be easy to make everyone happy. I aim to keep the rhythm slow
but escalate the contents’ difficulty
2. Some material not new: this is for pedagogical reasons. If you see
different people presenting the same material in different ways, you’ll
understand it much better. Remember, this is still a foundational
course
3. Slides in print format: OK (you are SPOILED! the slides in print format
were ALREADY on the website, you could have printed them
yourselves!)
4. Code: my slides will contain pseudocode, but I’ll show you some Java
code at the end of each lecture
5. Liveliness: I enjoy lecturing and hope you’ll always find the course
lively, but there will certainly be times when you get bored. I
apologize in advance and hope these will be kept to a minimum
INF421, Lecture 2 – p. 4
![Page 5: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/5.jpg)
Lecture summary
A motivating example
Queues
Breadth-First Search (BFS)
Implementation
INF421, Lecture 2 – p. 5
![Page 6: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/6.jpg)
Motivating example
INF421, Lecture 2 – p. 6
![Page 7: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/7.jpg)
Bus network with timetables
A
1 h:00
2 h:10
3 h:30
B
1 h:00
4 h:20
5 h:40
C
2 h:10
3 h:20
5 h:30
D
4 h:20
5 h:40
6 h:50
E
2 h:05
5 h:10
6 h:30
F
3 h:25
4 h:30
6 h:40
Find a convenient itinerary from 1 to 6, leaving at h:00?
INF421, Lecture 2 – p. 7
![Page 8: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/8.jpg)
The event graph
red arrows: waiting for next bus
1 / 0 0
2 / 1 0
A/10
4 / 2 0
B/20
2 / 0 5
5
5 / 1 0E/5
3 / 2 0C/10
3 / 3 0
A/20 3 / 2 5
5
5 / 3 0
C/10
5
4 / 3 0
F/5
1 0
5 / 4 0
B/20
D/20
6 / 4 0
F/10
2 0
6 / 3 0
E/20
1 0
6 / 5 0
D/10
1 0
1 0
INF421, Lecture 2 – p. 8
![Page 9: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/9.jpg)
Finding a good itinerary
1 / 0 0
2 / 1 0
A/10
4 / 2 0
B/20
2 / 0 5
5
5 / 1 0E/5
3 / 2 0C/10
3 / 3 0
A/20 3 / 2 5
5
5 / 3 0
C/10
5
4 / 3 0
F/5
1 0
5 / 4 0
B/20
D/20
6 / 4 0
F/10
2 0
6 / 3 0
E/20
1 0
6 / 5 0
D/10
1 0
1 0
1/00
INF421, Lecture 2 – p. 9
![Page 10: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/10.jpg)
Finding a good itinerary
1/00
2 / 1 0
A/10
4 / 2 0
B/20
2 / 0 5
5
5 / 1 0
E/5
3 / 2 0C/10
3 / 3 0
A/20 3 / 2 5
5
5 / 3 0
C/10
5
4 / 3 0
F/5
1 0
5 / 4 0
B/20
D/20
6 / 4 0
F/10
2 0
6 / 3 0
E/20
1 0
6 / 5 0
D/10
1 0
1 0
1/00← 1/00
INF421, Lecture 2 – p. 9
![Page 11: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/11.jpg)
Finding a good itinerary
1 / 0 0
2/10
A/10
4/20
B/20
2 / 0 5
5
5 / 1 0E/5
3 / 2 0C/10
3 / 3 0
A/203 / 2 5
5
5 / 3 0
C/10
5
4 / 3 0
F/5
1 0
5 / 4 0
B/20
D/20
6 / 4 0
F/10
2 0
6 / 3 0
E/20
1 0
6 / 5 0
D/10
1 0
1 0
2/10 4/20
INF421, Lecture 2 – p. 9
![Page 12: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/12.jpg)
Finding a good itinerary
1 / 0 0
2/10
A/10
4 / 2 0
B/20
2 / 0 5
5
5 / 1 0E/5
3 / 2 0C/10
3 / 3 0
A/203 / 2 5
5
5 / 3 0
C/10
5
4 / 3 0
F/5
1 0
5 / 4 0
B/20
D/20
6 / 4 0
F/10
2 0
6 / 3 0
E/20
1 0
6 / 5 0
D/10
1 0
1 0
2/10← 4/20
INF421, Lecture 2 – p. 9
![Page 13: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/13.jpg)
Finding a good itinerary
1 / 0 0
2 / 1 0
A/10
4 / 2 0
B/20
2 / 0 5
5
5 / 1 0E/5
3/20C/10
3/30
A/20
3 / 2 5
5
5 / 3 0
C/10
5
4 / 3 0
F/5
1 0
5 / 4 0
B/20
D/20
6 / 4 0
F/10
2 0
6 / 3 0
E/20
1 06 / 5 0
D/10
1 0
1 0
4/20 3/20 3/30
INF421, Lecture 2 – p. 9
![Page 14: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/14.jpg)
Finding a good itinerary
1 / 0 0
2 / 1 0
A/10
4/20
B/20
2 / 0 5
5
5 / 1 0E/5
3 / 2 0C/10
3 / 3 0
A/20 3 / 2 5
5
5 / 3 0
C/10
5
4 / 3 0
F/5
1 0
5 / 4 0
B/20
D/20
6 / 4 0
F/10
2 0
6 / 3 0
E/20
1 0
6 / 5 0
D/10
1 0
1 0
4/20← 3/20 3/30
INF421, Lecture 2 – p. 9
![Page 15: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/15.jpg)
Finding a good itinerary
1 / 0 0
2 / 1 0
A/10
4 / 2 0
B/20
2 / 0 5
5
5 / 1 0E/5
3 / 2 0C/10
3 / 3 0
A/20 3 / 2 5
5
5 / 3 0
C/10
5
4/30F/5
1 0
5/40
B/20
D/20
6 / 4 0
F/10
2 0
6 / 3 0
E/20
1 0
6 / 5 0
D/10
1 0
1 0
3/20 3/30 4/30 5/40
INF421, Lecture 2 – p. 9
![Page 16: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/16.jpg)
Finding a good itinerary
1 / 0 0
2 / 1 0
A/10
4 / 2 0
B/20
2 / 0 5
5
5 / 1 0E/5
3/20C/10
3 / 3 0
A/20
3 / 2 5
5
5 / 3 0
C/10
5
4 / 3 0
F/5
1 0
5 / 4 0
B/20
D/20
6 / 4 0
F/10
2 0
6 / 3 0
E/20
1 0
6 / 5 0
D/10
1 0
1 0
3/20← 3/30 4/30 5/40
INF421, Lecture 2 – p. 9
![Page 17: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/17.jpg)
Finding a good itinerary
1 / 0 0
2 / 1 0
A/10
4 / 2 0
B/20
2 / 0 5
5
5 / 1 0E/5
3 / 2 0C/10
3 / 3 0
A/203/25
5
5/30
C/10
5
4 / 3 0F/5
1 05 / 4 0
B/20
D/20
6 / 4 0
F/10
2 0
6 / 3 0E/20
1 0
6 / 5 0
D/10
1 0
1 0
3/30 4/30 5/40 3/25 5/30
INF421, Lecture 2 – p. 9
![Page 18: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/18.jpg)
Finding a good itinerary
1 / 0 0
2 / 1 0
A/10
4 / 2 0
B/20
2 / 0 5
5
5 / 1 0E/5
3 / 2 0C/10
3/30
A/20 3 / 2 5
5
5 / 3 0
C/10
5
4 / 3 0
F/5
1 0
5 / 4 0
B/20
D/20
6 / 4 0
F/10
2 0
6 / 3 0
E/20
1 06 / 5 0
D/10
1 0
1 0
3/30← 4/30 5/40 3/25 5/30INF421, Lecture 2 – p. 9
![Page 19: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/19.jpg)
Finding a good itinerary
1 / 0 0
2 / 1 0
A/10
4 / 2 0
B/20
2 / 0 5
5
5 / 1 0E/5
3 / 2 0C/10
3 / 3 0
A/20 3 / 2 5
5
5 / 3 0
C/10
5
4 / 3 0
F/5
1 0
5 / 4 0
B/20
D/20
6 / 4 0
F/10
2 0
6 / 3 0
E/20
1 0
6 / 5 0
D/10
1 0
1 0
4/30 5/40 3/25 5/30
INF421, Lecture 2 – p. 9
![Page 20: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/20.jpg)
Finding a good itinerary
1 / 0 0
2 / 1 0
A/10
4 / 2 0
B/20
2 / 0 5
5
5 / 1 0E/5
3 / 2 0C/10
3 / 3 0
A/20 3 / 2 5
5
5 / 3 0
C/10
5
4/30
F/5
1 0
5 / 4 0
B/20
D/20
6 / 4 0
F/10
2 0
6 / 3 0
E/20
1 0
6 / 5 0
D/10
1 0
1 0
4/30← 5/40 3/25 5/30
INF421, Lecture 2 – p. 9
![Page 21: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/21.jpg)
Finding a good itinerary
1 / 0 0
2 / 1 0
A/10
4 / 2 0
B/20
2 / 0 5
5
5 / 1 0E/5
3 / 2 0C/10
3 / 3 0
A/20 3 / 2 5
5
5 / 3 0
C/10
5
4 / 3 0
F/5
1 0
5 / 4 0
B/20
D/20
6/40
F/10
2 0
6 / 3 0
E/20
1 0 6 / 5 0
D/10
1 0
1 0
5/40 3/25 5/30 6/40 found itinerary 1→6 arriving at h:40
INF421, Lecture 2 – p. 9
![Page 22: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/22.jpg)
Retrieving the path
Previous method only gives us the duration, not theactual path
At each iteration, store nodes out of queue with predecessors
pred node
- 1/00
1/00 2/10
1/00 4/20
2/10 3/20
2/10 3/30
4/20 4/30
4/30 6/40
Now retrieve path backwards: 6/40→4/30→4/20→1/00
and finally invert the path: 1/00→4/20→4/30→6/40INF421, Lecture 2 – p. 10
![Page 23: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/23.jpg)
This ain’t the fastest
Suppose there is a bus G with timetable 3/25→ 6/30
1/00
2/10
4/20
2/05
5/10
3/20
3/30
3/25
5/30
4/30
5/40
6/40
6/30
6/50
A/10
B/20
5
E/5
C/10
A/20
5
C/10
5
F/5
10
B/20
D/20
F/10
20
E/20
10
D/10
10
10
G/5
3/25 is still in the queue ( 5/40 3/25 5/30 6/40 ) at termination, can’t reach 6/30
INF421, Lecture 2 – p. 11
![Page 24: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/24.jpg)
What did we find?
In order to find the fastest itinerary, must changetermination conditioninstead of stopping when the arrival node is found,
let τ∗ be the arrival time of best solution so far
let τ ′ be the minimum time of the nodes in the queue
if (τ ′ ≥ τ∗) then
terminate
endif
INF421, Lecture 2 – p. 12
![Page 25: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/25.jpg)
What did we find?
In order to find the fastest itinerary, must changetermination conditioninstead of stopping when the arrival node is found,
let τ∗ be the arrival time of best solution so far
let τ ′ be the minimum time of the nodes in the queue
if (τ ′ ≥ τ∗) then
terminate
endif
What are the properties of our itinerary?
INF421, Lecture 2 – p. 12
![Page 26: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/26.jpg)
What did we find?
In order to find the fastest itinerary, must changetermination conditioninstead of stopping when the arrival node is found,
let τ∗ be the arrival time of best solution so far
let τ ′ be the minimum time of the nodes in the queue
if (τ ′ ≥ τ∗) then
terminate
endif
What are the properties of our itinerary?
We found the itinerary with fewest changes
where “bus, waiting, bus” counts as two changes, not one
INF421, Lecture 2 – p. 12
![Page 27: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/27.jpg)
What did we find?
In order to find the fastest itinerary, must changetermination conditioninstead of stopping when the arrival node is found,
let τ∗ be the arrival time of best solution so far
let τ ′ be the minimum time of the nodes in the queue
if (τ ′ ≥ τ∗) then
terminate
endif
What are the properties of our itinerary?
We found the itinerary with fewest changes
where “bus, waiting, bus” counts as two changes, not one
In order to prove these two statements, we need toformalize our method into an algorithm
INF421, Lecture 2 – p. 12
![Page 28: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/28.jpg)
What did we find?
In order to find the fastest itinerary, must changetermination conditioninstead of stopping when the arrival node is found,
let τ∗ be the arrival time of best solution so far
let τ ′ be the minimum time of the nodes in the queue
if (τ ′ ≥ τ∗) then
terminate
endif
What are the properties of our itinerary?
We found the itinerary with fewest changes
where “bus, waiting, bus” counts as two changes, not one
In order to prove these two statements, we need toformalize our method into an algorithm
So, we need to describe our “queue” as a data structureINF421, Lecture 2 – p. 12
![Page 29: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/29.jpg)
Queues
INF421, Lecture 2 – p. 13
![Page 30: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/30.jpg)
Queue operations
In our example, we needed our “queue” to be able toperform the following operations:
insert an element at the end of the queue
retrieve and delete the element at the beginning of the queue
test if the queue is empty
find the size of the queue
INF421, Lecture 2 – p. 14
![Page 31: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/31.jpg)
Queue operations
In our example, we needed our “queue” to be able toperform the following operations:
insert an element at the end of the queue
retrieve and delete the element at the beginning of the queue
test if the queue is empty
find the size of the queue
Since these operations were repeated often, we needthem to be O(1)
INF421, Lecture 2 – p. 14
![Page 32: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/32.jpg)
Queue operations
In our example, we needed our “queue” to be able toperform the following operations:
insert an element at the end of the queue
retrieve and delete the element at the beginning of the queue
test if the queue is empty
find the size of the queue
Since these operations were repeated often, we needthem to be O(1)
Could implement these using:
arrays
Need to simulate insert/delete using pointers
lists
Each insert/delete involves memory allocation
INF421, Lecture 2 – p. 14
![Page 33: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/33.jpg)
Circular arrays
Implementation using a circular array q [Mehlhorn & Sanders’ book]
Uses modular arithmetic (usually pretty fast)
d0
d1
d2
d3⊥
q0
qh
qt
n
qh = d0 (first
element of queue)
qt = ⊥ delimits
the end of the
queue
qi is unused for
0 ≤ i < h and
t < i ≤ n
actual implemen-
tation of a circular
array is simply an
array; but the be-
haviour will be dif-
ferent
INF421, Lecture 2 – p. 15
![Page 34: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/34.jpg)
Read beginning of queue
first() {
return qh;
}
d0
d1
d2
d3⊥
q0
qh
qt
n
INF421, Lecture 2 – p. 16
![Page 35: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/35.jpg)
Delete beginning of queue
popFront() {
p = qh;h = (h+ 1) mod (n+ 1);return p;
}
d0
d1
d2
d3⊥
q0
qh
qt
n
INF421, Lecture 2 – p. 17
![Page 36: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/36.jpg)
Insert at the end of queue
pushBack(d) {
assert(size() < n)qt = d;t = (t+ 1) mod (n+ 1);qt = ⊥;
}
d0
d1
d2
d3d
⊥
q0
qh
qt
n
INF421, Lecture 2 – p. 18
![Page 37: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/37.jpg)
Insert at the end (case t = n)
d0
d1
d2d3d4
d5
d6
d7
d8
⊥
q0
qh
t = n
→
⊥
d0
d1
d2d3d4
d5
d6
d7
d8
d
t = 0
qh
qn
t = (t+ 1) mod (n+ 1) with t = n implies t = 0
INF421, Lecture 2 – p. 19
![Page 38: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/38.jpg)
Size and emptiness
isEmpty(): if (t = h) then return true; else return false;
⊥
q0
h = t
qn
INF421, Lecture 2 – p. 20
![Page 39: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/39.jpg)
Size and emptiness
isEmpty(): if (t = h) then return true; else return false;
size(): return (t− h+ n+ 1) mod (n+ 1);
d3
d4
⊥d0
d1
d2
q0
qtqh
qn
INF421, Lecture 2 – p. 20
![Page 40: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/40.jpg)
BFS
INF421, Lecture 2 – p. 21
![Page 41: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/41.jpg)
The BFS algorithm
Input: set V , binary relation ∼ on V , and s 6= t ∈ V
1: (Q,<) = {s}; L = {s};2: while Q 6= ∅ do3: u = min<Q;4: Q← Qr {u};5: for v ∈ V (v ∼ u ∧ v 6∈ L) do6: if v = t then7: return “t reachable”;8: end if9: Q← Q ∪ {v}, set v = max<Q;
10: L← L ∪ {v};11: end for12: end while13: return “t unreachable”;
INF421, Lecture 2 – p. 22
![Page 42: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/42.jpg)
The order on Q
The ordered set Q is implemented as a queue
INF421, Lecture 2 – p. 23
![Page 43: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/43.jpg)
The order on Q
The ordered set Q is implemented as a queue
Every v ∈ V enters Q as the maximum element (i.e. , thelast)
INF421, Lecture 2 – p. 23
![Page 44: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/44.jpg)
The order on Q
The ordered set Q is implemented as a queue
Every v ∈ V enters Q as the maximum element (i.e. , thelast)
We only read (and remove) the minimum element of Q(i.e. the first)
INF421, Lecture 2 – p. 23
![Page 45: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/45.jpg)
The order on Q
The ordered set Q is implemented as a queue
Every v ∈ V enters Q as the maximum element (i.e. , thelast)
We only read (and remove) the minimum element of Q(i.e. the first)
Every other element of Q is never touched
INF421, Lecture 2 – p. 23
![Page 46: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/46.jpg)
The order on Q
The ordered set Q is implemented as a queue
Every v ∈ V enters Q as the maximum element (i.e. , thelast)
We only read (and remove) the minimum element of Q(i.e. the first)
Every other element of Q is never touched
The relative order of a consecutive subsequenceu1, . . . , uh of Q is unchanged
INF421, Lecture 2 – p. 23
![Page 47: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/47.jpg)
The order on Q
The ordered set Q is implemented as a queue
Every v ∈ V enters Q as the maximum element (i.e. , thelast)
We only read (and remove) the minimum element of Q(i.e. the first)
Every other element of Q is never touched
The relative order of a consecutive subsequenceu1, . . . , uh of Q is unchanged
Also, by the test v 6∈ L at Step 5, we have:Thm. 1
No element of V enters Q more than once
INF421, Lecture 2 – p. 23
![Page 48: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/48.jpg)
A node hierarchy
Consider a function α : V → N defined as follows:
at Step 1, let α(s) = 0
at Step 9, let α(v) = α(u) + 1
This ranks the elements of V by distance from s interms of relation pairs
E.g. if s ∼ u, then u’s distance from s is 1if s ∼ u ∼ v, v’s distance from s is 2
INF421, Lecture 2 – p. 24
![Page 49: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/49.jpg)
The BFS, again
1: (Q,<) = {s}; L = {s};
2: α(s) = 0;
3: while Q 6= ∅ do4: u = min<Q;5: Q← Qr {u};6: for v ∈ V (v ∼ u ∧ v 6∈ L) do
7: α(v) = α(u) + 1;
8: if v = t then9: return “t reachable”;
10: end if11: Q← Q ∪ {v}, set v = max<Q;12: L← L ∪ {v};13: end for14: end while15: return “t unreachable”;
INF421, Lecture 2 – p. 25
![Page 50: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/50.jpg)
Basic results
We have the following results (try and prove them):Thm. 2
If (s, v1, . . . , vk) is any itinerary found by BFS, α(vk) = k
INF421, Lecture 2 – p. 26
![Page 51: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/51.jpg)
Basic results
We have the following results (try and prove them):Thm. 2
If (s, v1, . . . , vk) is any itinerary found by BFS, α(vk) = k
Thm. 3
If α(u) < α(v), then u enters Q before v does
INF421, Lecture 2 – p. 26
![Page 52: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/52.jpg)
Basic results
We have the following results (try and prove them):Thm. 2
If (s, v1, . . . , vk) is any itinerary found by BFS, α(vk) = k
Thm. 3
If α(u) < α(v), then u enters Q before v does
Thm. 4
No itinerary found by BFS has repeated elements
INF421, Lecture 2 – p. 26
![Page 53: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/53.jpg)
Basic results
We have the following results (try and prove them):Thm. 2
If (s, v1, . . . , vk) is any itinerary found by BFS, α(vk) = k
Thm. 3
If α(u) < α(v), then u enters Q before v does
Thm. 4
No itinerary found by BFS has repeated elements
Thm. 5
The function α is well defined
INF421, Lecture 2 – p. 26
![Page 54: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/54.jpg)
Fewest changes
Aim to prove that BFS finds an itinerary with fewest changes
Remark: the number of changes in an itinerary is thesame as the number of nodes in that itinerary, hence:Thm.
BFS finds a shortest itinerary
Idea of proof:
found by BFS
shortest
0 1 ℓ h− 1 ℓ+1<h
ℓ+ 1 = h
s
uℓ
vh−1
vh
α
INF421, Lecture 2 – p. 27
![Page 55: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/55.jpg)
The proof
Thm.
BFS finds a shortest itinerary (in terms of number ofnodes)
Proof
Let R = (s, v1, . . . , vk = t) be the itinerary found by BFS:suppose it is not shortest. Let h ≤ k be the smallest indexsuch that R′ = (s, . . . , vh−1, vh) is not shortest from s→ vh.By Thm. 2, α(vh) = h. Since this itinerary is not shortest,there must be a different itinerary P = (s, u1, . . . , uℓ, vh)which is shortest: then necessarily we have ℓ + 1 < h,hence ℓ < h. By Thm. 2 again and induction we haveα(uℓ) = ℓ; moreover by Thm. 3 uℓ enters Q before vh, soBFS finds the itinerary P before R′. Now uℓ ∼ vh+1 yieldsα(vh) = ℓ+ 1 < h = α(vh), contradiction.
INF421, Lecture 2 – p. 28
![Page 56: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/56.jpg)
Finding all shortest itineraries
Delete Steps 8-10
All elements in V enter and exit Q
Finds shortest itineraries from s to all elements of V
WARNING: BFS will not find shortest paths in a
weighted graph unless all the arc costs are 1
INF421, Lecture 2 – p. 29
![Page 57: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/57.jpg)
What about fastest?
Every time we insert v at the end of Q, we also recordthe arrival time at v using the travelling informationabout the relation u ∼ v
INF421, Lecture 2 – p. 30
![Page 58: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/58.jpg)
What about fastest?
Every time we insert v at the end of Q, we also recordthe arrival time at v using the travelling informationabout the relation u ∼ v
We keep track of the minimum time τ ′ over all elements ofQ
INF421, Lecture 2 – p. 30
![Page 59: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/59.jpg)
What about fastest?
Every time we insert v at the end of Q, we also recordthe arrival time at v using the travelling informationabout the relation u ∼ v
We keep track of the minimum time τ ′ over all elements ofQ
Whenever we extract the arrival node t from Q, we havea possible itinerary s→ t; among these itineraries, wekeep track best arrival time τ∗ to t so far
INF421, Lecture 2 – p. 30
![Page 60: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/60.jpg)
What about fastest?
Every time we insert v at the end of Q, we also recordthe arrival time at v using the travelling informationabout the relation u ∼ v
We keep track of the minimum time τ ′ over all elements ofQ
Whenever we extract the arrival node t from Q, we havea possible itinerary s→ t; among these itineraries, wekeep track best arrival time τ∗ to t so far
We update τ∗ whenever we find a better itinerary s→ t
INF421, Lecture 2 – p. 30
![Page 61: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/61.jpg)
What about fastest?
Every time we insert v at the end of Q, we also recordthe arrival time at v using the travelling informationabout the relation u ∼ v
We keep track of the minimum time τ ′ over all elements ofQ
Whenever we extract the arrival node t from Q, we havea possible itinerary s→ t; among these itineraries, wekeep track best arrival time τ∗ to t so far
We update τ∗ whenever we find a better itinerary s→ t
As soon as τ ′ ≥ τ∗, we know we have a shortestitinerary (why?)
INF421, Lecture 2 – p. 30
![Page 62: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/62.jpg)
Implementation
INF421, Lecture 2 – p. 31
![Page 63: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/63.jpg)
A possible implementation
1: L is initialized to {s};
2: Q is an empty queue;
3: α(s) = 0;
4: Q.pushBack(s);
5: while ¬(Q.isEmpty()) do
6: u = Q.popFront();
7: for v ∈ V (v ∼ u∧ v 6∈ L) do
8: α(v) = α(u) + 1
9: if v = t then
10: return α(v);
11: end if
12: Q.pushBack(v);
13: L.pushBack(v);
14: end for
15: end while
16: return “t unreachable”;
1: L = {s};
2: (Q,<) = ∅;
3: α(s) = 0;
4: (Q,<) = {s};
5: while Q 6= ∅ do
6: u = min< Q; Q← Qr {u};
7: for v ∈ V (v ∼ u∧ v 6∈ L) do
8: α(v) = α(u) + 1
9: if v = t then
10: return α(v);
11: end if
12: Q← Q ∪ {v} (v = max< Q);
13: L← L ∪ {v};
14: end for
15: end while
16: return “t unreachable”;
INF421, Lecture 2 – p. 32
![Page 64: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/64.jpg)
Its problems
How efficiently can you implement Step 7?
for v ∈ V (v ∼ u ∧ v 6∈ L) do
INF421, Lecture 2 – p. 33
![Page 65: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/65.jpg)
Its problems
How efficiently can you implement Step 7?
for v ∈ V (v ∼ u ∧ v 6∈ L) do
Looping over V : worst case O(|V |)
INF421, Lecture 2 – p. 33
![Page 66: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/66.jpg)
Its problems
How efficiently can you implement Step 7?
for v ∈ V (v ∼ u ∧ v 6∈ L) do
Looping over V : worst case O(|V |)
For each v, check whether v ∼ u
with a jagged array, the u-th row can have size at worst O(|V |), if
every v is in relation with u
if we keep a map A : V × V → {0, 1} such that A(u, v) = 1
whenever u ∼ v and 0 otherwise, we reduce this to O(1)
INF421, Lecture 2 – p. 33
![Page 67: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/67.jpg)
Its problems
How efficiently can you implement Step 7?
for v ∈ V (v ∼ u ∧ v 6∈ L) do
Looping over V : worst case O(|V |)
For each v, check whether v ∼ u
with a jagged array, the u-th row can have size at worst O(|V |), if
every v is in relation with u
if we keep a map A : V × V → {0, 1} such that A(u, v) = 1
whenever u ∼ v and 0 otherwise, we reduce this to O(1)
For each v, also check whether v 6∈ L: worst caseO(|V |) (when most nodes of V have been put into L)
INF421, Lecture 2 – p. 33
![Page 68: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/68.jpg)
Its problems
How efficiently can you implement Step 7?
for v ∈ V (v ∼ u ∧ v 6∈ L) do
Looping over V : worst case O(|V |)
For each v, check whether v ∼ u
with a jagged array, the u-th row can have size at worst O(|V |), if
every v is in relation with u
if we keep a map A : V × V → {0, 1} such that A(u, v) = 1
whenever u ∼ v and 0 otherwise, we reduce this to O(1)
For each v, also check whether v 6∈ L: worst caseO(|V |) (when most nodes of V have been put into L)
A worst case complexity of O(|V |(1 + |V |)) = O(|V |2)
INF421, Lecture 2 – p. 33
![Page 69: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/69.jpg)
Its problems
How efficiently can you implement Step 7?
for v ∈ V (v ∼ u ∧ v 6∈ L) do
Looping over V : worst case O(|V |)
For each v, check whether v ∼ u
with a jagged array, the u-th row can have size at worst O(|V |), if
every v is in relation with u
if we keep a map A : V × V → {0, 1} such that A(u, v) = 1
whenever u ∼ v and 0 otherwise, we reduce this to O(1)
For each v, also check whether v 6∈ L: worst caseO(|V |) (when most nodes of V have been put into L)
A worst case complexity of O(|V |(1 + |V |)) = O(|V |2)
Repeated in the external loop: get O(|V |3) overall: ugh!
INF421, Lecture 2 – p. 33
![Page 70: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/70.jpg)
A more efficient alternative
We initialize the node ranking function α so thatα(u) = |V |+ 1 for all u ∈ V r {s} before Step 5
INF421, Lecture 2 – p. 34
![Page 71: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/71.jpg)
A more efficient alternative
We initialize the node ranking function α so thatα(u) = |V |+ 1 for all u ∈ V r {s} before Step 5
Remark that, by induction from α(s) = 0, whenever α(v)is updated at Step 8 its value is always ≤ |V |
INF421, Lecture 2 – p. 34
![Page 72: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/72.jpg)
A more efficient alternative
We initialize the node ranking function α so thatα(u) = |V |+ 1 for all u ∈ V r {s} before Step 5
Remark that, by induction from α(s) = 0, whenever α(v)is updated at Step 8 its value is always ≤ |V |
Since v is inserted into L after α(v) is updated at Step 8,for each v ∈ V we have that v ∈ L if and only ifα(v) ≤ |V |
INF421, Lecture 2 – p. 34
![Page 73: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/73.jpg)
A more efficient alternative
We initialize the node ranking function α so thatα(u) = |V |+ 1 for all u ∈ V r {s} before Step 5
Remark that, by induction from α(s) = 0, whenever α(v)is updated at Step 8 its value is always ≤ |V |
Since v is inserted into L after α(v) is updated at Step 8,for each v ∈ V we have that v ∈ L if and only ifα(v) ≤ |V |
Change loop at Step 7 as follows:
for v ∈ V (v ∼ u ∧ α(v) = |V |+ 1) do
INF421, Lecture 2 – p. 34
![Page 74: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/74.jpg)
A more efficient alternative
We initialize the node ranking function α so thatα(u) = |V |+ 1 for all u ∈ V r {s} before Step 5
Remark that, by induction from α(s) = 0, whenever α(v)is updated at Step 8 its value is always ≤ |V |
Since v is inserted into L after α(v) is updated at Step 8,for each v ∈ V we have that v ∈ L if and only ifα(v) ≤ |V |
Change loop at Step 7 as follows:
for v ∈ V (v ∼ u ∧ α(v) = |V |+ 1) do
Now worst-case complexity is O(|V |)(table look-up in O(1))
INF421, Lecture 2 – p. 34
![Page 75: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/75.jpg)
A more efficient alternative
We initialize the node ranking function α so thatα(u) = |V |+ 1 for all u ∈ V r {s} before Step 5
Remark that, by induction from α(s) = 0, whenever α(v)is updated at Step 8 its value is always ≤ |V |
Since v is inserted into L after α(v) is updated at Step 8,for each v ∈ V we have that v ∈ L if and only ifα(v) ≤ |V |
Change loop at Step 7 as follows:
for v ∈ V (v ∼ u ∧ α(v) = |V |+ 1) do
Now worst-case complexity is O(|V |)(table look-up in O(1))
Hence, we have O(|V |2) overall
INF421, Lecture 2 – p. 34
![Page 76: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/76.jpg)
A better worst-case analysis
The internal loop
for v ∈ V (v ∼ u ∧ α(v) = |V |+ 1) do
only loops over relation pairs (u, v)
INF421, Lecture 2 – p. 35
![Page 77: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/77.jpg)
A better worst-case analysis
The internal loop
for v ∈ V (v ∼ u ∧ α(v) = |V |+ 1) do
only loops over relation pairs (u, v)
Because u is never considered more than once by Thm. 1, it follows
that no pair (u, v) is ever considered more than once over all
iterations w.r.t. both loops
INF421, Lecture 2 – p. 35
![Page 78: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/78.jpg)
A better worst-case analysis
The internal loop
for v ∈ V (v ∼ u ∧ α(v) = |V |+ 1) do
only loops over relation pairs (u, v)
Because u is never considered more than once by Thm. 1, it follows
that no pair (u, v) is ever considered more than once over all
iterations w.r.t. both loops
At worst, the instruction Q.pushBack(v) can only be repeated as
many times as there are pairs in the relation ∼
INF421, Lecture 2 – p. 35
![Page 79: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/79.jpg)
A better worst-case analysis
The internal loop
for v ∈ V (v ∼ u ∧ α(v) = |V |+ 1) do
only loops over relation pairs (u, v)
Because u is never considered more than once by Thm. 1, it follows
that no pair (u, v) is ever considered more than once over all
iterations w.r.t. both loops
At worst, the instruction Q.pushBack(v) can only be repeated as
many times as there are pairs in the relation ∼
Moreover, we execute the body of the outer loop at least |V | times
INF421, Lecture 2 – p. 35
![Page 80: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/80.jpg)
A better worst-case analysis
The internal loop
for v ∈ V (v ∼ u ∧ α(v) = |V |+ 1) do
only loops over relation pairs (u, v)
Because u is never considered more than once by Thm. 1, it follows
that no pair (u, v) is ever considered more than once over all
iterations w.r.t. both loops
At worst, the instruction Q.pushBack(v) can only be repeated as
many times as there are pairs in the relation ∼
Moreover, we execute the body of the outer loop at least |V | times
Asymptotically, we cannot compare n,m: it depends on the graph
INF421, Lecture 2 – p. 35
![Page 81: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/81.jpg)
A better worst-case analysis
The internal loop
for v ∈ V (v ∼ u ∧ α(v) = |V |+ 1) do
only loops over relation pairs (u, v)
Because u is never considered more than once by Thm. 1, it follows
that no pair (u, v) is ever considered more than once over all
iterations w.r.t. both loops
At worst, the instruction Q.pushBack(v) can only be repeated as
many times as there are pairs in the relation ∼
Moreover, we execute the body of the outer loop at least |V | times
Asymptotically, we cannot compare n,m: it depends on the graph
⇒ The worst-case complexity of BFS is then O(|V |+ | ∼ |)
INF421, Lecture 2 – p. 35
![Page 82: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/82.jpg)
BFS: a French publication record
INF421, Lecture 2 – p. 36
![Page 83: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/83.jpg)
History of BFS
BFS was “discovered” by several people, and no-onequite knows who was the first
The first official publication BFS is usually pointed out to bea paper written by E.F. Moore, called The shortest path
through a maze, which appeared in the proceedings of a1959 conference
In fact, the book Theorie des graphes et ses applications byClaude Berge, published in 1958, contains a descriptionof BFS applied to finding shortest paths
INF421, Lecture 2 – p. 37
![Page 84: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/84.jpg)
Berge’s problem statement
INF421, Lecture 2 – p. 38
![Page 85: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/85.jpg)
Berge’s algorithm
INF421, Lecture 2 – p. 39
![Page 86: INF421, Lecture 2 Queues - lix.polytechnique.frliberti/teaching/dix/inf421-11/... · INF421, Lecture 2 Queues Leo Liberti ... Code: my slides will contain pseudocode, but I’ll show](https://reader031.vdocuments.us/reader031/viewer/2022022019/5b98819209d3f2210c8c4cf0/html5/thumbnails/86.jpg)
End of Lecture 2
INF421, Lecture 2 – p. 40