Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

1 / 2X36DSA 2005The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log.

Podobné prezentace


Prezentace na téma: "1 / 2X36DSA 2005The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log."— Transkript prezentace:

1 1 / 2X36DSA 2005The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting Různé algoritmy mají různou složitost

2 2/ 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting The complexity of different algorithms varies X36DSA 2005

3 3 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting From this… X36DSA 2005

4 4 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting …to this! X36DSA 2005

5 5 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting Navrhněte a popište algoritmus pro seřazení balíčku karet. Úkolem je sestavit algoritmus tak, aby využíval co nejmenšího počtu pomocných balíčků. Smíte používat jen jednu ruku a v ní smíte držet vždy nanejvýš jednu kartu. Během řazení můžete (a musíte) odkládat karty do několika pomocných balíčků. Z každého balíčku je vidět a je známa pouze hodnota nejsvrchnější karty a to jen v případě, že leží lícem nahoru. Cvičení X36DSA 2005

6 6 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting Design and describe algorithm to sort a pack of playing cards The task is to construct the algorithm so that it will use as few auxiliary packs as possible. You can use only one hand and you can hold in it no more than one card any time. You can (in fact, you must) lay the cards on some additional auxiliary packs during the sort. Only the value of the uppermost card of any pack is visible and known and this only in case when it lays face up. Exercise X36DSA 2005

7 7 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting Selection Sort Řazení výběrem (minima nebo maxima) X36DSA 2005

8 8 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Selection Sort A A B B D D E E J J M M K K O O R R T T U U Z Z Start Step 1 B B D D E E J J M M K K O O R R U U Z Z T T D D E E K K Z Z B B J J M M O O R R T T U U A A A A min X36DSA 2005

9 9 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Selection Sort Step 2 Step 3 B B D D E E J J M M K K O O R R T T U U Z Z A A E E Z Z B B D D E E Z Z B B A A A A D D E E J J M M K K O O R R U U Z Z T T A A B B J J M M K K O O R R T T U U D D min J J M M K K O O R R T T U U X36DSA 2005

10 10 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Selection Sort Step k Sorted B B D D E E J J K K B B D D E E J J K K O O R R U U Z Z A A A A M M T T k B B D D E E J J K K O O R R U U Z Z A A M M T T …... … M M T T R R U U Z Z O O min X36DSA 2005

11 11 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Selection Sort for (i = 0; i < n-1; i++) { // select min jmin = i; for (j = i+1; j < n; j++) { if (a[j] < a[jmin]) { jmin = j; } // put min min = a[jmin]; a[jmin] = a[i]; a[i] = min; } X36DSA 2005

12 12 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Selection Sort Step k n-kk n Select minimum ……. (n-k) tests Tests total B B D D E E J J K K A A M M T T R R U U Z Z O O min X36DSA 2005

13 13 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Selection Sort Step k n-k k moves ……. 3 Moves total B B D D E E J J K K A A M M T T R R U U Z Z O O X36DSA 2005

14 14 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Selection Sort Summary Tests total Moves total =  (n) Asymptotic complexity of Selection Sort is  (n 2 ) =  (n 2 ) Operations total + =  (n 2 ) X36DSA 2005

15 15 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting Insertion Sort Řazení vkládáním (na adekvátní pozici) X36DSA 2005

16 16 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Insertion Sort A A B B D D E E J J M M K K O O R R T T U U Z Z Start Step 1 B B D D E E M M O O R R Z Z T T D D E E Z Z A A B B M M R R T T O O A A J J K K U U J J K K U U X36DSA 2005

17 17 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Insertion Sort Step 3 B B D D E E M M O O R R Z Z T T A A J J K K U U D D E E M M O O R R Z Z T T A A J J K K U U B B D D E E M M O O R R Z Z A A J J K K U U T T D D E E M M O O R R Z Z A A J J U U T T K K B B B B Step 2 X36DSA 2005

18 18 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Insertion Sort Step k D D E E Z Z A A J J B B D D E E O O R R Z Z A A J J K K U U T T B B M M K K O O R R U U T T M M Sorted B B D D E E J J K K O O R R U U Z Z A A M M T T k …... … X36DSA 2005

19 19 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Insertion Sort for (i = 1; i < n; i++) { // find & make // place for a[i] insVal = a[i]; j = i-1; while ((j >= 0) && (a[j] > insVal)) { a[j+1] = a[j]; j--; } // insert a[i] a[j+1] = insVal; } X36DSA 2005

20 20 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Insertion Sort Step k D D E E O O R R Z Z A A J J K K U U T T B B M M k tests ……. 1 best case k worst case (k+1)/2 average case tests + 1 = moves moves ……. 3 *) best case k+1 worst case (k+3)/2 average case *) instead of 2 X36DSA 2005

