งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 05: การวิเคราะห์ความซับซ้อนของ ขั้นตอนวิธีการเรียงลำดับข้อมูล.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 05: การวิเคราะห์ความซับซ้อนของ ขั้นตอนวิธีการเรียงลำดับข้อมูล."— ใบสำเนางานนำเสนอ:

1 Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th
CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 05: การวิเคราะห์ความซับซ้อนของ ขั้นตอนวิธีการเรียงลำดับข้อมูล Dr.Surasak Mungsing May-19

2 Sorting Algorithms Bin Sort Radix Sort Insertion Sort Shell Sort
Selection Sort Heap Sort Bubble Sort Quick Sort Merge Sort 5/5/2019

3 5/5/2019

4 Bin Sort A 2 C 5 B 4 J 3 H I D E F G F A E H J B D G I C F E 3 A 2 C 5
G (a) Input chain F A E H J B D G I C Bin 0 Bin 1 Bin 2 Bin 3 Bin 4 Bin 5 (b) Nodes in bins F E 3 A 2 C 5 G 4 I H J B D (c) Sorted chain 5/5/2019

5 Radix Sort with r=10 and d=3
216 521 425 116 91 515 124 34 96 24 (a) Input chain 521 91 124 34 24 425 515 216 116 96 (b) Chain after sorting on least significant digit 515 216 116 521 124 24 425 34 91 96 (c) Chain after sorting on second-least significant digit 24 34 91 96 116 124 216 425 515 521 (d) Chain after sorting on most significant digit 5/5/2019

6 Insertion Sort Concept
5/5/2019

7 Insertion Sort Algorithm
5/5/2019

8 Shell Sort Algorithm 5/5/2019

9 Shell Sort Algorithm 5/5/2019

10 Shell Sort Algorithm 5/5/2019

11 Shell Sort Algorithm 5/5/2019

12 Selection Sort Concept
5/5/2019

13 Selection Sort Algorithm
5/5/2019

14 Heap Sort Algorithm 5/5/2019

15 Heap Sort Algorithm 5/5/2019

16 Bubble Sort Concept 5/5/2019

17 Bubble Sort Algorithm 5/5/2019

18 Quick sort The fastest known sorting algorithm in practice. 31 75 81
43 13 81 31 92 57 65 75 26 Select pivot Partition 5/5/2019

19 Quick sort 31 26 57 43 92 75 81 65 13 Quick sort small
31 26 57 43 92 75 81 65 13 Quick sort small Quick sort large 5/5/2019

20 Quick sort 5/5/2019

21 Quick Sort Partitions 5/5/2019

22 Quick sort 5/5/2019

23 External Sort: A simple merge
5/5/2019

24 Merge Sort 5/5/2019

25 Merge Sort 5/5/2019

26 5/5/2019

27 Sort Algorithm Analysis
5/5/2019

