Slide 1Today’s focus: efficiency in computationQuestion: How do we measure the “speed” of an algorithm?“Running time” of an algorithmExample: Find MinExample: Find MinExample: Find MinExample: Find MinExample: Find MinEfficiency of Selection SortGauss’s trick : Sum of (n – i) for i = 1 to n – 1Slide 12Pseudocode: Guessing number from1 to nBrief detour: Logarithms (CS view)Running times encountered in this lectureSlide 16Binary search and binary representation of numbersBinary representations (cont’d)Binary representation of n (the more standard definition)Efficiency of Effort: A lens on the worldSlide 21“It ain’t no good if it ain’t snappy enough.”(Efficient Computations) COS 116, Spring 2012Adam 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:machinetechnology“Running time” of an algorithmDefinition: the number of “elementary operations” performed by the algorithmElementary 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 Minn items, stored in array AVariables are i, bestbest 1Do for i = 2 to n{if (A[ i ] < A[best]) then{ best i }}Example: Find Minn items, stored in array AVariables are i, bestbest 1Do 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 Minn items, stored in array AVariables are i, bestbest 1Do 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 Minn items, stored in array AVariables are i, bestbest 1Do 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 Minn items, stored in array AVariables are i, bestbest 1Do for i = 2 to n {if (A[ i ] < A[best]) then{ best i }}Uses at most 2(n – 1) + 1 operationsInitializationNumber of iterations1 assignment & 1 comparison= 2 operations per loop iteration}(roughly = 2n)Efficiency of Selection SortDo for i = 1 to n – 1 {Find cheapest bottle among those numbered i to nSwap that bottle and the i’th bottle.}For the i’th round, takes at most 2(n – i ) + 3To 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) steps3 stepsGauss’s trick : Sum of (n – i) for i = 1 to n – 1S = 1 + 2 + … + (n – 2) + (n – 1) + S = (n – 1) + (n – 2) + … + 2 + 12S = n + n + … + n + n2S = n(n – 1)So total time for selection sort is ≤ n(n – 1) + 3nn – 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?” NoQuestion 2: “Is the number bigger than a quarter million?”Strategy: Each question halves the range of possible answers.NoPseudocode: Guessing number from1 to nLower 1 Upper n Found 0Do 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}} BinarySearchHow many times doesthe loop run??Brief detour: Logarithms (CS view)log2 n = K means 2K-1 < n ≤ 2KIn words: K is the number of times you need to divide n by 2 in order to get a number ≤ 1John Napier16 10241048576 8388608 log2 n4 10 20 23nRunning times encountered in this lecturen= 8 n= 1024 n= 1048576 n=8388608log2 n 3 10 20 23n 8 1024 1048576 8388608n264 1048576 1099511627776 70368744177664Efficiency 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 numbersSay we know 0 ≤ number < 2KIs 2K / 2 ≤ number < 2K?No YesIs 2K / 4 ≤ number < 2K / 2?NoYesIs 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?NoYesIs 2K / 4 ≤ number < 2K / 2?NoYesIs 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 + b1where the b’s are either 0 or 1)The binary representation of n is:n2 = bk bk – 1 … b2 b1Efficiency of Effort: A lens on the worldQWERTY keyboard“UPS Truck Driver’s Problem” (a.k.a. Traveling Salesman Problem or TSP)CAPTCHA’sQuantum computing[Jim Loy]Can n particles do 2n “operations” in a single step?Or is Quantum Mechanics not quite correct?SIAM J. Computing26(5) 1997Computational efficiency has a bearing on physical
View Full Document