Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Analiza kosztu zamortyzowanego Koszt zamortyzowany operacji - średni koszt pojedynczej operacji w najgorszym przypadku: jeśli dla każdego n pesymistyczny.

Podobne prezentacje


Prezentacja na temat: "Analiza kosztu zamortyzowanego Koszt zamortyzowany operacji - średni koszt pojedynczej operacji w najgorszym przypadku: jeśli dla każdego n pesymistyczny."— Zapis prezentacji:

1 Analiza kosztu zamortyzowanego Koszt zamortyzowany operacji - średni koszt pojedynczej operacji w najgorszym przypadku: jeśli dla każdego n pesymistyczny czas wykonania ciągu n operacji można ograniczyć przez T(n), koszt zamortyzowany pojedynczej operacji wynosi T(n)/n. Koszt zamortyzowany może okazać się znacznie mniejszy niż pesymistyczny czas działania jednej operacji. Analiza zamortyzowanego kosztu algorytmów służy do szacowania kosztu algorytmów, w których następują ciągi podobnych operacji.

2 Operacje na stosie PUSH(S, x) - włożenie elementu x na stos S, O(1) POP(S) - zdjęcie elementu ze stosu S, O(1) STACK-EMPTY(S) - daje w wyniku TRUE, jeśli stos jest pusty MULTIPOP(S, k) - usuwa k elementów ze stosu S lub opróżnia go, jeśli na stosie było mniej niż k elementów; min(s,k) MULTIPOP (S, k) 1while not STACK-EMPTY(S) i k 0 2do POP(S) 3k := k - 1 Przeanalizujemy ciąg n operacji PUSH, POP i MULTIPOP na początkowo pustym stosie.

3 Analiza operacji na stosie Zwykłe podejście: Rozmiar stosu nie może przekroczyć n, więc pesymistuczny czas działania operacji MULTIPOP można ograniczyć przez O(n). Wtedy pesymistyczny koszt n operacji jest O(n 2 ). To oszacowanie górne jest poprawne, ale można uzyskać dokładniejsze. Analiza kosztu zamortyzowanego: Każdy obiekt, po włożeniu na stos, może być zdjęty co najwyżej jeden raz. Stąd liczba wywołań POP, włączając w to wywołania wewnątrz operacji MULTIPOP, nie może być większa niż liczba operacji PUSH, która nie jest większa niż n. Dlatego dla dowolnego n łączny czas wykonania każdego ciągu n operacji PUSH, POP i MULTIPOP na początkowo pustym stosie wynosi co najwyżej O(n). Koszt zamortyzowany operacji jest równy O(n)/n = O(1)

4 Licznik binarny K-bitowy licznik binarny, który może przyjmować nieujemne wartości całkowite, jest reprezentowany przez tablicę bitów A[0.. k-1], gdzie length[A] = k. WartośćKoszt INCREMENT (A) i := while i < length[A] i A[i] = do A[i] := i := i if i < length[A] then A[i] := Przeanalizujemy ciąg n operacji INCREMENT na liczniku.

5 Analiza operacji INCREMENT Zwykłe podejście: Pojedyncze wykonanie procedury INCREMENT może trwać (k) w pesymistycznym przypadku (kiedy w A są samie jedynki), więc czas działania n takich operacji można ograniczyć przez O(nk). Analiza kosztu zamortyzowanego: Nie wszystkie bity są modyfikowane przy każdym wywołaniu procedury. Bit A[0] jest modyfikowany przy każdym wywołaniu procedury INCREMENT; bit A[1] - w co drugim wywołaniu, A[2] - w co czwartym i t.d. Dla i = lgn bit A[i] ulega modyfikacji n/2 i razy w ciągu n operacji. Dla i > lgn bit A[i] nigdy nie jest modyfikowany. Liczba modyfikacji bitów wynosi: Czas wykonania n operacji - O(n) Zamortyzowany koszt każdej - O(1)

6 Powiększanie tablicy TABLE-INSERT(T, x) 1if size[T] = 0 2then przydziel 1 komórkę dla table[T] 3 size[T] := 1 4if num[T] = size[T] 5then przydziel 2 size[T] komórek dla new_table 6wstaw wszystkie elementy z table[T] do new_table 7zwolnij table[T] 8table[T] := new_table 9size[T] := 2 size[T] 10wstaw x do table[T] 11 num[T] := num[T] + 1

7 Analiza powiększania tablicy Niech n operacji TABLE-INSERT wykonuje się na początkowo pustej tablicy. Koszt i-j operacji wynosi: jeśli i-1 jest całkowitą potęgą 2 w przeciwnym razie Całkowity koszt n-j operacji wynosi: Koszt zamortyzowany każdej operacji jest ograniczony przez 3


Pobierz ppt "Analiza kosztu zamortyzowanego Koszt zamortyzowany operacji - średni koszt pojedynczej operacji w najgorszym przypadku: jeśli dla każdego n pesymistyczny."

Podobne prezentacje


Reklamy Google