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.