Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

ALGORYTMY I STRUKTURY DANYCH WYKŁAD 03 Minimum i maksimum Grażyna Mirkowska PJWSTK, ITN semestr letni 2002.

Podobne prezentacje


Prezentacja na temat: "ALGORYTMY I STRUKTURY DANYCH WYKŁAD 03 Minimum i maksimum Grażyna Mirkowska PJWSTK, ITN semestr letni 2002."— Zapis prezentacji:

1

2 ALGORYTMY I STRUKTURY DANYCH WYKŁAD 03 Minimum i maksimum Grażyna Mirkowska PJWSTK, ITN semestr letni 2002

3 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum2 Plan wykładu 4 Minimum i maksimum –Algorytm naiwny –Jak poprawić algorytm naiwny –Analiza kosztu średniego –Algorytm optymalny –Algorytm rekurencyjny

4 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum3 Minimum i maksimum Dany jest ciąg elementów e[i] i= 1,...,n należących do pewnego zbioru E liniowo uporządkowanego przez relację. Znaleźć największy i najmniejszy element tego ciągu. Wp ={e[i] e[j] dla i j, e[i] E dla i =1...n, liniowy porządek w E } Wk = { e[min] e[i] oraz e[max] e[i] dla wszystkich i=1,2...n}

5 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum4 Algorytm naiwny Krok 1 Znajdź minimum metodą sekwencyjnego przeglądania ciągu. Krok 2 Znajdź maksimum, tą samą metodą. Koszt : T(min_max1,n) = 2n-2 { min :=1; max :=1; i:= 2; while i n do if e[i] >e[max] then max := i fi; if e[i]< e[min] then min := i fi; i:= i+1; od; } e[max] e[j], e[min] e[j] dla j< i

