• Nie Znaleziono Wyników

3 Analiza kosztu zamortyzowanego dla licznika binarnego metod¡ potencjaªów

N/A
N/A
Protected

Academic year: 2021

Share "3 Analiza kosztu zamortyzowanego dla licznika binarnego metod¡ potencjaªów"

Copied!
3
0
0

Pełen tekst

(1)

Algorytmy i Struktury Danych, 6. ¢wiczenia

2008-11-17

1 Plan zaj¦¢

• wprowadzi¢ funkcj¦ potencjalu i wykorzysta¢ j¡ w analizie dodawania 1 do licznika binarnego (ksiegowanie bylo na wykladzie)

• Analiza symulacji kolejki za pomoca dwoch stosow.

• tablice dynamiczne

• rozglaszanie w czasie liniowym w drzewie

• implementacje Dijkstra z dwupoziomowymi kubeªkami.

2 Analiza kosztu zamortyzowanego metod¡ po- tencjaªu

(Cormen, rozdziaª 17.3, strona 419)

Niech Φioznacza potencjaª po wykonaniu i-tej operacji. Zakªadamy, »e Φ0= 0, oraz Φi ≥ 0.

Koszt zamortyzowany i-tej operacji oznaczamy przez:

ˆ

ci= ci+ Φi− Φi−1

Koszt wykonania n kolejnych operacji:

n

X

i=1

ˆ ci=

n

X

i=1

(ci+ Φi− Φi−1) =

n

X

i=1

ci+ Φn− Φ0

3 Analiza kosztu zamortyzowanego dla licznika binarnego metod¡ potencjaªów

(Cormen, 17.1, strona 414-416 i 421422)

Jako funkcj¦ potencjaªu wybieramy liczb¦ jedynek w liczniku.

1

(2)

4 Tablice dynamiczne

(Cormen, 17.4, strona 423432) Potrzebujemy tablicy, która umo»liwia:

• swobodny (w czasie O(1) dost¦p) do wszystkich zapisanych elementów,

• rozszerzenie tablicy o nast¦pny element (na jej ko«cu),

• zmniejszenie tablicy o ostatni element,

Dodawanie nowych elementów mo»emy wykona¢ w nast¦puj¡cy sposób:

• je±li s¡ jeszcze wolne miejsca w tablicy to dodajemy nowy element,

• je±li tablica jest peªna, to alokujemy dwa razy wi¦ksz¡ tablic¦ i przepi- sujemy wszystkie stare elementy do nowej tablicy, oraz dodajemy nowy element.

Usuwanie:

• je±li wspóªczynnik zapeªnianie jest wi¦kszy ni» 1/4, to usuwamy element,

• je±li wspóªczynnik zapeªnienia spadnie poni»ej 1/4, to alokujemy dwa razy mniejsz¡ tablic¦, i przepisujemy tam wszystkie stare elementy (oczywi±cie oprócz usuwanego).

Potencjaª:

• je±li wspóªcznnik zapeªnienia ≥ 1/2, to Φ = 2 ∗ num − size,

• je±li wspóªcznnik zapeªnienia < 1/2, to Φ = size/2 − num,

5 Kolejka za pomoc¡ stosów

Chcemy za pomoc¡ dwóch stosów (+ jeden pomocniczy) symulowa¢ kolejk¦ na której mo»emy wykonywa¢ nast¦puj¡ce operacje:

• dodaj element na pocz¡tek kolejki,

• dodaj element na koniec kolejki,

• usu« element z pocz¡tku kolejki,

• usu« element z ko«ca kolejki.

Utrzymujemy dwa stosy, na czubku pierwszego jest koniec kolejki, na czubku drugiego pocz¡tek kolejki. Dodawanie wykonujemy przez dodanie elementu na odpowiednim stosie. Przy usuwaniu, je±li odpowiedni stos nie jest pusty, to po prostu zdejmujemy odpowiedni element, wpp. mamy sytuacje, gdzie wszystkie elementy s¡ na jednym stosie. W takim przypadku przy pomocy pomocniczego stosu przenosimy poªow¦ elementów na drugi stos.

2

(3)

6 Rozgªaszanie komunikatów

Dane drzewo T , nale»y obliczy¢ czas potrzebny na przesªanie komunikatów do wszystkich w¦zªów drzewa. Przesªanie komunikatu po jednej kraw¦dzi zajmuje 1 jednostk¦ czasu.

Algorytm O(n log n):

• je±li wierzchoªek jest li±ciem to czas = 0,

• wpp. rekurencyjnie oblicz czas potrzebny na rozgªoszenie w poddrzewach,

• posortuj malej¡co otrzymane czasy: t1, . . . , tk

• czas = max{i + ti: 1 ≤ i ≤ k}

Aby otrzyma¢ algorytm O(n) trzeba sprytnie oblicza¢ warto±ci atrybutu czas.

• Q = {li±cie T },

• while root 6∈ Q do

 x = Q.extractMin()

 dodaj x.czas do kolejki parent(x),

 je±li parent(x) ma ju» peªn¡ list¦ poddrzew, to policz parent(x).czas i dodaj parent(x) do kolejki.

Kolejk¦ Q mo»na zaimplementowa¢ w tablicy (ity element tablicy zawiera list¦

wierzchoªków o warto±ci x.czas = i). Sumarycznie operacje extractMin zajm¡

czas O(n). Dodawanie do kolejki zajmuje czas O(1).

7 Dijkstra z ograniczonymi wagami

Aby otrzyma¢ czas O(NW + M) potrzebujemy kolejki priorytetowej o nast¦pu- j¡cych czasach wykonania poszczególnych operacji:

• ExtracMin  O(W )

• DecreaseKey  O(1)

Wystarczy zauwa»y¢, »e je±li do jakiego± wierzchoªka istnieje droga, to jej dªugo±¢ jest ≤ NW . Czyli potrzebujemy tablicy NW elementowej (ity element tablicy zawiera list¦ nieodwiedzonych wierzchoªków w odlegªo±ci i od wierz- choªka pocz¡tkowego).

3

Cytaty

Powiązane dokumenty

[r]

zastosujemy metod¦ do zdania zaczn¡ si¦ pojawia¢ formuªy, które nie b¦d¡ zdaniami. Metody wyznaczania (najbardziej ogólnego) unikatora s¡ wa»nym dziaªem

• jeśli tablica jest pełna, to alokujemy dwa razy większą tablicę i przepi- sujemy wszystkie stare elementy do nowej tablicy, oraz dodajemy nowy

Uruchom program, sprawdź efekt podania wartości, która nie występuje w tablicy, wartości występującej w tablicy oraz efekt niepoprawnego podania liczby.. catch z

5 Poka», »e w przestrzeni Hausdora punkty s¡ domkni¦te, a ci¡gi zbie»ne maj¡ tylko jedn¡

Tablice tego typu mog ˛ a by´c tworzone na podstawie bazy danych, proto- kołu wywiadu z ekspertem lub protokołu obserwacji danego procesu. pacjenci, jednostki czasu itp. W

Porównać efektywność oby dwóch wariantów (czas działania, rozmiar kodu, czas napisania programu).. Wnioski dołączyć

Udowodni¢, »e z jest liczb¡ algebraiczn¡ wtedy i tylko wtedy, gdy ¯z (liczba sprz¦»ona) jest liczb¡