21 21 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Insertion Sort Summary Tests total Moves total =  (n 2 ) average case Asymptotic complexity of Insertion Sort is O(n 2 ) (!!) n - 1 (n 2 - n)/2 =  (n 2 ) =  (n) best case worst case (n 2 + n + 2)/4 =  (n 2 ) average case 2n - 2 (n 2 + n - 2)/2 =  (n 2 ) =  (n) best case worst case (n 2 + 5n - 6)/4 Tests total X36DSA 2005

22 22 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting Bubble Sort Bublinkové třídění X36DSA 2005

23 23 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Bubble Sort A A B B D D E E J J M M K K O O R R T T U U Z Z Start Phase 1 A A B B D D E E J J M M K K O O R R T T U U Z Z A A B B D D E E J J M M K K O O R R T T U U Z Z A A B B D D E E J J M M K K O O R R T T U U Z Z X36DSA 2005

24 24 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Bubble Sort Phase 1 A A B B D D E E J J M M K K O O R R T T U U Z Z A A B B D D E E J J M M K K O O R R T T U U Z Z … etc … Phase 2 A A B B D D E E J J M M K K O O R R T T U U Z Z X36DSA 2005

25 25 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Bubble Sort Phase 2 Phase 3 A A B B D D E E J J M M K K O O R R T T U U Z Z A A B B D D E E J J M M K K O O R R T T U U … etc … A A B B D D E E J J M M K K O O R R T T U U Z Z Z Z X36DSA 2005

26 26 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Bubble Sort Phase 3 Phase n-1 … etc … A A B B D D E E J J M M K K O O R R T T U U Z Z ……... B B D D E E J J K K O O R R U U Z Z A A M M T T Sorted B B D D E E J J K K O O R R U U Z Z A A M M T T n-2n-2 X36DSA 2005

