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
Chapter 2- Visual Basic Schneider1 Chapter 2 Problem Solving.
CSE 1301 Lecture 6B More Repetition Figures from Lewis, “C# Software Solutions”, Addison Wesley Briana B. Morrison.
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
Pseudocode and Algorithms
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 16: Recursion.
ALGORITHMS AND FLOW CHARTS 1 Adapted from the slides Prepared by Department of Preparatory year Prepared by: lec. Ghader Kurdi.
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.
The break and continue statements. Introduction There are 2 special statements that can affect the execution of loop statements (such as a while-statement)
Adapted from slides by Marie desJardins
Introduction Dr. Ying Lu RAIK 283: Data Structures & Algorithms.
DCT 1123 PROBLEM SOLVING & ALGORITHMS INTRODUCTION TO PROGRAMMING.
Introduction CSE 1310 – Introduction to Computers and Programming
CS223 Algorithms D-Term 2013 Instructor: Mohamed Eltabakh WPI, CS Introduction Slide 1.
High-Level Programming Languages: C++
Algorithmic Problem Solving CMSC 201 Adapted from slides by Marie desJardins (Spring 2015 Prof Chang version)
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Fundamentals of Software Development 1Slide 1 Loops A loop is:A loop is: –a block of code that executes repeatedly while some condition holds true. Java.
Copyright © Cengage Learning. All rights reserved. CHAPTER 4 ELEMENTARY NUMBER THEORY AND METHODS OF PROOF.
S2008Final_part1.ppt CS11 Introduction to Programming Final Exam Part 1 S A computer is a mechanical or electrical device which stores, retrieves,
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.
 Wednesday, 9/18/02, Slide #1 CS106 Introduction to CS1 Wednesday, 9/18/02  QUESTIONS?? HW #1 due today at 5!!  Today: Loops, and two new data types.
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
Advanced Program Design. Review  Step 1: Problem analysis and specification –Specification description of the problem’s inputs and output –Analysis generalize.
Algorithms Java Methods A & AB Object-Oriented Programming and Data Structures Maria Litvin ● Gary Litvin Copyright © 2006 by Maria Litvin, Gary Litvin,
Overview Go over parts of quiz? Another iteration structure for loop.
Fundamentals of Software Development 1Slide 1 Loops A loop is:A loop is: –a block of code that executes repeatedly while some condition holds true. Java.
Programming and Languages Dept. of Computer and Information Science IUPUI.
Think Possibility 1 Iterative Constructs ITERATION / LOOPS C provides three loop structures: the for-loop, the while-loop, and the do-while-loop. Each.
Textbook C for Scientists and Engineers © Prentice Hall 1997 Available at NUS CO-OP at S$35.10.
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.
Low-Level Programming Languages, Pseudocode and Testing Chapter 6.
Algorithmic Foundations COMP108 COMP108 Algorithmic Foundations Algorithm efficiency Prudence Wong
Algorithmic Foundations COMP108 COMP108 Algorithmic Foundations Basics Prudence Wong
Introduction to Algorithms
ALGORITHMS AND FLOWCHARTS
CS1022 Computer Programming & Principles
COMP108 Algorithmic Foundations Basics
COMP108 Algorithmic Foundations Algorithm efficiency
Chapter 5: Control Structure
Lecture 07 More Repetition Richard Gesick.
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.
Learning to Program in Python
Program Design Introduction to Computer Programming By:
Algorithm Discovery and Design
King Saud University College Of Applied Studies and Community Services CSC 1101 Computer Programming-1 Done By: Asmal Alosaimi Edited By: Fatimah Alakeel.
Algorithm and Ambiguity
Let’s all Repeat Together
King Saud University College Of Applied Studies and Community Services CSC 1101 Computer Programming-1 Done By: Asmal Alosaimi Edited By: Fatimah Alakeel.
Programming Fundamentals (750113) Ch1. Problem Solving
Introduction to Algorithms
ICT Gaming Lesson 2.
Programming Fundamentals (750113) Ch1. Problem Solving
Application: Algorithms
COMP108 Algorithmic Foundations Basics
Basic Concepts of Algorithm
WJEC GCSE Computer Science
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 Dr Prudence Wong Rm 3.18 Ashton Building, 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

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 – 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)

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,

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

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

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

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

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