Chapter 1 pp 1-14

46 Views

Download Presentation
## Chapter 1 pp 1-14

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -

**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 • Precision • Determinism • Finiteness • Correctness • Generality**Examples first**• Lets look at an example first and we’ll try to identify the properties. • Max of three numbers • Shortest pair problem**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; } }**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.**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?**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?**Correctness**• It is very easy to write incorrect code. • Verifying correctness is wicked hard • This is where proofs come in handy.**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; }**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**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; }**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.**#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.**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.**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;**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