Analiza kosztu zamortyzowanego

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

Sortowanie przez scalanie
Standardowa biblioteka języka C++
Schemat blokowy M START KONIEC
Zaawansowane techniki algorytmiczne
Grażyna Mirkowska PJWSTK, 10 stycznia 2001
Dynamiczne struktury danych Listy, Kolejki, Stosy
METODY ANALIZY PROGRAMÓW
Grażyna Mirkowska PJWSTK 15 listopad 2000
Wykład 10 Metody Analizy Programów Specyfikacja Struktur Danych
Wykład 06 Metody Analizy Programów System Hoare
Wykład 6 Najkrótsza ścieżka w grafie z jednym źródłem
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Elementarne struktury danych Piotr Prokopowicz
Geometria obliczeniowa Wykład 1
Szablony (wzorce) Przykład 1: Szablon klasy -
Licznik template<class Count_Type> class Count { public:
pseudokody algorytmów
ZŁOŻONOŚĆ OBLICZENIOWA
ALGORYTMY GEOMETRYCZNE.
Turbo pascal – instrukcje warunkowe, iteracyjne,…
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
Mechanika dzielenia na podsieci. Wykład 6
Eksperymentalna ocena jakości rozpoznawania
I T P W ZPT 1 Jak smakuje Espresso I T P W ZPT 2.
Rzędy wielkości funkcji
Typy wskaźnikowe, dynamiczne struktury danych
Kod Graya.
Algorytmy i struktury danych
Algorytmy i struktury danych
Rekurencja.
Operacje na strukturach listowych
A. Sumionka. Starodawna gra marynarska; Gra dwu i wieloosobowa; Gracze wykonują ruchy naprzemian; Złożona ze stosów, w których znajduje się pewna ilość
Złożone typy danych Listy Tworzenie elastycznych baz danych
Rodzaje, przechodzenie grafu
Przerwanie ang. interrupt.
Liczby całkowite dodatnie BCN
Wykład 10 typ zbiorowy rekurencja.
Dynamiczne struktury danych
Wykład 7 Synchronizacja procesów i wątków
Algorytmy i Struktury Danych
Algorytmy i Struktury Danych
WYKŁAD 3 Temat: Arytmetyka binarna 1. Arytmetyka binarna 1.1. Nadmiar
POTĘGI ©M.
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
Rekurencja.
Zasady arytmetyki dwójkowej
Algorytmy i Struktury Danych Struktury Danych
Algorytmy równoległe Algorytm równoległy pozwala na wykonywanie w danej chwili więcej niż jednej operacji. EREW - wyłączny odczyt i wyłączny zapis; CREW.
Metody nieinkluzyjne: Metoda iteracji prostej.
METODY REPREZENTOWANIA IFORMACJI
ALGORYTMY I STRUKTURY DANYCH
STOS. STL (ang. Standard Template Library) jest to biblioteka zawierająca algorytmy, pojemniki, iteratory oraz inne konstrukcje w formie szablonów, gotowe.
Sumator i półsumator.
Indeksy drzewiaste. ISAM ISAM - INDEXED SEQUENTIAL ACCESS METHOD Problem: –Dany jest plik uporządkowany – w jaki sposób zrealizować efektywnie zapytanie.
Sposoby zapisu algorytmu
Podstawy Informatyki.
Zbiory rozłączne.
Wstęp do Informatyki - Wykład 6
Efektywność algorytmów
ALGORYTMY I STRUKTURY DANYCH
Dane, zmienne, instrukcje
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

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.

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) 1 while not STACK-EMPTY(S) i k  0 2 do POP(S) 3 k := k - 1 Przeanalizujemy ciąg n operacji PUSH, POP i MULTIPOP na początkowo pustym stosie.

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(n2). 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)

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) 0 0 0 0 0 1 i := 0 1 0 0 1 1 2 while i < length[A] i A[i] = 1 2 0 1 0 3 3 do A[i] := 0 3 0 1 1 4 4 i := i + 1 4 1 0 0 7 5 if i < length[A] 5 1 0 1 8 6 then A[i] := 1 6 1 1 0 10 7 1 1 1 11 Przeanalizujemy ciąg n operacji INCREMENT na liczniku.

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/2i 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)

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

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