* 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
 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
                                             
                                             
                                             
                                             
                                             
                                             
                                             
                                             
                                             
                                             
                                            