Algorithmic Foundations COMP108 COMP108 Algorithmic Foundations Basics Prudence Wong

Slides:



Advertisements
Similar presentations
CS107 Introduction to Computer Science Lecture 2.
Advertisements

Programming Types of Testing.
Chapter 1 - An Introduction to Computers and Problem Solving
CSE 1301 Lecture 6B More Repetition Figures from Lewis, “C# Software Solutions”, Addison Wesley Briana B. Morrison.
1 9/29/06CS150 Introduction to Computer Science 1 Loops Section Page 255.
1 9/28/07CS150 Introduction to Computer Science 1 Loops section 5.2, 5.4, 5.7.
CS107 Introduction to Computer Science Lecture 2.
Program Design and Development
Writing algorithms using the while-statement. Previously discussed Syntax of while-statement:
Introduction to Programming (in C++) Introduction Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC.
Adapted from slides by Marie desJardins
Introduction Dr. Ying Lu RAIK 283: Data Structures & Algorithms.
DCT 1123 PROBLEM SOLVING & ALGORITHMS INTRODUCTION TO PROGRAMMING.
CS223 Algorithms D-Term 2013 Instructor: Mohamed Eltabakh WPI, CS Introduction Slide 1.
Algorithmic Problem Solving CMSC 201 Adapted from slides by Marie desJardins (Spring 2015 Prof Chang version)
Copyright © Cengage Learning. All rights reserved. CHAPTER 4 ELEMENTARY NUMBER THEORY AND METHODS OF PROOF.
Data Structures and Algorithms Introduction to Algorithms M. B. Fayek CUFE 2006.
Chapter 1 Introduction Chapter 1 Introduction 1 st Semester 2015 CSC 1101 Computer Programming-1.
1 09/20/04CS150 Introduction to Computer Science 1 Let ’ s all Repeat Together.
CS101 Computer Programming I Chapter 4 Extra Examples.
Algorithm Design.
Algorithmic Foundations COMP108 COMP108 Algorithmic Foundations Basics Prudence Wong
Algorithmic Foundations COMP108 COMP108 Algorithmic Foundations Basics Prudence Wong
Overview Go over parts of quiz? Another iteration structure for loop.
COMP Loop Statements Yi Hong May 21, 2015.
Application: Algorithms Lecture 19 Section 3.8 Tue, Feb 20, 2007.
CS Class 04 Topics  Selection statement – IF  Expressions  More practice writing simple C++ programs Announcements  Read pages for next.
Algorithmic Foundations COMP108 COMP108 Algorithmic Foundations Algorithm efficiency Prudence Wong.
Algorithmic Foundations COMP108 COMP108 Algorithmic Foundations Algorithm efficiency Prudence Wong
Introduction to Algorithms
ALGORITHMS AND FLOWCHARTS
CS1010 Programming Methodology
REPETITION CONTROL STRUCTURE
CS1022 Computer Programming & Principles
COMP108 Algorithmic Foundations Basics
COMP108 Algorithmic Foundations Algorithm efficiency
GC101 Introduction to computers and programs
Chapter 3 Loops Section 3.3 Slides prepared by Rose Williams, Binghamton University Kenrick Mock, University of Alaska Anchorage.
Chapter 5: Control Structure
Introduction To Flowcharting
Courtsey & Copyright: DESIGN AND ANALYSIS OF ALGORITHMS Courtsey & Copyright:
Repetition-Counter control Loop
Lecture 07 More Repetition Richard Gesick.
Algorithm and Ambiguity
Lecture 4B More Repetition Richard Gesick
Definition In simple terms, an algorithm is a series of instructions to solve a problem (complete a task) We focus on Deterministic Algorithms Under the.
Repetition and Loop Statements
Designing and Debugging Batch and Interactive COBOL Programs
Learning to Program in Python
Program Design Introduction to Computer Programming By:
Programming Fundamentals (750113) Ch1. Problem Solving
Algorithm Discovery and Design
Topic 1: Problem Solving
Loops CIS 40 – Introduction to Programming in Python
Coding Concepts (Basics)
Problem Solving Skill Area 305.1
Algorithm and Ambiguity
Let’s all Repeat Together
Programming Fundamentals (750113) Ch1. Problem Solving
Introduction to Algorithms
ICT Gaming Lesson 2.
Programming Fundamentals (750113) Ch1. Problem Solving
Loops.
Application: Algorithms
Application: Algorithms
COMP108 Algorithmic Foundations Basics
Basic Concepts of Algorithm
Using C++ Arithmetic Operators and Control Structures
WJEC GCSE Computer Science
Advanced Analysis of Algorithms
Presentation transcript:

Algorithmic Foundations COMP108 COMP108 Algorithmic Foundations Basics Prudence Wong

Algorithmic Foundations COMP108 Crossing Night 1 min 2 min 5 min 10 min each time, 2 persons share a torch they speed of slower person Target: all cross the bridge Can we do it in 17 mins?

Algorithmic Foundations COMP108 3 (Basics) Module Information Professor Prudence Wong Rm 3.18 Ashton Building, 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

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, Tutorials/Labs Location : Lecture Rooms (theoretical) or Lab (practical) Week 2: Theoretical – Lecture Rooms

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)

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)

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?

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

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

Algorithmic Foundations COMP (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 A B

Algorithmic Foundations COMP (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

Algorithmic Foundations COMP (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

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

Algorithmic Foundations COMP (Basics) Shortest path to go from A to B How many paths between A & B? involving 3 intermediate cities? A B Number of paths = 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

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

Algorithmic Foundations COMP (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

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

Algorithmic Foundations COMP (Basics) Idea of Dijkstra's algorithm A B Go one step from A, label the neighbouring cities with the cost.

Algorithmic Foundations COMP (Basics) Idea of Dijkstra's algorithm Choose city with smallest cost and go one step from there. A B

Algorithmic Foundations COMP (Basics) 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 Then repeat & repeat …

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

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

Algorithmic Foundations COMP (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

Algorithmic Foundations COMP (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 Repeat the multiplication p = p * x for n times. 3. Output the result p.

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)

Algorithmic Foundations COMP (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

Algorithmic Foundations COMP (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

Algorithmic Foundations COMP (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

Algorithmic Foundations COMP (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

Algorithmic Foundations COMP (Basics) for loop iterationisum start 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

Algorithmic Foundations COMP (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

Algorithmic Foundations COMP (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

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 suppose x=14, y=4 end of) iteration rq suppose x=14, y=5 end of ) iteration rq suppose x=14, y=7 What is computed? remainder & quotient

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

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 suppose x=12, y= What values are output? a%b remainder of a divided b all common factors

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)

Algorithmic Foundations COMP (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 x 11 x x -3 x x x -1 x 0 x 10

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

Algorithmic Foundations COMP (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

Algorithmic Foundations COMP (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

Algorithmic Foundations COMP (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

Algorithmic Foundations COMP (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, , 2, 3, 5, 6, 10, 15, 302, 5, 6, 10, 15, , 3-

Algorithmic Foundations COMP (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

Algorithmic Foundations COMP (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

Algorithmic Foundations COMP (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

Algorithmic Foundations COMP (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,