Presentation is loading. Please wait.

Presentation is loading. Please wait.

Algorithmic Foundations COMP108 COMP108 Algorithmic Foundations Basics Prudence Wong

Similar presentations


Presentation on theme: "Algorithmic Foundations COMP108 COMP108 Algorithmic Foundations Basics Prudence Wong"— Presentation transcript:

1 Algorithmic Foundations COMP108 COMP108 Algorithmic Foundations Basics Prudence Wong http://www.csc.liv.ac.uk/~pwong/teaching/comp108/201415

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 Dr Prudence Wong Rm 3.18 Ashton Building, pwong@liverpool.ac.uk office hours: Thu 1-2pm 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 – 5 (Weeks 2-6)  Class Test 1: Week 6, Fri 13 th Mar  Assessment 2  Tutorials 6 – 11 (Weeks 7-12)  Class Test 2: Week 11, Fri 8 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,

47 Algorithmic Foundations COMP108 Challenges … Convert while-loops to for-loops

48 Algorithmic Foundations COMP108 48 (Basics) Convert to for loops Find the product of all integers in interval [x, y] assuming x and y are both integers product = ?? for i = ?? to ?? do begin ?? end output ?? product = 1 i = x while i <= y do begin product = product * i i = i+1 end output product Note: this form of for- loop automatically increase the value of i every iteration

49 Algorithmic Foundations COMP108 49 (Basics) Convert to for loops Find the product of all integers in interval [x, y] assuming x and y are both integers product = 1 for i = x to y do begin product = product * i end output product product = 1 i = x while i <= y do begin product = product * i i = i+1 end output product

50 Algorithmic Foundations COMP108 50 (Basics) Convert to for loops (2) Given two positive integers x and y, list all factors of x which are not factors of y for i = ?? to ?? do begin if ?? then ?? end i = 1 while i <= x do begin if x%i==0 && y%i!=0 then output i i = i + 1 end

51 Algorithmic Foundations COMP108 51 (Basics) Convert to for loops (2) Given two positive integers x and y, list all factors of x which are not factors of y for i = 1 to x do begin if x%i==0 && y%i!=0 then output i end i = 1 while i <= x do begin if x%i==0 && y%i!=0 then output i i = i + 1 end


Download ppt "Algorithmic Foundations COMP108 COMP108 Algorithmic Foundations Basics Prudence Wong"

Similar presentations


Ads by Google