27 for (lastPos = n-1; lastPos > 0; lastPos--) { for (j = 0; j < lastPos-1; j++) { if (a[j] > a[j+1]) swap(a, j, j+1); 27 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Bubble Sort Summary Tests total Moves total 0 =  (1) =  (n 2 ) best case worst case =  (n 2 ) (n-1) + (n-2) + … = Asymptotic complexity of Bubble Sort is  (n 2 ) X36DSA 2005

28 28 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort Sir Charles Antony Richard Hoare C.A.R. Hoare: Quicksort. Computer Journal, Vol. 5, 1, (1962) X36DSA 2005

29 29 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Divide & Conquer! Divide et Impera! The problem The solution The problem The solution Solve the subproblem their work our work Merge! Divide! X36DSA 2005

30 30 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort A A B B D D E E J J M M K K O O R R T T U U Z Z Small Big A A B B D D E E J J M M K K O O R R T T U U Z Z Small M M O O R R T T U U Z Z Big Divide & Conquer! A A B B D D E E J J K K Start The idea Divide! X36DSA 2005

31 QuickSort 31 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … M M O O R R T T U U Z Z A A B B D D E E J J K K Two separate problems M M O O R R T T U U Z Z A A B B D D E E J J K K M M O O R R T T U U Z Z A A B B D D E E J J K K Four separate problems etc… Divide! … …………………… X36DSA 2005

32 32 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort Conquered! A A B B D D E E J J M M K K O O R R T T U U Z Z … … … … … … … … … … … … … … … … … X36DSA 2005

33 33 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort pivot A A B B D D E E J J M M K K O O R R T T U U Z Z  M M ………… Init iLiR Partitioning Pivot X36DSA 2005

34 34/ 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort A A B B D D E E J J M M K K O O R R T T U U Z Z M M iLiR A A B B D D E E J J M M K K O O R R T T U U Z Z iL iR Step 1 Partitioning Pivot X36DSA 2005

35 35/ 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort M M iLiR A A B B D D E E J J M M K K O O R R T T U U Z Z A A B B D D E E J J M M K K O O T T U U Z Z iLiR R R Partitioning Step 2 iL Pivot X36DSA 2005

36 36 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort M M Partitioning Step 3 A A B B D D E E J J M M K K O O T T U U Z Z R R iR iL iR Stop  Divide! Init iLiR A A B B D D E E J J M M K K O O T T U U Z Z R R E E Pivot X36DSA 2005

37 37 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort Partitioning iLiR A A B B D D E E J J M M K K O O T T U U Z Z R R E E Step 1 A A D D J J M M K K O O T T U U Z Z R R B B E E iLiR Pivot X36DSA 2005

38 iR 38 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort Partitioning E E Step 2 A A D D J J M M K K O O T T U U Z Z R R B B E E iL iR A A D D J J M M K K O O T T U U Z Z R R B B E E iL iR Stop  Divide! A A D D J J M M K K O O T T U U Z Z R R B B E E iRiL Init B B Pivot X36DSA 2005

39 39 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort Partitioning A A D D J J M M K K O O T T U U Z Z R R B B E E iRiL B B A A D D J J M M K K O O T T U U Z Z R R B B E E iR iL iR Stop  A A D D J J M M K K O O T T U U Z Z R R B B E E iLiR B B Step 1 Divide! Init Pivot X36DSA 2005

40 40 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort Partitioning A A D D M M K K O O U U Z Z R R B B iR B B Step 1 iL D D J J M M K K O O T T U U Z Z R R B B E E iRiL Init K K iL iR …….. == Next Partition etc… A A J J E E T T Pivot X36DSA 2005

41 void qSort(Item a[], int low, int high) { int iL = low, iR = high; Item pivot = a[low]; do { while (a[iL] < pivot) iL++; while (a[iR] > pivot) iR--; if (iL < iR) { swap(a,iL, iR); iL++; iR--; } else { if (iL == iR) { iL++; iR--;} } while( iL <= iR); if (low < iR) qSort(a, low, iR); if (iL < high) qSort(a, iL, high); } 41 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort iR iL Divide! iRiL K K K K D D K K K K K K D D D D U U K K X36DSA 2005

42 Levý index se nastaví na začátek zpracovávaného úseku pole, pravý na jeho konec, zvolí se pivot. Cyklus: Levý index se pohybuje doprava a zastaví se na prvku vetším nebo rovném pivotovi. Pravý index se pohybuje doleva a zastaví se na prvku menším nebo rovném pivotovi. Pokud je levý index ještě před pravým, příslušné prvky se prohodí, a oba indexy se posunou o 1 ve svém směru. Jinak pokud se indexy rovnají, jen se oba posunou o 1 ve svém směru. Cyklus se opakuje, dokud se indexy neprekříží, tj. pravý se dostane pred levého. Pak nastává rekurzivní volání na úsek od začátku do pravého(!) indexu včetně a na úsek od levého(!) indexu včetně až do konce, má-li príslušný úsek délku větší než / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort X36DSA 2005

43 43 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … QuickSort Asymptotic complexity  (n 2 )  (n·log 2 (n)) best case worst case Tests and moves total average case “Average” complexity of QuickSort is  (n·log 2 (n)) (!!) Asymptotic complexity of QuickSort is O(n 2 ) (!!)  (n·log 2 (n)) … but! : X36DSA 2005

44 44 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting N2N2 N  log 2 (N) N N2N2 Effectivity comparison decele- ration (1~1sec) 3 sec 15 sec 1.5 min 13 min 1.5 hrs 14 hrs 5 days X36DSA 2005

45 45 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sort stability XbXb XbXb XcXc XcXc XaXa XaXa XbXb XbXb XcXc XcXc XaXa XaXa Stable sort does not change the order of elements with equal value. Stabilní řazení nemění pořadí prvků se stejnou hodnotou. Sort X36DSA 2005

46 A2A2 A2A2 A1A1 A1A1 A3A3 A3A3 46 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sort stability B1B1 B1B1 D1D1 D1D1 C1C1 C1C1 A1A1 A1A1 C2C2 C2C2 B2B2 B2B2 A2A2 A2A2 D2D2 D2D2 B3B3 B3B3 A1A1 A1A1 A2A2 A2A2 A3A3 A3A3 B 1 B2B2 B2B2 B3B3 B3B3 C1C1 C1C1 C2C2 C2C2 C3C3 C3C3 D1D1 D1D1 D2D2 D2D2 D3D3 D3D3 A3A3 A3A3 D3D3 D3D3 C3C3 C3C3 B2B2 B2B2 B3B3 B3B3 C3C3 C3C3 C1C1 C1C1 C2C2 C2C2 D3D3 D3D3 D2D2 D2D2 D1D1 D1D1 Select Insert Bubble B 1 D1D1 D1D1 C1C1 C1C1 A1A1 A1A1 C2C2 C2C2 B2B2 B2B2 A2A2 A2A2 D2D2 D2D2 B3B3 B3B3 A3A3 A3A3 D3D3 D3D3 C3C3 C3C3 Stable implementation QuickSort -- Always!! Select Insert Bubble Unstable implementation -- X36DSA 2005

47 47 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting Různé algoritmy mají různou složitost X36DSA 2005

48 48 / 2The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Sorting The complexity of different algorithms varies X36DSA 2005


Stáhnout ppt "1 / 2X36DSA 2005The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log."

Podobné prezentace


Reklamy Google