Algorytmy dynamiczne Piotr Sankowski - p. 1/14
Dynamiczne: drzewa wyszukiwanie wzorca w tekście spójność grafu problemy algebraiczne (FFT i inne) domknięcie przechodnie oraz dynamiczne macierze najkrótsze ścieżki w grafach najkrótsze ścieżki w grafach planarnych algorytmy aproksymacyjne dla najkrótszych ścieżek w grafach i inne... - p. 2/14
Algorytmy dynamiczne W algorytmie dynamicznym utrzymujemy informacje o zmieniajacej się strukturze danych. Pojawiły się na ASD: kolejki priorytetowe, słowniki, struktura dla zbiorów rozłacznych (find-union). - p. 3/14
Zastosowania Przydatne w innych problemach i same w sobie: Stosowane w przypadkach gdy dane zmieniaja się z czasem. Np. rożne systemy administracyjne i kontrolne. Stosowane gdy chcemy coś zmienić i po tej zmianie poznać jej konsekwencje. Jeżeli konsekwencje będa niedobre to chcemy móc wycofać się z tej zmiany. Skutki małych zmian chcemy poznawać szybko. Np. gry. Stosowane jako procedury w innych programach. Np. obliczanie najmniejszego drzewa rozpinajacego. - p. 4/14
Algorytmy dynamiczne Chcemy wykonywać na strukturze zmiany: kolejki priorytetowe dodanie/usunięcie elementu najmniejszego, słownik dodanie/usunięcie elementu, find-union połaczenie dwóch zbiorów. oraz odpowiadać na zapytania: kolejki priorytetowe jaki jest element najmniejszy? słownik czy element jest w zbiorze? find-union czy dwa elementy należa do tego samego zbioru? - p. 5/14
Algorytmy dynamiczne Algorytm nazwiemy dynamicznym jeżeli będzie on realizował operacje zmiany i odpowiadał na zapytania szybciej niż policzenie wszystkiego od zera. kolejki priorytetowe szybciej niż znalezienie najmniejszego elementu w zbirze, słownik szybciej sprawdzenie czy element jest w zbiorze, find-union szybciej niż wyliczenie zbiorów. - p. 6/14
Algorytmy dynamiczne Algorytm nazywamy przyrostowym (incremental) jeżeli pozwala tylko na wstawianie elementów: słownik wstawianie elementów, graf wstawianie krawędzi. Algorytm jest ubytkowy (decremental) jeżeli możemy tylko możemy usuwać elementy: słownik usuwanie elementów, graf tylko usuwamy krawędzie. Algorytm jest w pełni dynamiczny jeżeli pozwala usuwać i dodawać elementy. - p. 7/14
Dla wielu problemów udało się pokazać efektywne algorytmy dynamiczne. Dla bardzo niewielu problemów pokazane zostały jakiekolwiek dolne granice. Zazwyczaj tylko logarytmiczne. Dla bardzo wielu problemów nie umiemy skonstruować algorytmów działajacych szybciej niż w czasie linowym. - p. 8/14
Dynamiczne drzewa Możliwe zmiany: link(u, v) jeżeli u i v sa w różnych drzewach to dodaj krawędź uv, cut(u, v) podziel drzewo zawierajace krawędź uv na dwa drzewa poprzez usunięcie krawędzi uv. Możliwe zapytania: connected(u, v) czy u i v sa w tym samym drzewie? lca(u, v) jaki jest najniższy przodek u i v w drzewie? Czas O(log n) Sleator i Tarjan (1981) (b. użyteczne). - p. 9/14
Wyszukiwanie wzorca w tekście Utrzymujemy dynamiczne tekst. Możemy: wstawiać znaki, usuwać znaki, przenosić dowolne bloki tekstu, pytać o wystapienia wzorca P. Czas O(log 2 n log log n log n) na zmiany oraz czas O(log n log log n + occ + P ) na zapytania, gdzie occ to liczba wystapień P jaka ma być zwrócona Alstrup, Brodal i Rauhe (2000). - p. 10/14
Dynamiczna spójność Utrzymujemy graf nieskierowany. Chcemy: dodawać krawędzie, usuwać krawędzie. Chcemy umieć odpowiadać na pytania: czy dwa wierzchołki sa połaczone, rozmiar składowej do której należy wierzchołek. Czas O(log 2 n) Holm, Lichtenberg i Thorup (1998). Czas O(log n(log log n) 3 ) Thorup (2000). - p. 11/14
Problemy algebraiczne Dana funkcja f : R k R l, chcemy: zmieniać jedna z wartości na wejściu, pytać o wartości na wyjściu. Przykłady problemów: mnożenie wielomianów w czasie O( n log n) Rief i Tate (1997). dyskretna transformata Fouriera w czasie O( n) Rief i Tate (1997). wyznacznik w czasie O(n 1.5 ) Sankowski (2004). - p. 12/14
Domknięcie przechodni Utrzymujemy skierowany graf. Możemy: dodawać i usuwać krawędzie, pytać, czy między wierzchołkami istnieje ścieżka. Zmiana Demetrescu i Italiano 00 O(n 2 ) O(1) Zapytanie Roditty i Zwick 02 O(m n) O( n) Roditty i Zwick 04 O(m + n log n) O(n) Sankowski 04 (pesym.) O(n 2 ) O(1) Sankowski 04 (pesym.) O(n 1.575 ) O(n 0.575 ) Sankowski 04 (pesym.) O(n 1.495 ) O(n 1.495 ) - p. 13/14
Najkrótsze ścieżki Utrzymujemy skierowany graf. Możemy: dodawać i usuwać krawędzie, jaka jest odległość między wierzchołkami. Zmiana Zapytanie Fakcharoemphol i Rao 02 O(n 4 5 log 13 5 n ) O(n 4 5 log 13 5 n ) Grafy planarne Demetrescu i Italiano 03 Õ(n 2 ) O(1) Sankowski 05 O(n 1.932 ) O(n 1.288 ) Grafy bez wag - p. 14/14