1 / 18

Chapter 1 pp 1-14

Chapter 1 pp 1-14. Properties of Algorithms Pseudocode. What is an algorithm?. You tell me. Algorithms. step by step method for solving a problem. formal solution method implementing a problem solution with computer code is pretty darn formal. Algorithms have properties. Input Output

alida
Download Presentation

Chapter 1 pp 1-14

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. Chapter 1 pp 1-14 Properties of Algorithms Pseudocode

  2. What is an algorithm? • You tell me.

  3. Algorithms • step by step method for solving a problem. • formal solution method • implementing a problem solution with computer code is pretty darn formal

  4. Algorithms have properties • Input • Output • Precision • Determinism • Finiteness • Correctness • Generality

  5. Examples first • Lets look at an example first and we’ll try to identify the properties. • Max of three numbers • Shortest pair problem

  6. Max of 3 numbers int Max(int a, int b, int c) { if (a > b) { if (a > c) return a; else return c; } else { if (b > c) return b; else return c; } }

  7. Max of 3 • Input: 3 numbers a, b, and c • Output: 1 number that is the max of a, b, and c. (duh?) • Is the algorithm precisely defined? • What would an imprecise algorithm look like? • Code by its very nature is precise.

  8. Determinism • Same input, same steps  Some outcome • Non-determinism • Same input, same steps  Different outcome • Code by its nature is deterministic • How do your write a non-deterministic program?

  9. Finiteness Will it run infinitely? • The definition of an algorithm is a formally defined solution to a problem. • Is it really a solution if it runs forever?

  10. Correctness • It is very easy to write incorrect code. • Verifying correctness is wicked hard • This is where proofs come in handy.

  11. Generality • Can the algorithm be applied to all sets of possible input? • Here an algorithm that is correct but not general. int max(a, b) { if (a > 10 && b < 10) return a; }

  12. Pseudocode • resembles C++ and Java • like short-hand max(a,b) { if a > b return a else return b } • This is where algorithms get imprecise

  13. Pseudocode • easier to specify loops • easier to define data structures mystery(a[], n, x) { for i = 0 to n-1 if (x == a[i]) return true return false; }

  14. Example: Shortest pair • Given n points (x,y)-pairs • Where x and y are real numbers. • Return the distance of the two closest points. • You could also return the two points • Describe how you would solve this in words.

  15. #1 INPUT: Here the input is well-defined Example: Shortest pair • Given n points (x,y)-pairs • Where x and y are real numbers. • Return the distance of the two closest points. • Also return the two points • Describe how you would solve this in words. #2 OUTPUT: The details here can have big impact on the actual algorithm #3 PRECISION: Some algorithms can be precisely described with word, some cannot.

  16. Example: Shortest pair • Compute the distance between every pair of points. • Return the two points with minimum distance #3 PRECISION: This is not precise because important details are not described: 1. Computing Distance is not trivial2. Iterating over every pair of points is not a simple operation.

  17. Example: Shortest pair Input: An array of n points p[i] Output: A distance d, which is the minimum among all pairs of points Algorithm: d = 1000000; for i = 1 to n for j = i+1 to n temp = dist(p[i] , p[j]) if (temp < d) d = temp return d;

  18. Example: Shortest pair float dist(a, b) { return sqrt((a.x – b.x)2 + (a.y – b.y)2); } Is this as precise as you can get? BTW, there are six mathematical operations here Two ( – ) one clock cycle each One ( + ) one clock cycle Two ( * ) one clock cycle each One ( sqrt function ) ? clock cycles

More Related