1 / 29

Module #5: Algorithms, Integers, Matrices

This module provides an introduction to algorithms, focusing on formal procedures and their implementation in computer programs. Topics covered include the growth of functions, complexity of algorithms, integers and division, and matrices.

sandyz
Download Presentation

Module #5: Algorithms, Integers, Matrices

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Module #5:Algorithms, Integers, Matrices Rosen 5th ed., §2.1 ~29 slides, ~1 lecture (c)2001-2002, Michael P. Frank

  2. Chapter 2: Algorithms, the Integers, and Matrices • §2.1: Algorithms (Formal procedures) • §2.2: The Growth of Functions • §2.3: Complexity of algorithms • §2.4: The Integers & Division • §2.7: Matrices. (c)2001-2002, Michael P. Frank

  3. §2.1: Algorithms • An algorithm is a finite set of precise instructions for performing a computation or for solving a problem.. • A computer program is an implementation of an algorithm using the languages that a computer can understand and execute. (c)2001-2002, Michael P. Frank

  4. Example Algorithm • Bold word is keyword • italic is variable or constant you defined • Inside { } is comment Proceduremax( a1,a2,…,an: integers) max:=a1 fori :=2 ton if max<ai then max:=ai {max is the largest element} (c)2001-2002, Michael P. Frank

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

  6. procedurename(argument: type) variable:=expression informal statement beginstatementsend {comment} ifcondition then statement [else statement] for variable:=initial value to final valuestatement whileconditionstatement procname(arguments) Not defined in book: returnexpression Declaration STATEMENTS Our Pseudocode Language: §A2 (c)2001-2002, Michael P. Frank

  7. 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:proceduremaximum(L: list of integers) [statements defining maximum…] (c)2001-2002, Michael P. Frank

  8. 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 (c)2001-2002, Michael P. Frank

  9. 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. (c)2001-2002, Michael P. Frank

  10. Groups a sequence of statements together:beginstatement 1statement 2 …statement nend 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. beginstatementsend (c)2001-2002, Michael P. Frank

  11. {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.} (c)2001-2002, Michael P. Frank

  12. ifconditionthenstatement • 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: ifcondthenstmt1elsestmt2Like before, but iff truth value is false, executes stmt2. (c)2001-2002, Michael P. Frank

  13. whileconditionstatement • 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. (c)2001-2002, Michael P. Frank

  14. whileconditionstatement • Also equivalent to infinite nested ifs, like so: if conditionbeginstatement if conditionbeginstatement …(continue infinite nested if’s)endend (c)2001-2002, Michael P. Frank

  15. forvar:=initialtofinalstmt • 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? (c)2001-2002, Michael P. Frank

  16. forvar:=initial to finalstmt • for can be exactly defined in terms of while, like so: beginvar:=initialwhilevar finalbeginstmtvar:=var + 1endend (c)2001-2002, Michael P. Frank

  17. 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. (c)2001-2002, Michael P. Frank

  18. 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! (c)2001-2002, Michael P. Frank

  19. Search alg. #1: Linear Search procedurelinear search(x: integer, a1, a2, …, an: distinct integers)i:= 1while (i n  x  ai)i:=i + 1ifi n then location:=ielselocation:= 0return location {index (0-if not found!)} (c)2001-2002, Michael P. Frank

  20. 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 (c)2001-2002, Michael P. Frank

  21. Search alg. #2: Binary Search procedurebinary search(x:integer, a1, a2, …, an: increasing 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}ifx>amtheni := m+1 else j := mendifx = aithenlocation:=ielselocation:= 0returnlocation (c)2001-2002, Michael P. Frank

  22. Practice exercises • 2.1.3: Devise an algorithm that finds the sum of all the integers in a list. [2 min] • proceduresum(a1, a2, …, an: integers)s:= 0 {sum of elems so far}fori:= 1 ton {go thru all elems}s:=s + ai {add current item}{at this point s is the sum of all items}returns (c)2001-2002, Michael P. Frank

  23. Sorting: Bubble Sort • Please Refer Example 4 for real case (It’s very important!) procedurebubblesort(a1, a2, …, an:real number with n2)for i:= 1 ton - 1forj:= 1 ton - iifaj>aj+1then swap aj andaj+1 {a1, a2, …, an is in increasing order} (c)2001-2002, Michael P. Frank

  24. Sorting: Insertion Sort procedureinsertionsort(a1, a2, …, an: real number with n2)for j:= 2 ton begini:= 1 whileaj>aii:=i + 1 m:=aj for k:= 0 to j – i – 1 aj-k :=aj-k-1 ai:=m end {a1, a2, …, an are sorted} (c)2001-2002, Michael P. Frank

  25. 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. (c)2001-2002, Michael P. Frank

  26. Review: max algorithm proceduremax(a1, a2, …, an: integers) v:=a1 {largest element so far} fori:= 2 ton {go thru rest of elems} ifai > vthen v:=ai {found bigger?} {at this point v’s value is the same as the largest integer in the list} returnv (c)2001-2002, Michael P. Frank

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

  28. 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 (c)2001-2002, Michael P. Frank

  29. Review: Binary Search procedurebinary 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}ifx>amtheni := m+1 else j := mendifx = aithenlocation:=ielselocation:= 0returnlocation (c)2001-2002, Michael P. Frank

More Related