Rosen 5th ed., §2.1 ~31 slides, ~1 lecture

Slides:



Advertisements
Similar presentations
College of Information Technology & Design
Advertisements

College of Information Technology & Design
MATH 224 – Discrete Mathematics
CompSci 102 Discrete Math for Computer Science
Introduction to Analysis of Algorithms
CSE115/ENGR160 Discrete Mathematics 02/24/11 Ming-Hsuan Yang UC Merced 1.
CSE115/ENGR160 Discrete Mathematics 03/03/11 Ming-Hsuan Yang UC Merced 1.
Chapter 2: Algorithm Discovery and Design
The Fundamentals: Algorithms, the Integers & Matrices.
CHAPTER 7: SORTING & SEARCHING Introduction to Computer Science Using Ruby (c) Ophir Frieder at al 2012.
February 17, 2015Applied Discrete Mathematics Week 3: Algorithms 1 Double Summations Table 2 in 4 th Edition: Section th Edition: Section th.
High-Level Programming Languages: C++
An ordered sequence of unambiguous and well-defined instructions that performs some task and halts in finite time Let's examine the four parts of this.
Chapter 3: The Fundamentals: Algorithms, the Integers, and Matrices
C. – C. Yao Data Structure. C. – C. Yao Chap 1 Basic Concepts.
Data Structures & AlgorithmsIT 0501 Algorithm Analysis I.
Discrete Structures Lecture 11: Algorithms Miss, Yanyan,Ji United International College Thanks to Professor Michael Hvidsten.
Invitation to Computer Science, Java Version, Second Edition.
Chapter 3 Sec 3.3 With Question/Answer Animations 1.
ดร.สุรศักดิ์ มังสิงห์ SPU, Computer Science Dept.
Chapter Algorithms 3.2 The Growth of Functions 3.3 Complexity of Algorithms 3.4 The Integers and Division 3.5 Primes and Greatest Common Divisors.
1 Section 2.1 Algorithms. 2 Algorithm A finite set of precise instructions for performing a computation or for solving a problem.
Based on Rosen, Discrete Mathematics & Its Applications, 5e Prepared by (c) Michael P. Frank Modified by (c) Haluk Bingöl 1/18 Module.
Discrete Mathematics 1 Kemal Akkaya DISCRETE MATHEMATICS Lecture 10 Dr. Kemal Akkaya Department of Computer Science.
ALGORITHMS.
Module #5 - Algorithms 1 Module #5: Algorithms Rosen 5 th ed., §2.1 ~31 slides, ~1 lecture.
8.1 8 Algorithms Foundations of Computer Science  Cengage Learning.
1 Discrete Structures – CNS2300 Text Discrete Mathematics and Its Applications Kenneth H. Rosen (5 th Edition) Chapter 2 The Fundamentals: Algorithms,
INVITATION TO Computer Science 1 11 Chapter 2 The Algorithmic Foundations of Computer Science.
Copyright © 2014 Curt Hill Algorithms From the Mathematical Perspective.
Ch03-Algorithms 1. Algorithms What is an algorithm? An algorithm is a finite set of precise instructions for performing a computation or for solving a.
Chapter 3 Chapter Summary  Algorithms o Example Algorithms searching for an element in a list sorting a list so its elements are in some prescribed.
Discrete Mathematics Chapter 2 The Fundamentals : Algorithms, the Integers, and Matrices. 大葉大學 資訊工程系 黃鈴玲.
PROGRAMMING: What’s It All About?
Searching and Sorting Searching algorithms with simple arrays
CSE15 Discrete Mathematics 03/06/17
Growth of Functions & Algorithms
Applied Discrete Mathematics Week 2: Functions and Sequences
Analysis of Algorithms
COP 3503 FALL 2012 Shayan Javed Lecture 15
Data Structures and Algorithms
GC211Data Structure Lecture2 Sara Alhajjam.
COT 3100, Spring 2001 Applications of Discrete Structures
Today’s topics Algorithms Reading: Sections Upcoming
Lecture 3 of Computer Science II
Algorithm Analysis CSE 2011 Winter September 2018.
Enough Mathematical Appetizers!
Lecture 2: Introduction to Algorithms
Computation.
Chapter 10 Programming Fundamentals with JavaScript
Algorithms Chapter 3 With Question/Answer Animations
Algorithm design and Analysis
Analysis Algorithms.
Algorithm An algorithm is a finite set of steps required to solve a problem. An algorithm must have following properties: Input: An algorithm must have.
Module #7: Algorithmic Complexity
Algorithm Discovery and Design
Rosen 5th ed., §2.1 ~31 slides, ~1 lecture
Applied Discrete Mathematics Week 6: Computation
Algorithm Discovery and Design
Discrete Mathematics and its Applications
High Level Programming Languages
Basics of Recursion Programming with Recursion
Module #7: Algorithmic Complexity
Enough Mathematical Appetizers!
Revision of C++.
Discrete Mathematics and its Applications
Enough Mathematical Appetizers!
Basic Concepts of Algorithm
Algorithms.
Discrete Mathematics CS 2610
Presentation transcript:

