AMORTYZACJA Zadanie 1. [CLRS04, Zadania 17.1-3. oraz 17.3
Transkrypt
AMORTYZACJA Zadanie 1. [CLRS04, Zadania 17.1-3. oraz 17.3
AMORTYZACJA Zadanie 1. [CLRS04, Zadania 17.1-3. oraz 17.3-2.] Wykonujemy ciag ˛ n operacji na strukturze danych. Koszt i-tej operacji jest równy i, jeśli i jest pot˛ega˛ dwójki; w przeciwnym razie wynosi 1. Dokonaj analizy kosztu zamortyzowanego metoda˛ kosztu sumarycznego oraz metoda˛ potencjału. Zadanie 2. [CLRS04, Zadanie 17.2-1.] Na stosie, którego rozmiar nigdy nie przekracza k, jest wykonywany ciag ˛ operacji. Co każdych k operacji jest wykonywana kopia bezpieczeństwa całego stosu. Wykaż, że koszt n operacji, wliczajac ˛ koszt kopiowania, można oszacować jako O(n); przypisz w tym celu operacjom na stosie odpowiednie koszty zamortyzowane. Zadanie 3. [CLRS04, Zadanie 17.3-3.] Rozważ zwyczajny, binarny n-elementowy kopiec typu min z operacjami INSERT i EXTRACTMIN, których pesymistyczny czas działania wynosi O(log n). Podaj funkcj˛e Φ wzgl˛edem której koszt zamortyzowanej operacji INSERT wynosi O(log n), a koszt zamortyzowanej operacji EXTRACTMIN wynosi O(1). Zadanie 4. [CLRS04, Zadanie 17.3-4.] Jaki jest koszt wykonania na stosie n operacji typu PUSH, POP i MULTIPOP, przy założeniu, że na poczatku ˛ wysokość stosu jest równa s0 , a po n operacjach wynosi sn ? Zadanie 5. [CLRS04, Zadanie 17.3-6.] Pokaż jak zaimplementować kolejk˛e za pomoca˛ dwóch zwyczajnych stosów z operacjami PUSH i POP, aby koszt zamortyzowany każdej operacji ENQUEUE i DEQUEUE wynosi O(1). Zadanie 6. Pokaż jak zaimplementować kolejk˛e dwustronna˛ za pomoca˛ trzech zwyczajnych stosów z operacjami PUSH i POP, aby koszt zamortyzowany każdej z operacji: (1) ENQUEUEBEGIN – dodanie elementu na poczatek ˛ kolejki, (2) ENQUEUEEND – dodanie elementu na koniec kolejki, (3) DEQUEUEBEGIN – usuniecie elementu z poczatku ˛ kolejki, (4) DEQUEUEEND – usuniecie elementu z końca kolejki wynosił O(1). Zadanie 7. [CLRS04, Problem 17-2.] Wyszukiwanie binarne w uporzadko˛ wanej tablicy działa w czasie logarytmicznym, lecz czas wstawienia nowego elementu jest liniowy wzgl˛edem jej rozmiaru. Można poprawić czas wstawiania, korzystajac ˛ w odpowiedni sposób z wielu uporzadkowanych ˛ tablic. Załóżmy, że chcemy wykonywać operacje SEARCH oraz INSERT na zbiorze n-elementowym. Niech k = ⌈log (n + 1)⌉ i niech nk−1 , nk−2 , . . . , n0 b˛edzie binarna˛ reprezentacja˛ liczby n. Mamy k uporzadkowanych ˛ tablic i A0 , A1 , . . . , Ak−1 , gdzie dla i = 0, 1, . . . , k − 1 tablica Ai ma rozmiar 2 . Każda z tablic jest albo pusta, albo całkowicie zapełniona, w zależności od tego, czy ni = 0, czy ni = 1. łaczna ˛ liczba elementów znajdujaca ˛ si˛e w k tablicach k −1 i ˛ wynosi wi˛ec ∑i=0 ni 2 = n. Choć każda pojedyncza tablica jest uporzadkowana, nie ma żadnych szczególnych zależności mi˛edzy różnymi tablicami. 1 2 AMORTYZACJA (1) Opisz sposób wykonywania operacji SEARCH na tej strukturze danych. Oszacuj pesymistyczny czas działania tej operacji. (2) Opisz sposób wstawiania nowego elementu do tej struktury. Przeanalizuj jego pesymistyczny i zamortyzowany czas działania. (3) Zastanów si˛e, jak zaimplementować operacj˛e DELETE. L ITERATURA [CLRS04] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Wprowadzenie do algorytmów, 6zmienione i rozszerzone, Wydawnictwo Naukowo-Techniczne, Warszawa, 2004.