6 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum5 Modyfikacja algorytmu naiwnego Algorytm naiwny nie jest optymalny! Jeśli e[i] jest większe od e[max], to nie ma potrzeby porównywać e[i] z e[min]. { min :=1; max :=1; for i := 2 to n do if e[i] >e[max] then max := i else if e[i]< e[min] then min := i fi fi od; } ( 1 j

7 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum6 Analiza kosztu min-max 2 { min :=1; max :=1; for i := 2 to n do if e[i] >e[max] then max := i else if e[i]< e[min] then min := i fi fi od; } Uwaga 1 Pierwsze porównanie jest wykonywane w każdym przebiegu pętli. Uwaga 2 Drugie porównanie jest wykonywane tylko wtedy, gdy odpowiedź w pierwszym porównaniu jest negatywna. powrót

8 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum7 Analiza kosztu średniego min-max 2 D n - zbiór wszystkich danych rozmiaru n. A(n) = d Dn p(d)* t(d ) Zbiór wszystkich permutacji Jeśli założymy, że wszystkie permutacje są jednakowo prawdopodobne, to p(d) = 1/n!

9 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum8 Koszt średni c.d. Niech d = a 1...a n będzie daną permutacją liczb 1...n i b = b 1,...b n będzie ciągiem takim, że b i = liczba elementów większych niż a i na lewo od a i, tzn. o mniejszych indeksach w ciągu d. Przykład Niech d = , wtedy b = Obserwacja (a) Ciąg b jest jednoznacznie wyznaczony przez d. (b) 0 b i < i Drugiego porównania w algorytmie nie wykonujemy tylko wtedy, gdy na lewo od i-tego elementu nie było liczby większej, czyli tylko wtedy gdy b i =0. Min-max2

10 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum9 Koszt średni c.d. Prawdopodobieństwo tego, że b i =0 wynosi 1/i, ponieważ b i przyjmuje tylko wartości od 0 do i-1. Stąd prawdopodobieństwo wykonania drugiego porównania wynosi 1-1/i. t(d) = (n-1) + i =2...n 1* p( drugie porównanie ) = (n -1) + i=2...n (1-1/i) = 2n-2 - lg n +c A(n) = i =2...n 1/n! t(d) = 2n - lg n +c i=2...n (1/i) 1/x dx= ln|x|

11 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum10 Algorytm min-max 3 Idea algorytmu: Porównaj parami elementy danego ciągu. Mniejszy z każdej pary wstaw do ciągu M, a większy z każdej pary do ciągu W. Dany ciąg: 4, 5, 1, 8, 34, 11, 44, 4, 7, 2, Mniejsze:Większe: Wybierz minimumWybierz maksimum 4, 5, 1, 8, 34, 11, 44, 4, 7, 2,

12 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum11 Analiza kosztu { // min-max 3 i:=1; k:=1; while i e[i+1] then w[k] :=i; m[k] :=i+1 else w[k] :=i+1; m[k] :=i fi i := i+2; k := k+1; od; min := m[1]; max :=w[1]; for i := 2 to k-1 do if e[m[i]] e[max] then max := w[i] fi; od; } Operacja dominująca : porównywanie. 1szy krok = n/2 porównań Załóżmy, że n jest liczbą parzystą. Wybranie minimum = n/2 - 1 porównań Wybranie maksimum = n/2 - 1 porównań. Razem = 3n/2 -2 porównań

13 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum12 Analiza poprawności { //rozdzielanie i:=1; k:=1; while i e[i+1] then w[k] :=i; m[k] :=i+1 else w[k] :=i+1; m[k] :=i fi i := i+2; k := k+1; od; } Dla każdego j=1...k-1 istnieje takie u

14 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum13 Analiza poprawności c.d. min := m[1]; max :=w[1]; for i := 2 to k-1 do if e[m[i]] e[max] then max := w[i] fi; od; Wśród indeksów m[1],...m[k] istnieje taki indeks min, że e[min] e[i] dla wszystkich i =1,...n Wśród indeksów m[1],...m[k] istnieje taki indeks max, że e[i] e[max] dla wszystkich i =1,...n e[min] e[i] dla wszystkich i =1,...n e[i] e[max] dla wszystkich i =1,...n

15 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum14 Min-max 4 -- przykład Założenie: n = 2 k 4, 5, 1, 8, 33, 11, 44, 4, 7, 2, 13, 22, 3, 55, 9, 6 4, 5, 1, 8, 33, 11, 44, 4 min= max= 7, 2, 13, 22, 3, 55, 9, 6 min=max= Dany ciąg: 4, 5, 1, 8 min= max= 33, 11, 44, 4 min= max= 7, 2, 13, 22 min= max= 3, 55, 9, 6 min= max= 4,5 1,8 33,1144,47,213,22 3,559,

16 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum15 Min-max 4 -- przykład Założenie: n = 2 k 4, 5, 1, 8, 33, 11, 44, 4, 7, 2, 13, 22, 3, 55, 9, 6 4, 5, 1, 8, 33, 11, 44, 4 min= max= 7, 2, 13, 22, 3, 55, 9, 6 min=2max=55 Dany ciąg: 4, 5, 1, 8 min= max= 33, 11, 44, 4 min= max= 7, 2, 13, 22 min=2 max=22 3, 55, 9, 6 min=3 max=55 4,5 1,8 33,1144,47,213,22 3,559, min = 1 max = 55

17 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum16 Algorytm min-max 4 obiekt function min_max4 (int i, j); //deklaracja i tworzenie obietktów result, lewy, prawy; { if ( i+1=j ) then if e[j] > e[i] then result.max := j; result.min := i else result.min := j; result.max :=i fi else x:= (i+j-1) div 2; lewy := min_max4( i, x); prawy := min_max4( x+1, j); if e[prawy.min]

18 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum17 Poprawność min-max 4 Wp = {( m) n= 2 m, e[i] dla i=1,...n} Wk = {( i) e[min] e[i], ( i) e[i] e[max]} Jeżeli spełniony jest warunek początkowy wp, to po wykonaniu następujących instrukcji {wynik := min_max4(1,n); min := wynik.min; max := wynik.max;} spełniony będzie warunek końcowy wk.

19 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum18 Czy algorytm min-max4 zatrzymuje się? W każdym wywołaniu funkcji min_max4(i,j) parametry aktualne i, j spełniają warunek j-i+1 = 2 k dla pewnego k, 1 k m Dla pierwszego wywołania własność jest oczywiście spełniona. j = n, i =1 Jeżeli w ciągu są tylko 2 elementy, tzn. k=1. Wtedy nie wywołujemy powtórnie funkcji min-max4. bo i+j=1 Jeżeli k>1 oraz j-i+1 = 2 k, to funkcja zostanie wywołana dla nowych argumentów: i, x oraz x+1, j, ale wtedy x-i+1 = (i+j-1)/2 – i +1 = (j-i+1)/2 = 2 k-1 j-(x+1)+1 = j – ((i+j-1)/2 +1) +1 =(j-i+1)/2 = 2 k-1 Min- max4

20 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum19 C.d. stop dla min-max4 Długość rozważanego przez funkcję min-max4 ciągu maleje w kolejnych wywołaniach. jest 2 razy mniejsza W konskwencji proces musi się zakończyć dla k=1. Jeśli spełniony jest warunek początkowy wp, to algorytm min_max4 zatrzymuje się dla dowolnych danych.

21 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum20 Poprawność min-max4 Dowód przez indukcję ze względu na liczbę wywołań rekurencyjnych funkcji min_max4. Dla jednego tylko wywołania, tzn. gdy m=1 wynik algorytmu jest poprawny. Załóżmy, że wynik algorytmu jest poprawny dla wewnętrznych wywołań, czyli e[k] e[lewy.max] dla i k x oraz e[k] e[prawy.max] dla x+1 k j Po wykonaniu instrukcji : Mamy : e[k] e[result.max] dla i k j if e[lewy.max]

22 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum21 Koszt min_max4 Operacja dominująca - porównywanie elementów T(min_max4, 2) = 1 T(min_max4, 2 k )= 2* T(min_max4,2 k-1 ) +2 Jeśli w ciągu są tylko 2 elementy, to wykonujemy 1 porównanie Min- max4 Dla k>1 wykonujemy 2 wywołania rekurencyjnie Dwa dodatkowe porównania dla ustalenia ostatecznego wyniku T(min_max4, n) = 3/2 n - 2

23 20 marca 2002G. Mirkowska, ASD_03 Minimum i maksimum22 Czy można zrobić lepiej? Każdy algorytm wyznaczający dla dowolnego ciągu e[1],...e[n] elementów dowolnej liniowo uporządkowanej przestrzeni musi wykonać w przypadku pesymistycznym co najmniej [3/2 n] – 2 porównania. min_max4 jest optymalnym rozwiązaniem problemu min-max


Pobierz ppt "ALGORYTMY I STRUKTURY DANYCH WYKŁAD 03 Minimum i maksimum Grażyna Mirkowska PJWSTK, ITN semestr letni 2002."

Podobne prezentacje


Reklamy Google