* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download 2 k+1
Location arithmetic wikipedia , lookup
History of the function concept wikipedia , lookup
Positional notation wikipedia , lookup
Big O notation wikipedia , lookup
Approximations of π wikipedia , lookup
Algorithm characterizations wikipedia , lookup
Factorization of polynomials over finite fields wikipedia , lookup
Efficiency of Algorithms: Analyzing algorithm segments, Insertion sort algorithm Logarithmic Orders Binary Search Algorithm 1 Computing an Order of an Algorithm Segment • Consider the following algorithm segment: max:=a[1]; min:=b[1] for i:=2 to n if max < a[i] then max:=a[i] ; if min > b[i] then min:=b[i] next i if min ≥ max then med:=(min+max)/2 • Analysis: Number of loop iterations: n-1 Comparisons in each iteration: 2 Thus, elementary operations in the loop: 2(n-1) Operations after the loop: 3 Total number of operations in the segment: 2(n-1)+3 = 2n+1 • Order of the segment: O(n) 2 The Insertion Sort Algorithm • Insertion sort arranges the elements of one-dimensional array a[1], …, a[n] into increasing order. • for i:=2 to n (insert a[i] into the sorted sequence a[1],…,a[i-1]) key:=a[i] for j:=1 to i-1 if key<a[j] then goto (*) next j (*) (shift the values of a[j],…,a[i-1] to a[j+1],…,a[i]) for k:=i to j+1 a[k]:=a[k-1] next k a[j]:=key next i 3 The Insertion Sort Algorithm: Example • Arrange array <8, 2, 7, 9, 1, 4> into increasing order. 8 2 7 9 1 4 2 8 7 9 1 4 2 7 8 9 1 4 2 7 8 9 1 4 1 2 7 8 9 4 1 2 4 7 8 9 4 The Insertion Sort Algorithm: Analysis • For each i (outer loop), maximum number of elementary operations is i – 1 . • Thus, the total number of elementary operations: 1+2+…+(n-1) = n(n-1)/2 = .5n2 - .5n • The insertion sort algorithm is O(n2) . 5 Logarithmic function • Definition: The logarithmic function with base b (b>0, b1) is the following function from R+ to R: logb(x) = the exponent to which b must raised to obtain x . Symbolically, logbx = y by = x . • Property: If the base b>1, then the logarithmic function is increasing: if x1<x2 , then logb(x1) < logb(x2) . Note: Logarithmic function grows very slowly, e.g., log2(1,024)=10, log2(1,048,576)=20 . 6 A property of logarithmic function • Proposition 1: If k is an integer and x is a real number with 2k x < 2k+1, then log2x = k . • Proof: 2k x < 2k+1 log2(2k) log2(x) < log2(2k+1) (since log2x increasing) k log2(x) < k+1 (by definition of log2x) log2x = k (by definition of floor function) ■ An application of logarithms • Question: Given a positive integer n, how many binary digits are needed to represent n? • Solution: Binary representation of n: 1ck-1ck-2…c2c1c0 which corresponds to n = 2k + ck-1∙2k-1 + … + c2∙22 + c1∙2 + c0 Since ci 1, n = 2k + ck-1∙2k-1 + … + c2∙22 + c1∙2 + c0 2k + 2k-1 + … + 22 + 2 + 1 = (2k+1-1) / (2-1) (as a sum of geometric sequence) = 2k+1-1 < 2k+1 (1) On the other hand, n = 2k + ck-1∙2k-1 + … + c2∙22 + c1∙2 + c0 ≥ 2k (2) Combining (1) and (2): 2k n < 2k+1 (3) log2n and the number of binary digits is log2n + 1. Based on (3) and Proposition 1, k = 8 Exponential and Logarithmic Orders For all real numbers b and r with b>1 and r>0 and for all sufficiently large values of x, logbx xr; ( which implies that logbx is O(xr) ) xr bx ( which implies that xr is O(bx) ) For all real numbers b with b>1 and for all sufficiently large values of x, x x logbx x2 (which implies that x is O(x logbx) and x logbx is O(x2) ) 9 Binary Search Algorithm • The algorithm searches for an element x in an ascending array of elements a[1],…,a[n] . • Algorithm body: index:=0, bot:=1, top:=n while (top ≥ bot and index=0) mid := (bot+top) / 2 if a[mid] = x then index := mid if a[mid] > x then top := mid-1 else bot := mid+1 end while Output: index (If index has the value 0 then x is not in the array; otherwise, index gives the index of the array where x is located.) Binary Search Algorithm: Example • Suppose a[1]=Amy, a[2]=Bob, a[3]=Dave, a[4]=Erin, a[5]=Jeff, a[6]=John, a[7]=Larry, a[8]=Mary, a[9]=Mike, a[10]=Sam, a[11]=Steve, a[12]=Tom. (sorted in alphabetical order) • Search for x=Erin. • The table tracing the binary search algorithm: index bot 0 1 1 4 top 12 5 5 6 3 mid 4 4 11 The Efficiency of the Binary Search Algorithm • At each iteration, the length of the new subarray to be searched is approximately half of the previous one. • If n = 2k+m, where 0 m < 2k, then n can be split approximately in half k times. • Since 2k n < 2k+1, then k = log2n (by proposition 1) • Thus, the number of iterations of the while loop in a worst-case execution of the algorithm is log2n+1. • The number of operations in each loop is constant (doesn’t increase with n). • Thus, the binary search algorithm is O(log2n) . 12