* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download for j
Survey
Document related concepts
Transcript
2. Getting started Hsu, Lih-Hsing Computer Theory Lab. 2.1 Insertion sort Example: Sorting problem Input: A sequence of n numbers a1 , a2 ,..., an ' ' ' a , a ,..., a Output: A permutation 1 2 n of the input sequence such that a1 a2 ... an . The number that we wish to sort are known as the keys. Chapter 2 P.2 Computer Theory Lab. Pseudocode Insertion sort Insertion-sort(A) 1 for j 2 to length[A] 2 do keyA[j] 3 Insert A[j] into the sorted sequence A[1..j-1] 4 i j-1 5 while i>0 and A[i]>key 6 do A[i+1] A[i] 7 i i-1 8 A[i +1] key Chapter 2 P.3 Computer Theory Lab. The operation of Insertion-Sort Chapter 2 P.4 Computer Theory Lab. Sorted in place : The numbers are rearranged within the array A, with at most a constant number of them sorted outside the array at any time. Loop invariant : At the start of each iteration of the for loop of line 18, the subarray A[1..j-1] consists of the elements originally in A[1..j-1] but in sorted order. Chapter 2 Initialization Maintenance Termination P.5 Computer Theory Lab. 2.2 Analyzing algorithms Analyzing an algorithm has come to mean predicting the resources that the algorithm requires. Chapter 2 Resources: memory, communication, bandwidth, logic gate, time. Assumption:one access machine) processor, RAM(random- (We shall have occasion to investigate models for parallel computers and digital hardware.) P.6 Computer Theory Lab. 2.2 Analyzing algorithms Chapter 2 The best notion for input size depends on the problem being studied.. The running time of an algorithm on a particular input is the number of primitive operations or “steps” executed. It is convenient to define the notion of step so that it is as machine-independent as possible P.7 Computer Theory Lab. Insertion-sort(A) cost times c1 n 1 for j 2 to length[A] c2 n 1 2 do keyA[j] 3 Insert A[j] into the sorted sequence A[1..j -1] 0 c4 n 1 4 i j -1 n c5 j 2 t j 5 while i>0 and A[i]>key n c6 j2 ( t j 1) 6 do A[i +1] A[i] n 7 i i -1 c7 j 2 ( t j 1) 8 A[i +1] key c8 n 1 tj : the number of times the while loop test in line 5 is executed for the value of j. Chapter 2 P.8 Computer Theory Lab. the running time n T ( n ) c1n c2 ( n 1 ) c4 ( n 1 ) c5 t j j 2 n n j 2 j 2 c6 ( t j 1 ) c7 ( t j 1 ) c8 ( n 1 ) t j 1 for j = 2,3,…,n : Linear function on n T ( n ) c1n c2 ( n 1 ) c4 ( n 1 ) c5 ( n 1 ) c8 ( n 1 ) ( c1 c2 c4 c5 c8 )n ( c2 c4 c5 c8 ) Chapter 2 P.9 Computer Theory Lab. the running time t j j for j = 2,3,…,n : quadratic function on n. n(n 1) T (n) c1n c2 (n 1) c4 (n 1) c5 ( 1) 2 n(n 1) n(n 1) c6 ( ) c7 ( ) c8 (n 1) 2 2 c5 c6 c7 2 c5 c6 c7 ( )n (c1 c2 c4 c8 )n 2 2 (c2 c4 c5 c8 ) Chapter 2 P.10 Computer Theory Lab. Worst-case and average-case analysis Usually, we concentrate on finding only on the worst-case running time Reason: Chapter 2 It is an upper bound on the running time The worst case occurs fair often The average case is often as bad as the worst case. For example, the insertion sort. Again, quadratic function. P.11 Computer Theory Lab. Order of growth Chapter 2 In some particular cases, we shall be interested in average-case, or expect running time of an algorithm. It is the rate of growth, or order of growth, of the running time that really interests us. P.12 Computer Theory Lab. 2.3 Designing algorithms There are many ways to design algorithms: Incremental approach: insertion sort Divide-and-conquer: merge sort recursive: Chapter 2 divide conquer combine P.13 Computer Theory Lab. Merge(A,p,q,r) 1 n1 q – p + 1 2 n2 r – q 3 create array L[ 1 .. n1 + 1 ] and R[ 1 ..n2 + 1 ] 4 for i 1 to n1 5 do L[ i ] A[ p + i – 1 ] 6 for j 1 to n2 7 do R[ i ] A[ q + j ] 8 L[n1 + 1] 9 R[n2 + 1] Chapter 2 P.14 Computer Theory Lab. Merge(A,p,q,r) 10 i 1 11 j 1 12 for k p to r 13 do if L[ i ] R[ j ] 14 then A[ k ] L[ i ] 15 ii+1 16 else A[ k ] R[ j ] 17 j j+1 Chapter 2 P.15 Computer Theory Lab. Example of Merge Sort Chapter 2 P.16 Computer Theory Lab. MERGE-SORT(A,p,r) 1 if p < r 2 then q(p+r)/2 3 MERGE-SORT(A,p,q) 4 MERGE-SORT(A,q+1,r) 5 MERGE(A,p,q,r) Chapter 2 P.18 Computer Theory Lab. Chapter 2 P.19 Computer Theory Lab. Analysis of merge sort Analyzing divide-and-conquer algorithms (1 ) if n c T( n ) aT ( n / b ) D( n ) c( n ) otherwise See Chapter 4 Analysis of merge sort (1 ) if T( n ) 2T ( n / 2 ) ( n ) if n 1 n 1 T ( n ) ( n log n ) Chapter 2 P.20 Computer Theory Lab. Analysis of merge sort c if n 1 T ( n) 2T (n / 2) cn if n 1 where the constant c represents the time require to solve problems of size 1 as well as the time per array element of the divide and combine steps. Chapter 2 P.21 Computer Theory Lab. Chapter 2 P.22 Computer Theory Lab. Outperforms insertion sort! Chapter 2 P.23