230 likes | 237 Views
Lecture 3. Material in the textbook on Pages 32-46 of 2nd Edition Sections 1.2.1 to 1.2.4. Review. Procedures capture common patterns Naming abstractions allows us to use them as primitive objects עוץ-לי-גוץ-לי Principle: “If you capture a process (in a procedure),
E N D
Lecture 3 Material in the textbook on Pages 32-46 of 2nd Edition Sections 1.2.1 to 1.2.4 מבוא מורחב
Review • Procedures capture common patterns • Naming abstractions allows us to use them as primitive objects • עוץ-לי-גוץ-לי Principle: “If you capture a process (in a procedure), and give it a name, you have power over that process” • The Substitution Model מבוא מורחב
Today • Refine our model • Understand how it captures the nature of processes • Use it to quantify various properties of processes: • Number of steps a process takes (Time Complexity) • Amount of Space a process uses (Space Complexity) מבוא מורחב
Applicative order evaluation rules Combination... (<operator> <operand1> …… <operand n>) • Evaluate <operator> to get the procedure and evaluate <operands> to get the arguments • If <operator> is primitive: do whatever magic it does • If <operator> is compound: evaluate body with formal parameters replaced by arguments מבוא מורחב
Example: Factorial • wishful thinking : • base case: n! =n * (n-1)! n = 1 (define fact (lambda (n) (if (= n 1) 1 (* n (fact (- n 1)))))) מבוא מורחב
Example: Factorial • ==>(fact 3) • ([[n](if(= n 1) 1 (* n (fact (- n 1))))] 3) • (if (= 3 1) 1 (* 3 (fact (- 3 1)))) • (if #f 1 (* 3 (fact (- 3 1)))) • (* 3 (fact (- 3 1))) • (* 3 ([[n](if(= n 1) 1 (* n (fact (- n 1))))] (- 3 1))) • (* 3 (if (= 2 1) 1 (* 2 (fact (- 2 1))))) • (* 3 (if #f 1 (* 2 (fact (- 2 1))))) • (* 3 (* 2 (fact (-2 1)))) • (* 3 (* 2 (([[n](if(= n 1) 1 (* n (fact (- n 1))))] (- 2 1)))) • (* 3 (* 2 (if (= 1 1) 1 (* (fact (- 1 1))))))) • (* 3 (* 2 (if #t 1 (* 1 (fact (- 1 1)))))) • (* 3 (* 2 1)) • (* 3 2) • 6 מבוא מורחב
Normal order evaluation Combination … (<operator> <operand1> …… <operand n>) • Evaluate <operator> to get the procedure and evaluate <operands> to get the arguments • If <operator> is primitive: do whatever magic it does • If <operator> is compound: evaluate body with formal parameters replaced by arguments מבוא מורחב
The Difference Normal ((lambda (x) (+ x x)) (* 3 4)) (+ (* 3 4) (* 3 4)) (+ 12 12) 24 Applicative ((lambda (x) (+ x x)) (* 3 4)) ((lambda (x) (+ x x)) 12) (+ 12 12) 24 This may matter in some cases: ((lambda (x y) (+ x 2)) 3 (/ 1 0)) Scheme is an Applicative Order Language! מבוא מורחב
Compute ab (Recursive Approach) • wishful thinking : • base case: ab=a * a(b-1) a0 = 1 • (define exp-1 • (lambda (a b) • (if (= b 0) • 1 • (* a (exp-1 a (- b 1)))))) מבוא מורחב
ab=a * a * a*…*a • Which is: b ab = a2 *a*…*a= a3 *…*a • Operationally: • Halting condition: result result * a counter counter - 1 counter = 0 Compute ab (Iterative Approach) • Another approach: מבוא מורחב
Syntactic Recursion Compute ab (Iterative Approach) (define (exp-2 a b) (define (exp-iter a b product) (if (= b 0) product (exp-iter a (- b 1) (* a product)))) (exp-iter a b 1) How then, do the two procedures differ? They give rise to different processes – lets use our model to understand how. מבוא מורחב
Recursive Process • (define exp-1 • (lambda (a b) • (if (= b 0) • 1 • (* a (exp-1 a (- b 1)))))) • (exp-1 3 4) • (* 3 (exp-1 3 3)) • (* 3 (* 3 (exp-1 3 2))) • (* 3 (* 3 (* 3 (exp-1 3 1)))) • (* 3 (* 3 (* 3 (* 3 (exp-1 3 0))))) • (* 3 (* 3 (* 3 (* 3 1)))) • (* 3 (* 3 (* 3 3))) • (* 3 (* 3 9)) • (* 3 27) • 81 מבוא מורחב
Iterative Process (define (exp-2 a b) (define (exp-iter a b product) (if (= b 0) product (exp-iter a (- b 1) (* a product)))) (exp-iter a b 1) (exp-2 3 4) (exp-iter 3 4 1) (exp-iter 3 3 3) (exp-iter 3 2 9) (exp-iter 3 1 27) (exp-iter 3 0 81) 81 מבוא מורחב
(exp-1 3 4) • (* 3 (exp-1 3 3)) • (* 3 (* 3 (exp-1 3 2))) • (* 3 (* 3 (* 3 (exp-1 3 1)))) • (* 3 (* 3 (* 3 (* 3 (exp-1 3 0))))) • (* 3 (* 3 (* 3 (* 3 1)))) • (* 3 (* 3 (* 3 3))) • (* 3 (* 3 9)) • (* 3 27) • 81 (exp-2 3 4) Growing amount of space (exp-iter 3 4 1) (exp-iter 3 3 3) (exp-iter 3 2 9) Constant amount of space (exp-iter 3 1 27) (exp-iter 3 0 81) 81 The Difference מבוא מורחב
operation pending no pending operations Why More Space? • Recursive exponentiation: (define exp-1 (lambda (a b) (if (= b 0) 1 (* a (exp-1 a (- b 1))))) • Iterative exponentiation: • (define (exp-2 a b) • (define (exp-iter a b product) • (if (= b 0) • product • (exp-iter a (- b 1) (* a product)))) • (exp-iter a b 1))
Summary • Recursive process num of deferred operations “grows proportional to b” • Iterative process num of deferred operations stays “constant” (actually its zero) Can we better quantify these observations? מבוא מורחב
Orders of Growth • Suppose n is a parameter that measures the size of a problem (the size of its input) • R(n)measures the amount of resources needed to compute a solution procedure of size n. • Two common resources are space, measured by the number of deferred operations, and time, measured by the number of primitive steps. מבוא מורחב
Orders of Growth • Want to estimate the “order of growth” of R(n): R1(n)=100n2 R2(n)=2n2+10n+2 R3(n) = n2 Are all the same in the sense that if we multiply the input by a factor of 2, the resource consumption increase by a factor of 4 Order of growth is proportional to n2 מבוא מורחב
Orders of Growth • We say R(n)has order of growth Q(f(n))if there are constants c1 0and c2 0such that for all n>c0 c1f(n)<= R(n)<= c2f(n) • R(n)O(f(n)) if there is a constant c 0such that for all n • R(n) <= cf(n) • R(n)(f(n)) if there is a constant c 0such that for all n • cf(n)<= R(n) מבוא מורחב
Orders of Growth True or False? f 100n2 O(n) t 100n2 (n) 100n2 Q(n) f 100n2 Q(n2) t True or False? f 2100 (n) t 2100n O(n2) 2n Q(n) f 210 Q(1) t מבוא מורחב
(exp-1 3 4) “n”=b=4 • (* 3 (exp-1 3 3)) • (* 3 (* 3 (exp-1 3 2))) • (* 3 (* 3 (* 3 (exp-1 3 1)))) • (* 3 (* 3 (* 3 (* 3 (exp-1 3 0))))) • (* 3 (* 3 (* 3 (* 3 1)))) • (* 3 (* 3 (* 3 3))) • (* 3 (* 3 9)) • (* 3 27) • 81 Resources Consumed by EXP-1 • Space b <= R(b) <= b which is Q(b) • Time b <= R(b) <= 2b which is Q(b) Linear Recursive Process מבוא מורחב
(exp-2 3 4) “n”=b=4 (exp-iter 3 4 1) (exp-iter 3 3 3) (exp-iter 3 2 9) (exp-iter 3 1 27) (exp-iter 3 0 81) 81 Resources Consumed by EXP-2 • Space Q(1) • Time Q(b) Linear Iterative Process מבוא מורחב
Summary • Refine our model • captures the nature of processes • Use it to quantify various properties of processes: • Number of steps a process takes (Time Complexity) • Amount of Space a process uses (Space Complexity) מבוא מורחב