Rosen 5th ed., §2.1 ~31 slides, ~1 lecture Module #5: Algorithms Rosen 5th ed., §2.1 ~31 slides, ~1 lecture 2019-01-18 (c)2001-2002, Michael P. Frank

Chapter 2: More Fundamentals §2.1: Algorithms (Formal procedures) §2.2: Complexity of algorithms Analysis using order-of-growth notation. §2.3: The Integers & Division Some basic number theory. §2.6: Matrices Some basic linear algebra. 2019-01-18 (c)2001-2002, Michael P. Frank

§2.1: Algorithms The foundation of computer programming. Most generally, an algorithm just means a definite procedure for performing some sort of task. A computer program is simply a description of an algorithm in a language precise enough for a computer to understand, requiring only operations the computer already knows how to do. We say that a program implements (or “is an implementation of”) its algorithm. 2019-01-18 (c)2001-2002, Michael P. Frank

Algorithms You Already Know Grade school arithmetic algorithms: How to add any two natural numbers written in decimal on paper using carries. Similar: Subtraction using borrowing. Multiplication & long division. Your favorite cooking recipe. How to register for classes at UF. 2019-01-18 (c)2001-2002, Michael P. Frank

Programming Languages Some common programming languages: Newer: Java, C, C++, Visual Basic, JavaScript, Perl, Tcl, Pascal Older: Fortran, Cobol, Lisp, Basic Assembly languages, for low-level coding. In this class we will use an informal, Pascal-like “pseudo-code” language. You should know at least 1 real language! 2019-01-18 (c)2001-2002, Michael P. Frank

Algorithm Example (English) Task: Given a sequence {ai}=a1,…,an, aiN, say what its largest element is. Set the value of a temporary variable v (largest element seen so far) to a1’s value. Look at the next element ai in the sequence. If ai>v, then re-assign v to the number ai. Repeat previous 2 steps until there are no more elements in the sequence, & return v. 2019-01-18 (c)2001-2002, Michael P. Frank

Executing an Algorithm When you start up a piece of software, we say the program or its algorithm are being run or executed by the computer. Given a description of an algorithm, you can also execute it by hand, by working through all of its steps on paper. Before ~WWII, “computer” meant a person whose job was to run algorithms! 2019-01-18 (c)2001-2002, Michael P. Frank

Executing the Max algorithm Let {ai}=7,12,3,15,8. Find its maximum… Set v = a1 = 7. Look at next element: a2 = 12. Is a2>v? Yes, so change v to 12. Look at next element: a2 = 3. Is 3>12? No, leave v alone…. Is 15>12? Yes, v=15… 2019-01-18 (c)2001-2002, Michael P. Frank

Algorithm Characteristics Some important features of algorithms: Input. Information or data that comes in. Output. Information or data that goes out. Definiteness. Precisely defined. Correctness. Outputs correctly relate to inputs. Finiteness. Won’t take forever to describe or run. Effectiveness. Individual steps are all do-able. Generality. Works for many possible inputs. Efficiency. Takes little time & memory to run. 2019-01-18 (c)2001-2002, Michael P. Frank

Our Pseudocode Language: §A2 Declaration STATEMENTS procedure name(argument: type) variable := expression informal statement begin statements end {comment} if condition then statement [else statement] for variable := initial value to final value statement while condition statement procname(arguments) Not defined in book: return expression 2019-01-18 (c)2001-2002, Michael P. Frank

procedure procname(arg: type) Declares that the following text defines a procedure named procname that takes inputs (arguments) named arg which are data objects of the type type. Example: procedure maximum(L: list of integers) [statements defining maximum…] 2019-01-18 (c)2001-2002, Michael P. Frank

variable := expression An assignment statement evaluates the expression expression, then reassigns the variable variable to the value that results. Example: v := 3x+7 (If x is 2, changes v to 13.) In pseudocode (but not real code), the expression might be informal: x := the largest integer in the list L 2019-01-18 (c)2001-2002, Michael P. Frank

Informal statement Sometimes we may write a statement as an informal English imperative, if the meaning is still clear and precise: “swap x and y” Keep in mind that real programming languages never allow this. When we ask for an algorithm to do so-and-so, writing “Do so-and-so” isn’t enough! Break down algorithm into detailed steps. 2019-01-18 (c)2001-2002, Michael P. Frank

begin statements end Groups a sequence of statements together: begin statement 1 statement 2 … statement n end Allows sequence to be used like a single statement. Might be used: After a procedure declaration. In an if statement after then or else. In the body of a for or while loop. 2019-01-18 (c)2001-2002, Michael P. Frank

{comment} Not executed (does nothing). Natural-language text explaining some aspect of the procedure to human readers. Also called a remark in some real programming languages. Example: {Note that v is the largest integer seen so far.} 2019-01-18 (c)2001-2002, Michael P. Frank

