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/201112

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 you 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: Wed 10-11am, Thu 3-4pm Demonstrators Mr Mihai Burcea, Mr Jude-Thaddeus Ojiaku 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 : Seminar Rooms G12 or 2.23 (theoretical) or Labs 1, 2, 3 (practical) Week 2: Seminar Rooms, G12 Ashton Bldg or 2.23 Holt Bldg Class Tests: Weeks 7 & 11 (15 Mar & 3 May)

5 Algorithmic Foundations COMP108 5 (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)

6 Algorithmic Foundations COMP108 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?

7 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

8 Algorithmic Foundations COMP108 8 (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

9 Algorithmic Foundations COMP108 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 10 8 5 7 9 6 11 9 5 2 12 3 6 5 4 5 7 3 1 5 3 A B

10 Algorithmic Foundations COMP108 10 (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

11 Algorithmic Foundations COMP108 11 (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

12 Algorithmic Foundations COMP108 Number of paths = 2 Number of paths = 2 + 3 12 (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

13 Algorithmic Foundations COMP108 13 (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

14 Algorithmic Foundations COMP108 Number of paths = 2 + 3 14 (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

15 Algorithmic Foundations COMP108 15 (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

16 Algorithmic Foundations COMP108 16 (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.

17 Algorithmic Foundations COMP108 17 (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.

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 Choose city with smallest cost and go one step from there. A B 5 7 0 10

19 Algorithmic Foundations COMP108 19 (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 …

20 Algorithmic Foundations COMP108 20 (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.

21 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

22 Algorithmic Foundations COMP108 22 (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

23 Algorithmic Foundations COMP108 23 (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.

24 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); 24 (Basics)

25 Algorithmic Foundations COMP108 25 (Basics) Pseudo Code iterationip start1 113 229 3327 4481 end5 suppose n=4, x=3 trace table 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

26 Algorithmic Foundations COMP108 26 (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

27 Algorithmic Foundations COMP108 27 (Basics) Pseudo Code: iterative (loop) Iterative statement for var = start_value to end_value do statement while condition do statement repeat statement until condition condition to CONTINUE the loop condition to STOP the loop condition for while loop is NEGATION of condition for repeat-until loop

28 Algorithmic Foundations COMP108 28 (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

29 Algorithmic Foundations COMP108 29 (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

30 Algorithmic Foundations COMP108 30 (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 condition to CONTINUE the loop

31 Algorithmic Foundations COMP108 31 (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

32 Algorithmic Foundations COMP108 32 (Basics) repeat-until repeat statement until condition condition to STOP the loop Sum of all input numbers: sum = 0 repeat ask for a number sum = sum + number until (user wants to stop) output sum Stop? ask for number sum = sum+number Yes No  also execute undetermined number of times  How it differs from while-loop? execute at least once

33 Algorithmic Foundations COMP108 More Example 1 33 (Basics) input: m, n r = m q = 0 while r  = n do begin r = r − n q = q + 1 end output r and q (@ end of) iteration rq 140 1101 262 323 suppose m=14, n=4 (@ end of) iteration rq 191 242 suppose m=14, n=5 (@ end of ) iteration rq 171 202 suppose m=14, n=7 What is computed? remainder & quotient

34 Algorithmic Foundations COMP108 input: m, n if m < n then swap m & n i = n while i  = 1 do begin if m%i==0 && n%i==0 then output i i = i-1 end suppose m=15, n=6 More Example 2 34 (Basics) (@ end of ) iteration output (this iteration) i 4 143 22 321 410 suppose m=12, n=4 6 15 24 33 432 51 610 What values are output? a%b remainder of a divided b all common factors

35 Algorithmic Foundations COMP108 More Example 3 input: m, n if m < n then swap m & n i = n found = false while i  = 1 && !found do begin if m%i==0 && n%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) 35 (Basics)

36 Algorithmic Foundations COMP108 36 (Basics) Pseudo Code: Exercise Write a while-loop to 1. Find the product of all integers in interval [x, y]  e.g., if x is 2 & y is 5, then output is 2*3*4*5 = 120 assuming x and y are both integers product = ?? i = ?? while ?? do begin ?? i = ?? end output ??

37 Algorithmic Foundations COMP108 37 (Basics) Pseudo Code: Exercise Write a while-loop to 1. Find the product of all integers in interval [x, y] assuming x and y are both integers product = 1 i = x while i <= y do begin product = product * i i = i+1 end output product

38 Algorithmic Foundations COMP108 38 (Basics) Pseudo Code: Exercise 2 Write a while-loop for this: 2. Given two positive integers x and y, list all factors of x which are not factors of y  if x is 30 & y is 9, output is 2, 5, 6, 10, 15, 30 (not 1 or 3) i = ?? while ?? do begin if ?? then output ?? i = ?? end

39 Algorithmic Foundations COMP108 39 (Basics) Pseudo Code: Exercise 2 Write a while-loop for this: 2. Given two positive integers x and y, list all factors of x which are not factors of y i = 1 while i <= x do begin if x%i == 0 && y%i != 0 then output i i = i+1 end

40 Algorithmic Foundations COMP108 Challenges … Convert while-loops to for-loops & repeat-loop

41 Algorithmic Foundations COMP108 41 (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 ??

42 Algorithmic Foundations COMP108 42 (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

43 Algorithmic Foundations COMP108 43 (Basics) Convert to repeat loops Find the product of all integers in interval [x, y] assuming x and y are both integers product = 1 i = x repeat product = product * i i = i+1 until i > y output product What’s wrong with this? If given x is larger than y?

44 Algorithmic Foundations COMP108 44 (Basics) Convert to repeat loops Find the product of all integers in interval [x, y] assuming x and y are both integers product = 1 if x <= y then begin i = x repeat product = product * i i = i+1 until i > y end output product

45 Algorithmic Foundations COMP108 45 (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

46 Algorithmic Foundations COMP108 46 (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

47 Algorithmic Foundations COMP108 47 (Basics) Convert to repeat loops (2) Given two positive integers x and y, list all factors of x which are not factors of y i = ?? repeat if ?? then ?? i = ?? until ??

48 Algorithmic Foundations COMP108 48 (Basics) Convert to repeat loops (2) Given two positive integers x and y, list all factors of x which are not factors of y i = 1 repeat if x%i==0 && y%i!=0 then output i i = i+1 until i > x

49 Algorithmic Foundations COMP108 Searching …

50 Algorithmic Foundations COMP108 Searching  Input: n numbers a 1, a 2, …, a n ; and a number X  Output: determine if X is in the sequence or not  Algorithm (Sequential search): 1. From i=1, compare X with a i one by one as long as i <= n. 2. Stop and report "Found!" when X = a i. 3. Repeat and report "Not Found!" when i > n. 50 (Basics)

51 Algorithmic Foundations COMP108 Sequential Search  12342975six numbers 7number X  12342975 7  12342975 7found! To find 7 51 (Basics)

52 Algorithmic Foundations COMP108 Sequential Search (2)  12342975 10  12342975 10not found! To find 10 52 (Basics)

53 Algorithmic Foundations COMP108 Sequential Search – Pseudo Code i = 1 while i <= n do begin if X == a[i] then report "Found!" and stop else i = i+1 end report "Not Found!" Challenge: Modify it to include stopping conditions in the while loop 53 (Basics)

54 Algorithmic Foundations COMP108 Number of comparisons? i = 1 while i <= n do begin if X == a[i] then report "Found!" & stop else i = i+1 end report "Not Found!" Best case: X is 1st no.  1 comparison Worst case: X is last OR X is not found  n comparisons 54 (Basics) How many comparisons this algorithm requires?

55 Algorithmic Foundations COMP108 Finding maximum / minimum... 2 nd max / min…

56 Algorithmic Foundations COMP108 56 (Basics) Finding max from n +ve numbers input: a[1], a[2],..., a[n] M = 0 i = 0 while (i < n) do begin i = i + 1 M = max(M, a[i]) end output M What about minimum?

57 Algorithmic Foundations COMP108 57 (Basics) Finding min from n +ve numbers input: a[1], a[2],..., a[n] M = a[1] i = 1 while (i < n) do begin i = i + 1 M = min(M, a[i]) end output M How many comparisons? n-1

58 Algorithmic Foundations COMP108 58 (Basics) Finding 1 st and 2 nd min input: a[1], a[2],..., a[n] M1 = min(a[1], a[2]) M2 = max(a[1], a[2]) i = 2 while (i < n) do begin i = i + 1 if (a[i] < M1) then M2 = M1, M1 = a[i] else if (a[i] < M2) then M2 = a[i] end output M1, M2 Two variables: M1, M2 How to update M1, M2?

59 Algorithmic Foundations COMP108 59 (Basics) Finding location of minimum input: a[1], a[2],..., a[n] loc = 1 // location of the min number i = 1 while (i < n) do begin i = i + 1 if (a[i] < a[loc]) then loc = i end output a[loc] (@ end of) Iteration loca[loc]i 1 2 3 4 Example a[]={50,30,40,20,10} 50 30 20 10 1 2 2 4 5 1 2 3 4 5


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

Similar presentations


Ads by Google