DOC PREVIEW
Princeton COS 116 - Lecture

This preview shows page 1-2-20-21 out of 21 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 21 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 21 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 21 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 21 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 21 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

“It ain’t no good if it ain’t snappy enough.” (Efficient Computations) COS 116, Spring 2012 Adam FinkelsteinToday’s focus: efficiency in computation “If it is worth doing, it is worth doing well, and fast.” Recall: our model of “computation”: pseudocodeQuestion: How do we measure the “speed” of an algorithm?  Ideally, should be independent of:  machine  technology“Running time” of an algorithm  Definition: the number of “elementary operations” performed by the algorithm  Elementary operations: +, -, *, /, assignment, evaluation of conditionals (discussed also in pseudocode handout) “Speed” of computer: number of elementary operations it can perform per second (Simplified definition)  Do not consider this in “running time” of algorithm; technology-dependent.Example: Find Min  n items, stored in array A  Variables are i, best  best ← 1  Do for i = 2 to n { if (A[ i ] < A[best]) then { best ← i } }Example: Find Min  n items, stored in array A  Variables are i, best  best ← 1  Do for i = 2 to n { if (A[ i ] < A[best]) then { best ← i } }  How many operations executed before the loop?  A: 0 B: 1 C: 2 D: 3Example: Find Min  n items, stored in array A  Variables are i, best  best ← 1  Do for i = 2 to n { if (A[ i ] < A[best]) then { best ← i } }  How many operations per iteration of the loop?  A: 0 B: 1 C: 2 D: 3Example: Find Min  n items, stored in array A  Variables are i, best  best ← 1  Do for i = 2 to n { if (A[ i ] < A[best]) then { best ← i } }  How many times does the loop run?  A: n B: n+1 C: n-1 D: 2n “iterations”Example: Find Min  n items, stored in array A  Variables are i, best  best ← 1  Do for i = 2 to n { if (A[ i ] < A[best]) then { best ← i } } Uses at most 2(n – 1) + 1 operations Initialization Number of iterations 1 assignment & 1 comparison = 2 operations per loop iteration } (roughly = 2n)Efficiency of Selection Sort Do for i = 1 to n – 1 { Find cheapest bottle among those numbered i to n Swap that bottle and the i’th bottle. }  For the i’th round, takes at most 2(n – i ) + 3  To figure out running time, need to figure out how to sum (n – i) for i = 1 to n – 1 …and then double the result. About 2(n – i) steps 3 stepsGauss’s trick : Sum of (n – i) for i = 1 to n – 1 S = 1 + 2 + … + (n – 2) + (n – 1) + S = (n – 1) + (n – 2) + … + 2 + 1 2S = n + n + … + n + n 2S = n(n – 1)  So total time for selection sort is ≤ n(n – 1) + 3n n – 1 timesDiscussion Time “20 Questions”: I have a number between 1 and a million in mind. Guess it by asking me yes/no questions, and keep the number of questions small. Question 1: “Is the number bigger than half a million?” No Question 2: “Is the number bigger than a quarter million?” Strategy: Each question halves the range of possible answers. NoPseudocode: Guessing number from1 to n Lower ← 1 Upper ← n Found ← 0 Do while (Found=0) { Guess ←Round( (Lower + Upper)/2 ) If (Guess = True Number) { Found ← 1 Print(Guess) } If (Guess < True Number) { Lower ← Guess } else { Upper← Guess } } Binary Search How many times does the loop run??Brief detour: Logarithms (CS view)  log2 n = K means 2K-1 < n ≤ 2K  In words: K is the number of times you need to divide n by 2 in order to get a number ≤ 1 John Napier 16 1024 1048576 8388608 log2 n 4 10 20 23 nRunning times encountered in this lecture n= 8 n= 1024 n= 1048576 n=8388608 log2 n 3 10 20 23 n 8 1024 1048576 8388608 n2 64 1048576 1099511627776 70368744177664 Efficiency really makes a difference!“There are only 10 types of people in the world – those who know binary and those who don’t.” Next….Binary search and binary representation of numbers  Say we know 0 ≤ number < 2K Is 2K / 2 ≤ number < 2K? No Yes Is 2K / 4 ≤ number < 2K / 2? No Yes Is 2K × 3/8 ≤ number < 2K / 2? No Yes … … 0 2KBinary representations (cont’d)  In general, each number can be uniquely identified by a sequence of yes/no answers to these questions.  Correspond to paths down this “tree”: Is 2K / 2 ≤ number < 2K? No Yes Is 2K / 4 ≤ number < 2K / 2? No Yes Is 2K / 8 ≤ number < 2K / 4? No Yes … … Is 2K × 3/8 ≤ number < 2K / 2? No Yes … … …Binary representation of n (the more standard definition) n = 2k bk + 2k-1 bk-1 + … + 2 b2 + b1 where the b’s are either 0 or 1) The binary representation of n is: ⎣n⎦2 = bk bk – 1 … b2 b1Efficiency of Effort: A lens on the world  QWERTY keyboard  “UPS Truck Driver’s Problem” (a.k.a. Traveling Salesman Problem or TSP)  CAPTCHA’s  Quantum computing [Jim Loy]Can n particles do 2n “operations” in a single step? Or is Quantum Mechanics not quite correct? SIAM J. Computing 26(5) 1997 Computational efficiency has a bearing on physical


View Full Document

Princeton COS 116 - Lecture

Documents in this Course
Lecture 5

Lecture 5

15 pages

lecture 7

lecture 7

22 pages

Lecture

Lecture

32 pages

Lecture

Lecture

16 pages

Midterm

Midterm

2 pages

Lecture

Lecture

23 pages

Lecture

Lecture

21 pages

Lecture

Lecture

24 pages

Lecture

Lecture

22 pages

Lecture

Lecture

28 pages

Lecture

Lecture

50 pages

Lecture

Lecture

19 pages

Lecture

Lecture

28 pages

Lecture

Lecture

32 pages

Lecture

Lecture

23 pages

Lecture

Lecture

21 pages

Lecture

Lecture

19 pages

Lecture

Lecture

22 pages

Lecture

Lecture

21 pages

Logic

Logic

20 pages

Lab 7

Lab 7

9 pages

Lecture

Lecture

25 pages

Lecture 2

Lecture 2

25 pages

lecture 8

lecture 8

19 pages

Midterm

Midterm

5 pages

Lecture

Lecture

26 pages

Lecture

Lecture

29 pages

Lecture

Lecture

40 pages

Lecture 3

Lecture 3

37 pages

lecture 3

lecture 3

23 pages

lecture 3

lecture 3

20 pages

Lecture

Lecture

21 pages

Lecture

Lecture

24 pages

Lecture

Lecture

19 pages

Load more
Download Lecture
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Lecture and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Lecture 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?