Download presentation
Presentation is loading. Please wait.
Published byEmmeline Copeland Modified over 8 years ago
1
Algorithmic Foundations COMP108 COMP108 Algorithmic Foundations Basics Prudence Wong http://www.csc.liv.ac.uk/~pwong/teaching/comp108/201516
2
Algorithmic Foundations COMP108 Crossing Bridge @ Night 1 min 2 min 5 min 10 min each time, 2 persons share a torch they walk @ speed of slower person Target: all cross the bridge Can we do it in 17 mins?
3
Algorithmic Foundations COMP108 3 (Basics) Module Information Professor Prudence Wong Rm 3.18 Ashton Building, pwong@liverpool.ac.uk office hours: Tue 12-1pm 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
4
Algorithmic Foundations COMP108 4 (Basics) Module Information (2) Teaching, Assessments and Help 33 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
5
Algorithmic Foundations COMP108 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 7, Fri 18 th Mar Assessment 2 Tutorials 7 – 11 (Weeks 8-12) Class Test 2: Week 12, Fri 13 th May 5 (Basics)
6
Algorithmic Foundations COMP108 6 (Basics) Why COMP108? Pre-requisite for: COMP202, COMP218 (COMP202 is pre-requisite for COMP309) Algorithm design is a foundation for efficient and effective programs "Year 1 modules do not count towards honour classification…" (Career Services: Employers DO consider year 1 module results)
7
Algorithmic Foundations COMP108 7 (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?
8
Algorithmic Foundations COMP108 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
9
Algorithmic Foundations COMP108 9 (Basics) What is an algorithm? A sequence of precise and concise instructions that guide you (or a computer) to solve a specific problem Daily life examples: cooking recipe, furniture assembly manual (What are input / output in each case?) Input Algorithm Output
10
Algorithmic Foundations COMP108 10 (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 10 8 5 7 9 6 11 9 5 2 12 3 6 5 4 5 7 3 1 5 3 A B
11
Algorithmic Foundations COMP108 11 (Basics) Shortest path to go from A to B How many paths between A & B? involving 1 intermediate city? Simple solution Compute the cost of each path from A to B Choose the cheapest one A B 2 The obvious solution to a problem may not be efficient
12
Algorithmic Foundations COMP108 12 (Basics) Shortest path to go from A to B How many paths between A & B? involving 3 intermediate cities? A B 2 Number of paths = 2 Simple solution Compute the cost of each path from A to B Choose the cheapest one The obvious solution to a problem may not be efficient
13
Algorithmic Foundations COMP108 Number of paths = 2 Number of paths = 2 + 3 13 (Basics) Shortest path to go from A to B How many paths between A & B? involving 3 intermediate cities? A B 3 Simple solution Compute the cost of each path from A to B Choose the cheapest one The obvious solution to a problem may not be efficient
14
Algorithmic Foundations COMP108 14 (Basics) Shortest path to go from A to B How many paths between A & B? involving 3 intermediate cities? A B Number of paths = 2 + 3 Simple solution Compute the cost of each path from A to B Choose the cheapest one The obvious solution to a problem may not be efficient
15
Algorithmic Foundations COMP108 Number of paths = 2 + 3 15 (Basics) Shortest path to go from A to B How many paths between A & B? involving 3 intermediate cities? A B 6 Number of paths = 2 + 3 + 6 = 11 Simple solution Compute the cost of each path from A to B Choose the cheapest one The obvious solution to a problem may not be efficient
16
Algorithmic Foundations COMP108 16 (Basics) Shortest path to go from A to B How many paths between A & B? involving 5 intermediate cities? A B For large n, it’s impossible to check all paths! We need more sophisticated solutions TOO MANY!! Simple solution Compute the cost of each path from A to B Choose the cheapest one The obvious solution to a problem may not be efficient
17
Algorithmic Foundations COMP108 17 (Basics) Shortest path to go from A to B A B There is an algorithm, called Dijkstra's algorithm, that can compute this shortest path efficiently.
18
Algorithmic Foundations COMP108 18 (Basics) Idea of Dijkstra's algorithm 10 8 5 7 9 6 11 9 5 2 12 3 6 5 4 5 7 3 1 5 3 A B 10 5 7 0 Go one step from A, label the neighbouring cities with the cost.
19
Algorithmic Foundations COMP108 19 (Basics) Idea of Dijkstra's algorithm 10 8 5 7 9 6 11 9 5 2 12 3 6 5 4 5 7 3 1 5 3 Choose city with smallest cost and go one step from there. A B 5 7 0 10
20
Algorithmic Foundations COMP108 20 (Basics) 10 8 5 7 9 6 11 9 5 2 12 3 6 5 4 5 7 3 1 5 3 Idea of Dijkstra's algorithm If an alternative cheaper path is found, record this path and erase the more expensive one. A B 7 0 This path must NOT be used because we find a cheaper alternative path 108 5 Then repeat & repeat …
21
Algorithmic Foundations COMP108 21 (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.
22
Algorithmic Foundations COMP108 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
23
Algorithmic Foundations COMP108 23 (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
24
Algorithmic Foundations COMP108 24 (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.
25
Algorithmic Foundations COMP108 Pseudo Code pseudo code: p = 1 for i = 1 to n do p = p * x output p C++: 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); 25 (Basics)
26
Algorithmic Foundations COMP108 26 (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
27
Algorithmic Foundations COMP108 27 (Basics) Pseudo Code: conditional Conditional statement if condition then statement if condition then statement else statement if a > 0 then b = a else b = -a output b if a < 0 then a = -a b = a output b What is computed? absolute value
28
Algorithmic Foundations COMP108 28 (Basics) Pseudo Code: iterative (loop) Iterative statement for var = start_value to end_value do statement while condition do statement condition to CONTINUE the loop var automatically increased by 1 after each iteration
29
Algorithmic Foundations COMP108 29 (Basics) for loop i=1 i <= n? sum = sum+i No Yes Sum of 1 st 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 do statement the loop is executed n times
30
Algorithmic Foundations COMP108 30 (Basics) for loop iterationisum start0 111 223 336 4410 end5 suppose n=4 Sum of 1 st 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 do statement the loop is executed n times trace table
31
Algorithmic Foundations COMP108 31 (Basics) while loop while condition do statement Sum of 1 st 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
32
Algorithmic Foundations COMP108 32 (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 2 execute undetermined number of times continue? ask for number sum = sum+number No Yes
33
Algorithmic Foundations COMP108 More Example 1 33 (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 rq 140 1101 262 323 suppose x=14, y=4 (@ end of) iteration rq 191 242 suppose x=14, y=5 (@ end of ) iteration rq 171 202 suppose x=14, y=7 What is computed? remainder & quotient
34
Algorithmic Foundations COMP108 More Example 1 - Note 34 (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
35
Algorithmic Foundations COMP108 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 35 (Basics) (@ end of ) iteration output (this iteration) i 1 112 223 34 445 suppose x=12, y=4 1 112 23 334 45 56 67 What values are output? a%b remainder of a divided b all common factors
36
Algorithmic Foundations COMP108 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? Highest Common Factor (HCF) Greatest Common Divisor (GCD) 36 (Basics)
37
Algorithmic Foundations COMP108 37 (Basics) Developing pseudo code Write a while-loop to Find the product of all integers in interval [x, y] Examples assuming x and y are both integers xycalculationproduct 252 x 3 x 4 x 5120 101210 x 11 x 121320 -4-2-4 x -3 x -2-24 -6-5-6 x -530 -21-2 x -1 x 0 x 10
38
Algorithmic Foundations COMP108 38 (Basics) Developing pseudo code Write 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 ??
39
Algorithmic Foundations COMP108 39 (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
40
Algorithmic Foundations COMP108 40 (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
41
Algorithmic Foundations COMP108 41 (Basics) Common Mistakes product = 1 i = x while i <= y do begin product = product * i i = i+1 end output product while x <= y do infinite loop because x does not get changed in the loop product = 0 answer becomes 0 product * x incorrect! will multiply x for y times, i.e., calculate x y forget i=i+1 infinite loop because i does not get changed in the loop
42
Algorithmic Foundations COMP108 42 (Basics) Pseudo Code: Exercise Write a while-loop for this: Given two positive integers x and y, list all factors of x which are not factors of y Examples xyfactors of xoutput 631, 2, 3, 62, 6 3091, 2, 3, 5, 6, 10, 15, 302, 5, 6, 10, 15, 30 361, 3-
43
Algorithmic Foundations COMP108 43 (Basics) Pseudo Code: Exercise Write a while-loop for this: Given two positive integers x and y, list all factors of x which are not factors of y i = ?? while ?? do begin if ?? then output ?? i = ?? end
44
Algorithmic Foundations COMP108 44 (Basics) Pseudo Code: Exercise Write a while-loop for this: Given two positive integers x and y, list all factors of x which are not factors of y Two subproblems: find all factors of x if it is not a factor of y, output it
45
Algorithmic Foundations COMP108 45 (Basics) Find all factors of x factor 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
46
Algorithmic Foundations COMP108 46 (Basics) 1. All factors of x i = 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,
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.