Download - COMP108 Algorithmic Foundations
![Page 1: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/1.jpg)
Algorithmic FoundationsCOMP108
COMP108Algorithmic Foundations
Basics
Prudence Wong
http://www.csc.liv.ac.uk/~pwong/teaching/comp108/201617
![Page 2: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/2.jpg)
Algorithmic FoundationsCOMP108
Crossing Bridge @ Night
1 min
2 min
5 min
10 min
each time, 2 persons share a torchthey walk @ speed of slower person
Target: all cross the bridge
Can we do it in 17 mins?
![Page 3: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/3.jpg)
Algorithmic FoundationsCOMP108
3
(Basics)
Module InformationProfessor Prudence Wong
Rm 3.18 Ashton Building, [email protected]
office hours: Tue 10-11am
Demonstrators
Mr Thomas Carroll, Mr Reino Niskanen
References
Main: Introduction to the Design and Analysis of Algorithms. A. V. Levitin. Addison Wesley.
Reference: Introduction to Algorithms. T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein. The MIT Press
![Page 4: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/4.jpg)
Algorithmic FoundationsCOMP108
4
(Basics)
Module Information (2)Teaching, Assessments and Help
36 lectures, 11 tutorials
2 assessments (20%), 1 written exam (80%)
Office hours, email
Tutorials/Labs
Location :
Lecture Rooms (theoretical) or
Lab (practical)
Week 2: Theoretical – Lecture Rooms
![Page 5: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/5.jpg)
Algorithmic FoundationsCOMP108
Module Information (3)� Each assessment has two components
� Tutorial participation (25%)
� Class Test (75%)
� Assessment 1
� Tutorials 1 – 6 (Weeks 2-7)
� Class Test 1: Week 8, Thu 23rd Mar
� Assessment 2
� Tutorials 7 – 11 (Weeks 8-12)
� Class Test 2: Week 12, Thu 11th May
5
(Basics)
![Page 6: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/6.jpg)
Algorithmic FoundationsCOMP108
6
(Basics)
Aims� To give an overview of the study of algorithms in
terms of their efficiency.
� To introduce the standard algorithmic design paradigms employed in the development of efficient algorithmic solutions.
� To describe the analysis of algorithms in terms of the use of formal models of Time and Space.
What do we mean by good?
How to achieve?
Can we prove?
![Page 7: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/7.jpg)
Algorithmic FoundationsCOMP108
Ready to start …
Learning outcomes
� Able to tell what an algorithm is & have some understanding why we study algorithms
� Able to use pseudo code to describe algorithm
![Page 8: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/8.jpg)
Algorithmic FoundationsCOMP108
8
(Basics)
What is an algorithm?A sequence of precise and concise instructions
that guide you (or a computer) to solve a specificproblem
Daily life examples: cooking recipe, furniture assembly manual(What are input / output in each case?)
Input Algorithm Output
![Page 9: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/9.jpg)
Algorithmic FoundationsCOMP108
9
(Basics)
Why do we study algorithms?
Given a map of n cities & traveling cost between them.
What is the cheapest way to go from city A to city B?
The obvious solution to a problem may not be efficient
Simple solution� Compute the cost of each
path from A to B� Choose the cheapest one
108
5
79
6
11
95
2
123
65
4
5
7
3
1
5
3
A
B
![Page 10: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/10.jpg)
Algorithmic FoundationsCOMP108
10
(Basics)
Shortest path to go from A to B
How many paths between A & B? involving 1 intermediate city?
A
B
The obvious solution to a problem may not be efficient
3?
TOO MANY!!
5?
For large n, it’s impossible to check all paths!We need more sophisticated solutions
![Page 11: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/11.jpg)
Algorithmic FoundationsCOMP108
11
(Basics)
Shortest path to go from A to B
A
B
Lesson to learn:Brute force algorithm may run slowly. We need more sophisticated algorithms.
There is an algorithm, called Dijkstra's algorithm, that can compute this shortest path efficiently.
![Page 12: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/12.jpg)
Algorithmic FoundationsCOMP108
How to represent algorithms …� Able to tell what an algorithm is and have
some understanding why we study algorithms
� Able to use pseudo code to describe algorithm
![Page 13: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/13.jpg)
Algorithmic FoundationsCOMP108
13
(Basics)
Algorithm vs Program
Algorithms are free from grammatical rules� Content is more important than form
� Acceptable as long as it tells people how to perform a task
Programs must follow some syntax rules� Form is important
� Even if the idea is correct, it is still not acceptable if there is syntax error
An algorithm is a sequence of precise and concise instructions that guide a person/computer to solve a specific problem
![Page 14: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/14.jpg)
Algorithmic FoundationsCOMP108
14
(Basics)
Compute the n-th power
Input: a number x & a non-negative integer n
Output: the n-th power of x
Algorithm:
1. Set a temporary variable p to 1.
2. Repeat the multiplication p = p * x for n times.
3. Output the result p.
![Page 15: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/15.jpg)
Algorithmic FoundationsCOMP108
Pseudo Code pseudo code:
p = 1
for i = 1 to n do
p = p * x
output pC++:
p = 1;
for (i=1; i<=n; i++)
p = p * x;
cout << p << endl;
C:
p = 1;
for (i=1; i<=n; i++)
p = p * x;
printf("%d\n", p);
Java:
p = 1;
for (i=1; i<=n; i++)
p = p * x;
System.out.println(p);
Pascal:
p := 1;
for i := 1 to n do
p := p * x;
writeln(p);
15
(Basics)
![Page 16: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/16.jpg)
Algorithmic FoundationsCOMP108
16
(Basics)
Pseudo Code
p = 1
for i = 1 to n do
p = p * x
output p
Another way to describe algorithm is by pseudo code
similar to programming language
more like English Combination of both
![Page 17: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/17.jpg)
Algorithmic FoundationsCOMP108
17
(Basics)
Pseudo Code: conditional
Conditional statementif condition then
statement
if condition thenstatement
elsestatement
if a > 0 then
b = a
else
b = -a
output b
if a < 0 then
a = -a
b = a
output b
What is computed?
![Page 18: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/18.jpg)
Algorithmic FoundationsCOMP108
18
(Basics)
Pseudo Code: iterative (loop)
Iterative statementfor var = start_value to end_value dostatement
while condition do
statementcondition to CONTINUE the loop
var automatically increased by 1 after each iteration
![Page 19: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/19.jpg)
Algorithmic FoundationsCOMP108
19
(Basics)
for loop
i=1
i <= n?
sum = sum+i
No
Yes
Sum of 1st n nos.:
input: n
sum = 0
for i = 1 to n do
begin
sum = sum + i
end
output sum
i=i+1
sum=0
for var = start_value to end_value dostatement
the loop is executed n times
![Page 20: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/20.jpg)
Algorithmic FoundationsCOMP108
20
(Basics)
for loop
iteration i sum
start 0
1 1 1
2 2 3
3 3 6
4 4 10
end 5
suppose n=4
Sum of 1st n nos.:
input: n
sum = 0
for i = 1 to n do
begin
sum = sum + i
end
output sum
for var = start_value to end_value dostatement
the loop is executed n times trace table
![Page 21: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/21.jpg)
Algorithmic FoundationsCOMP108
21
(Basics)
while loopwhile condition do
statement
Sum of 1st n numbers:
input: n
sum = 0
i = 1
while i <= n do
begin
sum = sum + i
i = i + 1
end
output sum
� Do the same as for-loop in previous slides
� It requires to increment i explicitly
condition to CONTINUE the loop
![Page 22: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/22.jpg)
Algorithmic FoundationsCOMP108
22
(Basics)
Sum of all input numbers:
sum = 0
while (user wants to continue) do
begin
ask for a number
sum = sum + number
end
output sum
while loop – example 2execute undeterminednumber of times
continue?
ask for number
sum = sum+number
No
Yes
![Page 23: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/23.jpg)
Algorithmic FoundationsCOMP108
More Example 1
23
(Basics)
input: x, y
r = x
q = 0
while r >= y do
begin
r = r − y
q = q + 1
end
output r and q
(@ end of) iteration r q
14 0
1 10 1
2 6 2
3 2 3
suppose x=14, y=4
(@ end of) iteration r q
1 9 1
2 4 2
suppose x=14, y=5
(@ end of ) iteration r q
1 7 1
2 0 2
suppose x=14, y=7What is computed?
![Page 24: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/24.jpg)
Algorithmic FoundationsCOMP108
More Example 1 - Note
24
(Basics)
input: x, y
r = x
q = 0
while r >= y do
begin
r = r − y
q = q + 1
end
output r and q
if condition is r >= ??then in the loop we need to decrease r
if condition is r <= ??then in the loop we need to increase r
![Page 25: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/25.jpg)
Algorithmic FoundationsCOMP108
input: x, y
i = 1
while i <= y do
begin
if x%i==0 && y%i==0
then output i
i = i+1
end
suppose x=15, y=6
More Example 2
25
(Basics)
(@ end of )
iterationoutput (this
iteration)i
1
1 1 2
2 2 3
3 4
4 4 5
suppose x=12, y=4
1
1 1 2
2 3
3 3 4
4 5
5 6
6 7
What values are output?
a%b
remainder ofa divided b
![Page 26: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/26.jpg)
Algorithmic FoundationsCOMP108
More Example 3
input: x, y
i = y
found = false
while i >= 1 && !found do
begin
if x%i==0 && y%i==0
then found = true
else i = i-1
end
output i
What value is output?
Questions:� what value of found makes
the loop stop?� when does found change
to such value? 26
(Basics)
![Page 27: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/27.jpg)
Algorithmic FoundationsCOMP108
27
(Basics)
Developing pseudo codeWrite a while-loop to
Find the product of all integers in interval [x, y]
� Examples
assuming x and y are both integers
x y calculation product
2 5 2 x 3 x 4 x 5 120
10 12 10 x 11 x 12 1320
-4 -2 -4 x -3 x -2 -24
-6 -5 -6 x -5 30
-2 1 -2 x -1 x 0 x 1 0
![Page 28: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/28.jpg)
Algorithmic FoundationsCOMP108
28
(Basics)
Developing pseudo codeWrite a while-loop to
Find the product of all integers in interval [x, y]
assuming x and y are both integers
product = ??
i = ??
while ?? do
begin
??
i = ??
end
output ??
![Page 29: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/29.jpg)
Algorithmic FoundationsCOMP108
29
(Basics)
Find the product of all integers in interval [x, y]What variables do we need?�one to store answer, call it product�one to iterate from x to y, call it i
product = ??
i = ??
initial value of i? how i changes in loop?�i start from x; i increase by 1 in loop
product = ??
i = x
while ?? do
begin
??
i = i + 1
end
What to do in loop?� update product multiply it by i
product = product * i
Loop condition?� continue as long as i is at most y
while i <= y
initial value of product?�multiplication identity
product = 1
![Page 30: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/30.jpg)
Algorithmic FoundationsCOMP108
30
(Basics)
Developing pseudo code
Find the product of all integers in interval [x, y]
product = 1
i = x
while i <= y do
begin
product = product * i
i = i+1
end
output product
![Page 31: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/31.jpg)
Algorithmic FoundationsCOMP108
31
(Basics)
Common Mistakesproduct = 1
i = x
while i <= y do
begin
product = product * i
i = i+1
end
output product
while x <= y doinfinite loop because x does
not get changed in the loop
product = 0answer becomes 0
product * xincorrect! will multiply x for
y times, i.e., calculate xy
forget i=i+1infinite loop because i does
not get changed in the loop
![Page 32: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/32.jpg)
Algorithmic FoundationsCOMP108
32
(Basics)
Pseudo Code: ExerciseWrite a while-loop for this:
Given two positive integers x and y, list all factorsof x which are not factors of y
� Examples
x y factors of x output
6 3 1, 2, 3, 6 2, 6
30 9 1, 2, 3, 5, 6, 10, 15, 30 2, 5, 6, 10, 15, 30
3 6 1, 3 -
![Page 33: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/33.jpg)
Algorithmic FoundationsCOMP108
33
(Basics)
Pseudo Code: ExerciseWrite a while-loop for this:
Given two positive integers x and y, list all factorsof x which are not factors of y
i = ??
while ?? do
begin
if ?? then
output ??
i = ??
end
![Page 34: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/34.jpg)
Algorithmic FoundationsCOMP108
34
(Basics)
Pseudo Code: ExerciseWrite a while-loop for this:
Given two positive integers x and y, list all factorsof x which are not factors of y
Two subproblems:
�find all factors of x
�if it is not a factor of y, output it
![Page 35: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/35.jpg)
Algorithmic FoundationsCOMP108
35
(Basics)
Find all factors of xfactor of x must be between 1 and x�variable i to iterate from 1 to x
i = 1
while i <= x do
begin
…
i = i + 1
end
if i is divisible by x, then it is a factor of x�remainder of i divided by x is 0
if x%i==0 then
output i
Therefore:i = 1
while i <= x do
begin
if x%i==0 then
output i
i = i + 1
end
![Page 36: COMP108 Algorithmic Foundations](https://reader030.vdocuments.us/reader030/viewer/2022020910/6200aeebd74fc744ba3f56c2/html5/thumbnails/36.jpg)
Algorithmic FoundationsCOMP108
36
(Basics)
1. All factors of xi = 1
while i <= x do
begin
if x%i==0 then
output i
i = i + 1
end
� remainder of i divided by x is 0� remainder of i divided by y is not 0
if x%i==0 && y%i!=0 then
output i
i = 1
while i <= x do
begin
if x%i==0 && y%i!=0 then
output i
i = i + 1
end
2. Factors of x but not factor of y
3. Finally,