if condition then statement Evaluate the propositional expression condition. If the resulting truth value is true, then execute the statement statement; otherwise, just skip on ahead to the next statement. Variant: if cond then stmt1 else stmt2 Like before, but iff truth value is false, executes stmt2. 2019-01-18 (c)2001-2002, Michael P. Frank

while condition statement Evaluate the propositional expression condition. If the resulting value is true, then execute statement. Continue repeating the above two actions over and over until finally the condition evaluates to false; then go on to the next statement. 2019-01-18 (c)2001-2002, Michael P. Frank

while condition statement Also equivalent to infinite nested ifs, like so: if condition begin statement if condition begin statement …(continue infinite nested if’s) end end 2019-01-18 (c)2001-2002, Michael P. Frank

for var := initial to final stmt Initial is an integer expression. Final is another integer expression. Repeatedly execute stmt, first with variable var := initial, then with var := initial+1, then with var := initial+2, etc., then finally with var := final. What happens if stmt changes the value that initial or final evaluates to? 2019-01-18 (c)2001-2002, Michael P. Frank

for var := initial to final stmt For can be exactly defined in terms of while, like so: begin var := initial while var  final begin stmt var := var + 1 end end 2019-01-18 (c)2001-2002, Michael P. Frank

procedure(argument) A procedure call statement invokes the named procedure, giving it as its input the value of the argument expression. Various real programming languages refer to procedures as functions (since the procedure call notation works similarly to function application f(x)), or as subroutines, subprograms, or methods. 2019-01-18 (c)2001-2002, Michael P. Frank

Max procedure in pseudocode procedure max(a1, a2, …, an: integers) v := a1 {largest element so far} for i := 2 to n {go thru rest of elems} if ai > v then v := ai {found bigger?} {at this point v’s value is the same as the largest integer in the list} return v 2019-01-18 (c)2001-2002, Michael P. Frank

Another example task Problem of searching an ordered list. Given a list L of n elements that are sorted into a definite order (e.g., numeric, alphabetical), And given a particular element x, Determine whether x appears in the list, and if so, return its index (position) in the list. Problem occurs often in many contexts. Let’s find an efficient algorithm! 2019-01-18 (c)2001-2002, Michael P. Frank

Search alg. #1: Linear Search procedure linear search (x: integer, a1, a2, …, an: distinct integers) i := 1 while (i  n  x  ai) i := i + 1 if i  n then location := i else location := 0 return location {index or 0 if not found} 2019-01-18 (c)2001-2002, Michael P. Frank

Search alg. #2: Binary Search Basic idea: On each step, look at the middle element of the remaining list to eliminate half of it, and quickly zero in on the desired element. <x <x <x >x 2019-01-18 (c)2001-2002, Michael P. Frank

Search alg. #2: Binary Search procedure binary search (x:integer, a1, a2, …, an: distinct integers) i := 1 {left endpoint of search interval} j := n {right endpoint of search interval} while i<j begin {while interval has >1 item} m := (i+j)/2 {midpoint} if x>am then i := m+1 else j := m end if x = ai then location := i else location := 0 return location 2019-01-18 (c)2001-2002, Michael P. Frank

Practice exercises 2.1.3: Devise an algorithm that finds the sum of all the integers in a list. [2 min] procedure sum(a1, a2, …, an: integers) s := 0 {sum of elems so far} for i := 1 to n {go thru all elems} s := s + ai {add current item} {at this point s is the sum of all items} return s 2019-01-18 (c)2001-2002, Michael P. Frank

Review §2.1: Algorithms Characteristics of algorithms. Pseudocode. Examples: Max algorithm, linear search & binary search algorithms. Intuitively we see that binary search is much faster than linear search, but how do we analyze the efficiency of algorithms formally? Use methods of algorithmic complexity, which utilize the order-of-growth concepts from §1.8. 2019-01-18 (c)2001-2002, Michael P. Frank

Review: max algorithm procedure max(a1, a2, …, an: integers) v := a1 {largest element so far} for i := 2 to n {go thru rest of elems} if ai > v then v := ai {found bigger?} {at this point v’s value is the same as the largest integer in the list} return v 2019-01-18 (c)2001-2002, Michael P. Frank

Review: Linear Search procedure linear search (x: integer, a1, a2, …, an: distinct integers) i := 1 while (i  n  x  ai) i := i + 1 if i  n then location := i else location := 0 return location {index or 0 if not found} 2019-01-18 (c)2001-2002, Michael P. Frank

Review: Binary Search Basic idea: On each step, look at the middle element of the remaining list to eliminate half of it, and quickly zero in on the desired element. <x <x <x >x 2019-01-18 (c)2001-2002, Michael P. Frank

Review: Binary Search procedure binary search (x:integer, a1, a2, …, an: distinct integers) i := 1 {left endpoint of search interval} j := n {right endpoint of search interval} while i<j begin {while interval has >1 item} m := (i+j)/2 {midpoint} if x>am then i := m+1 else j := m end if x = ai then location := i else location := 0 return location 2019-01-18 (c)2001-2002, Michael P. Frank