28 Analysis of Insertion Sort
for (int i = 1; i < a.length; i++) {// insert a[i] into a[0:i-1] int t = a[i]; int j; for (j = i - 1; j >= 0 && t < a[j]; j--) a[j + 1] = a[j]; a[j + 1] = t; } 5/5/2019

29 Comparison Count How many comparisons are made?
for (int i = 1; i < a.length; i++) {// insert a[i] into a[0:i-1] int t = a[i]; int j; for (j = i - 1; j >= 0 && t < a[j]; j--) a[j + 1] = a[j]; a[j + 1] = t; } How many comparisons are made? 5/5/2019

30 Comparison Count for (j = i - 1; j >= 0 && t < a[j]; j--)
a[j + 1] = a[j]; number of compares depends on a[]s and t as well as on i Worst-case count = maximum count Best-case count = minimum count Average count 5/5/2019

31 Worst-Case Comparison Count
for (j = i - 1; j >= 0 && t < a[j]; j--) a[j + 1] = a[j]; a = [1, 2, 3, 4] and t = 0 => 4 compares a = [1,2,3,…,i] and t = 0 => i compares 5/5/2019

32 Worst-Case Comparison Count
for (int i = 1; i < n; i++) for (j = i - 1; j >= 0 && t < a[j]; j--) a[j + 1] = a[j]; total compares = … + (n-1) n (i-1) i=2 T(n) = = (n-1)n/2 = O(n2) 5/5/2019

33 Average-Case Comparison Count
for (int i = 1; i < n; i++) for (j = i - 1; j >= 0 && t < a[j]; j--) a[j + 1] = a[j]; n i=2 T = i-1 2 = O(n2) 5/5/2019

34 Analysis of Quick Sort 31 75 81 43 57 13 26 65 92 Select pivot
Select pivot Partition 5/5/2019

35 Main Quick Sort Routine
private static void quicksort( Comparable [ ] a, int left, int right ) { /* 1*/ if( left + CUTOFF <= right ) /* 2*/ Comparable pivot = median3( a, left, right ); // Begin partitioning /* 3*/ int i = left, j = right - 1; /* 4*/ for( ; ; ) /* 5*/ while( a[ ++i ].compareTo( pivot ) < 0 ) { } /* 6*/ while( a[ --j ].compareTo( pivot ) > 0 ) { } /* 7*/ if( i < j ) /* 8*/ swapReferences( a, i, j ); else /* 9*/ break; } /*10*/ swapReferences( a, i, right - 1 ); // Restore pivot /*11*/ quicksort( a, left, i - 1 ); // Sort small elements /*12*/ quicksort( a, i + 1, right ); // Sort large elements else // Do an insertion sort on the subarray /*13*/ insertionSort( a, left, right ); Main Quick Sort Routine 5/5/2019

36 Worst-Case Analysis เวลาที่ใช้ในการ run quick sort เท่ากับเวลาที่ใช้ในการทำ recursive call 2 ครั้ง + linear time ที่ใช้ในการเลือก pivot ซึ่งทำให้ basic quick sort relation เท่ากับ T(n) = T(i) + T(n-i-1) + cn ในกรณี Worst- case เช่น การที่ pivot มีค่าน้อยที่สุดเสมอ เวลาที่ใช้ในการทำ recursion คือ T(n) = T(n-1) + cn n>1 T(n-1)= T(n-2)+c(n-1) T(n-2)= T(n-3)+c(n-2) … T(2) = T(1)+c(2) รวมเวลาทั้งหมด T(n) = T(1) + c n i=2 i = O(n2) 5/5/2019

37 Best-Case Analysis … T(n) = c n logn + n = O(n log n)
The pivot is in the middle; T(n) = 2 T(n/2) + cn Divide both sides by n; Add all equations; T(n/2) n/2 T(n) n = + c T(n/4) n/4 T(n/2) n/2 = + c T(n/4) n/4 T(n/8) n/8 = + c T(2) 2 T(1) 1 = + c T(n) n T(1) 1 = + c log n T(n) = c n logn + n = O(n log n) 5/5/2019

38 Average-Case Analysis (1/4)
เวลาที่ใช้ในการทำงานทั้งหมดคือ T(N) = T(i) + T(N-i-1) + c N …………..(1) เวลาทำงานเฉลี่ยของ T(i) และ T(N-i-1) คือ 1 N N -1 j=0 T( j ) …………..(2) ดังนั้น 2 N N -1 j=0 T( j ) + cN T(N) = …………..(3) NT(N) = N -1 j=0 T( j ) + cN2 2 …………..(4) (N-1) T(N-1) = 2 + c(N – 1)2 T( j ) N -2 j=0 …………..(5) 5/5/2019

39 Average-Case Analysis (2/4)
(5) – (4); NT(N) – (N-1) T(N-1) = 2T(N-1) +2cN - c …………..(6) จัดเทอมใหม่และทิ้งค่า c ทางด้านขวาของสมการซึ่งไม่มีนัยสำคัญ ; NT(N) = (N+1) T(N-1) +2cN …………..(7) (7) หาร ด้วย N(N+1); T(N) N+1 T(N-1) N 2c = + …………..(8) 5/5/2019

40 Average-Case Analysis (3/4)
T(N) N+1 T(N-1) N 2c = + T(N-2) N-1 T(N-3) N-2 2c = + T(N-1) N …………..(8) …………..(9) …………..(10) . T(2) 3 T(1) 2 …………..(11) N +1 i=3 T(N) N+1 T(1) 2 2c = + บวกสมการทั้งหมดตั้งแต่ (8) ถึง (11); …………..(12) 5/5/2019

41 Average-Case Analysis (4/4)
i=3 T(N) N+1 T(1) 2 2c = + …………..(12) ผลบวกในสมการ (12) มีค่าประมาณ logC(N+1)+  - 3/2, ซึ่ง  คือ Euler’s constant มีค่าประมาณ 0.577 = O(Nlog N) …………..(13) และ = O(log N) ดังนั้น …………..(14) สรุปได้ว่าความซับซ้อนของ Quick sort algorithm กรณี Average-Case คือ T(n) = O(n log n) 5/5/2019

42 Priority Queue Heap Sort 5/5/2019

43 Min Priority Queue Collection of elements.
Each element has a priority or key. Supports following operations: isEmpty size add/put an element into the priority queue get element with min priority remove element with min priority May-19

44 Max Priority Queue Collection of elements.
Each element has a priority or key. Supports following operations: isEmpty size add/put an element into the priority queue get element with max priority remove element with max priority May-19

45 Min Tree Example 2 4 9 3 4 8 7 9 9 Root has minimum element. May-19

46 Max Tree Example 9 4 9 8 4 2 7 3 1 Root has maximum element. May-19

47 Min Heap Definition complete binary tree min tree May-19

48 Heap Height What is the height of an n node heap ?
Since a heap is a complete binary tree, the height of an n node heap is log2 (n+1). May-19

49 A Heap Is Efficiently Represented As An Array
9 8 6 7 2 5 1 9 8 7 6 2 5 1 3 4 10 May-19

50 Complexity Of Operations
Two good implementations are heaps and leftist trees. isEmpty, size, and get => O(1) time put and remove => O(log n) time where n is the size of the priority queue May-19

51 Practical Complexities
109 instructions/second Teraflop computer the 32yr time becomes approx 10 days. 5/5/2019

52 Impractical Complexities
109 instructions/second 5/5/2019

53 Summary 5/5/2019

54 Faster Computer Vs Better Algorithm
Algorithmic improvement more useful than hardware improvement. E.g. 2n to n3 5/5/2019

55 การวิเคราะห์ขั้นตอนวิธีที่ใช้ในโครงสร้างข้อมูลแบบ List
Next Lecture: การวิเคราะห์ขั้นตอนวิธีที่ใช้ในโครงสร้างข้อมูลแบบ List และ Stack และ Queues 5-May-19


ดาวน์โหลด ppt Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 05: การวิเคราะห์ความซับซ้อนของ ขั้นตอนวิธีการเรียงลำดับข้อมูล.

งานนำเสนอที่คล้ายกัน


Ads by Google