Dynamiczne drzewa. Marian M. Kędzierski. 26 listopada Wstęp Euler-Tour Trees Dynamiczna spójność Algorytm Dinica Link-Cut Trees

Podobne dokumenty
Algorytmy dynamiczne. Piotr Sankowski. - p. 1/14

Drzewa rozpinajace, zbiory rozłaczne, czas zamortyzowany

Wysokość drzewa Głębokość węzła

Dynamiczne drzewa. Piotr Sankowski. - p. 1/27

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

Struktury Danych i Złożoność Obliczeniowa

Znajdowanie skojarzeń na maszynie równoległej

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola:

Drzewa. Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew

ALGORYTMY I STRUKTURY DANYCH

Teoretyczne podstawy informatyki

Egzaminy i inne zadania. Semestr II.

Lista 0. Kamil Matuszewski 1 marca 2016

Porządek symetryczny: right(x)

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

Każdy węzeł w drzewie posiada 3 pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste.

Podstawy Informatyki. Metody dostępu do danych

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Drzewa poszukiwań binarnych

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Teoretyczne podstawy informatyki

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Koszt zamortyzowany. Potencjał - Fundusz Ubezpieczeń Kosztów Algorytmicznych

Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik

Algorytmy i Struktury Danych, 9. ćwiczenia

PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew

Matematyka dyskretna - 7.Drzewa

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

Digraf. 13 maja 2017

Drzewa poszukiwań binarnych

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych

Akademickie Mistrzostwa Polski w Programowaniu Zespołowym

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST)

Sortowanie bąbelkowe

Listy, kolejki, stosy

Algorytmy i Struktury Danych

Wykład 8. Drzewa AVL i 2-3-4

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Matematyczne Podstawy Informatyki

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

7. Teoria drzew - spinanie i przeszukiwanie

Programowanie obiektowe

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

Tadeusz Pankowski

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA

Programowanie obiektowe

Definicja pliku kratowego

Algorytmy i struktury danych. wykład 5

Wstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

5c. Sieci i przepływy

Drzewa czerwono-czarne.

SPÓJNOŚĆ. ,...v k. }, E={v 1. v k. i v k. ,...,v k-1. }. Wierzchołki v 1. v 2. to końce ścieżki.

Plan wykładu. Klucz wyszukiwania. Pojęcie indeksu BAZY DANYCH. Pojęcie indeksu - rodzaje indeksów Metody implementacji indeksów.

Minimalne drzewa rozpinające

(4) x (y z) = (x y) (x z), x (y z) = (x y) (x z), (3) x (x y) = x, x (x y) = x, (2) x 0 = x, x 1 = x

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

a) 7 b) 19 c) 21 d) 34

Graf. Definicja marca / 1

Łyżwy - omówienie zadania

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

Podstawowe pojęcia dotyczące drzew Podstawowe pojęcia dotyczące grafów Przykłady drzew i grafów

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz

Bazy danych. Andrzej Łachwa, UJ, /15

Nierówność Krafta-McMillana, Kodowanie Huffmana

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

BAZY DANYCH. Microsoft Access. Adrian Horzyk OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW. Akademia Górniczo-Hutnicza

TEORETYCZNE PODSTAWY INFORMATYKI

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

Teoria Informacji i Metody Kompresji Danych

Drzewo binarne BST. LABORKA Piotr Ciskowski

Wykład 6. Drzewa poszukiwań binarnych (BST)

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

Matematyka dyskretna

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

Wykład 2. Drzewa poszukiwań binarnych (BST)

Algorytmika Problemów Trudnych

KODY SYMBOLI. Kod Shannona-Fano. Algorytm S-F. Przykład S-F

Matematyczne Podstawy Informatyki

Podstawy Informatyki. Sprawność algorytmów

Drzewa podstawowe poj

Teoria grafów podstawy. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Algorytmy i Struktury Danych.

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

Algebrą nazywamy strukturę A = (A, {F i : i I }), gdzie A jest zbiorem zwanym uniwersum algebry, zaś F i : A F i

Lista liniowa dwukierunkowa

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Transkrypt:

Dynamiczne drzewa Marian M. Kędzierski 26 listopada 2009

Plan prezentacji Wstęp 1 Wstęp Zagadnienie dynamicznych drzew SPLITiJOINnadrzewachBST 2 Euler-TourTrees Operacje na ET-drzewach Rozszerzenia 3 Dynamicznaspójność Zagadnienie Algorytm HLT 4 AlgorytmDinica Przypomnienie idei przepływów blokujących Znajdowanie przepływu blokującego w czasie O(m log n). 5 Link-CutTrees

Problem dynamicznych drzew Zagadnienie dynamicznych drzew SPLITiJOINnadrzewachBST Idea Chcemy reprezentować las ukorzenionych, rozłącznych drzew dowolnego stopnia. Jakich operacji oczekujemy? LINK(u,v) podepnijdrzewookorzeniuwvdowierzchołka u innego drzewa CUT(v) odetnijwierzchołekvwrazzjegopoddrzewemod jego ojca FINDROOT(v) podaj korzeń drzewa zawierającego v Jakiej złożoności oczekujemy? Czas: O(log n) na operację(być może zamortyzowany).

Zagadnienie dynamicznych drzew SPLITiJOINnadrzewachBST Pierwsze podejście SPLIT i JOIN na drzewach BST Gdyby: Wystarczałyby nam drzewa binarne

Zagadnienie dynamicznych drzew SPLITiJOINnadrzewachBST Pierwsze podejście SPLIT i JOIN na drzewach BST Gdyby: Wystarczałyby nam drzewa binarne Nie interesowała nas struktura drzewa, tylko zbiór jego wierzchołków

Zagadnienie dynamicznych drzew SPLITiJOINnadrzewachBST Pierwsze podejście SPLIT i JOIN na drzewach BST Gdyby: Wystarczałyby nam drzewa binarne Nie interesowała nas struktura drzewa, tylko zbiór jego wierzchołków to moglibyśmy rozwiązać problem za pomocą lasu zrównoważonych drzew BST.

Zagadnienie dynamicznych drzew SPLITiJOINnadrzewachBST Pierwsze podejście SPLIT i JOIN na drzewach BST Gdyby: Wystarczałyby nam drzewa binarne Nie interesowała nas struktura drzewa, tylko zbiór jego wierzchołków to moglibyśmy rozwiązać problem za pomocą lasu zrównoważonych drzew BST. Pewne drzewa zrównoważone(najłatwiej splay, ale da się także 2-3 drzewa) można wzbogacić o operacje: SPLIT wytnij z drzewa spójny fragment kluczy i podziel drzewo na dwa JOIN połącz dwa drzewa o kluczach z rozłącznych przedziałów

Drzewa ET Wstęp Operacje na ET-drzewach Rozszerzenia Pomysł Reprezentujmy dowolne drzewo przez cykl Eulera na nim.

Drzewa ET Wstęp Operacje na ET-drzewach Rozszerzenia Pomysł Reprezentujmy dowolne drzewo przez cykl Eulera na nim. Dokładniej: niech reprezentacją drzewa będzie zrównoważone drzewo BST zawierające wszystkie węzły tego cyklu Eulera.

Drzewa ET Wstęp Operacje na ET-drzewach Rozszerzenia Pomysł Reprezentujmy dowolne drzewo przez cykl Eulera na nim. Dokładniej: niech reprezentacją drzewa będzie zrównoważone drzewo BST zawierające wszystkie węzły tego cyklu Eulera. Uwagi:

Drzewa ET Wstęp Operacje na ET-drzewach Rozszerzenia Pomysł Reprezentujmy dowolne drzewo przez cykl Eulera na nim. Dokładniej: niech reprezentacją drzewa będzie zrównoważone drzewo BST zawierające wszystkie węzły tego cyklu Eulera. Uwagi: Trzeba rozgraniczyć pojęcie drzewa reprezentowanego od ET-drzewa

Drzewa ET Wstęp Operacje na ET-drzewach Rozszerzenia Pomysł Reprezentujmy dowolne drzewo przez cykl Eulera na nim. Dokładniej: niech reprezentacją drzewa będzie zrównoważone drzewo BST zawierające wszystkie węzły tego cyklu Eulera. Uwagi: Trzeba rozgraniczyć pojęcie drzewa reprezentowanego od ET-drzewa Nie przechowujemy w ogóle jawnie drzewa reprezentowanego

Drzewa ET Wstęp Operacje na ET-drzewach Rozszerzenia Pomysł Reprezentujmy dowolne drzewo przez cykl Eulera na nim. Dokładniej: niech reprezentacją drzewa będzie zrównoważone drzewo BST zawierające wszystkie węzły tego cyklu Eulera. Uwagi: Trzeba rozgraniczyć pojęcie drzewa reprezentowanego od ET-drzewa Nie przechowujemy w ogóle jawnie drzewa reprezentowanego WęzłydrzewaBSTniemająkluczy(!) nie wykonujemy wyszukiwań ale w zastosowaniach potrzebujemy statycznego indeksu {numer wierzchołka węzeł}

Drzewa ET Wstęp Operacje na ET-drzewach Rozszerzenia Pomysł Reprezentujmy dowolne drzewo przez cykl Eulera na nim. Dokładniej: niech reprezentacją drzewa będzie zrównoważone drzewo BST zawierające wszystkie węzły tego cyklu Eulera. Uwagi: Trzeba rozgraniczyć pojęcie drzewa reprezentowanego od ET-drzewa Nie przechowujemy w ogóle jawnie drzewa reprezentowanego WęzłydrzewaBSTniemająkluczy(!) nie wykonujemy wyszukiwań ale w zastosowaniach potrzebujemy statycznego indeksu {numer wierzchołka węzeł} Są dwie wersje ET-drzewa Pełny cykl Eulera Słowo nawiasowe

Drzewa ET operacje Operacje na ET-drzewach Rozszerzenia LINK(u,v) operacjesplitijoinnaet-drzewie CUT(v) podobnie REROOT(v) teżsameoperacjesplitijoin,alesprytniej ROOT(v) zejście lewą/prawą ścieżką w ET-drzewie (pierwszy lub ostatni wierzchołek cyklu)

Drzewa ET statystyki pozycyjne Operacje na ET-drzewach Rozszerzenia Jak rozszerzyć ET-drzewo o statystyki pozycyjne?

Drzewa ET statystyki pozycyjne Operacje na ET-drzewach Rozszerzenia Jak rozszerzyć ET-drzewo o statystyki pozycyjne? Liczba wierzchołków w poddrzewie drzewa reprezentowanego

Drzewa ET statystyki pozycyjne Operacje na ET-drzewach Rozszerzenia Jak rozszerzyć ET-drzewo o statystyki pozycyjne? Liczba wierzchołków w poddrzewie drzewa reprezentowanego Uogólnienie: Suma wag wierzchołków w poddrzewie

Drzewa ET statystyki pozycyjne Operacje na ET-drzewach Rozszerzenia Jak rozszerzyć ET-drzewo o statystyki pozycyjne? Liczba wierzchołków w poddrzewie drzewa reprezentowanego Uogólnienie: Suma wag wierzchołków w poddrzewie Wysokość poddrzewa

Drzewa ET statystyki pozycyjne Operacje na ET-drzewach Rozszerzenia Jak rozszerzyć ET-drzewo o statystyki pozycyjne? Liczba wierzchołków w poddrzewie drzewa reprezentowanego Uogólnienie: Suma wag wierzchołków w poddrzewie Wysokość poddrzewa Minima/Maksima na ścieżkach

Drzewa ET statystyki pozycyjne Operacje na ET-drzewach Rozszerzenia Jak rozszerzyć ET-drzewo o statystyki pozycyjne? Liczba wierzchołków w poddrzewie drzewa reprezentowanego Uogólnienie: Suma wag wierzchołków w poddrzewie Wysokość poddrzewa Minima/Maksima na ścieżkach Niestety,niebardzosiędaje...

Problem dynamicznej spójności Zagadnienie Algorytm HLT Chcemy utrzymywać strukturę grafu nieskierowanego pozwalającą wykonywać zapytania: ADD(u,v) dodajkrawędźu v DELETE(u,v) usuńkrawędźu v CONNECTED(u,v) sprawdź,czywierzchołkiuivsąw tej samej spójnej składowej CONNECTED() sprawdź, czy graf jest spójny

Problem dynamicznej spójności Zagadnienie Algorytm HLT Chcemy utrzymywać strukturę grafu nieskierowanego pozwalającą wykonywać zapytania: ADD(u,v) dodajkrawędźu v DELETE(u,v) usuńkrawędźu v CONNECTED(u,v) sprawdź,czywierzchołkiuivsąw tej samej spójnej składowej CONNECTED() sprawdź, czy graf jest spójny Chcielibyśmy, żeby koszty powyższych operacji wynosiły O(log n)

Pierwsze podejście Wstęp Zagadnienie Algorytm HLT Jeżeli nie wykonujemy operacji DELETE, to możemy użyć drzew Find-Union.

Pierwsze podejście Wstęp Zagadnienie Algorytm HLT Jeżeli nie wykonujemy operacji DELETE, to możemy użyć drzew Find-Union. Niestety operacja DELETE nie daje się sensownie przeprowadzić na tych drzewach wymagałaby właściwie przebudowania struktury od nowa.

Drugie podejście Wstęp Zagadnienie Algorytm HLT Możemy zamiast całych spójnych składowych przechowywać ich pewne drzewa rozpinające.

Drugie podejście Wstęp Zagadnienie Algorytm HLT Możemy zamiast całych spójnych składowych przechowywać ich pewne drzewa rozpinające. Jeżeli te drzewa są reprezentowane jako ET-drzewa, to:

Drugie podejście Wstęp Zagadnienie Algorytm HLT Możemy zamiast całych spójnych składowych przechowywać ich pewne drzewa rozpinające. Jeżeli te drzewa są reprezentowane jako ET-drzewa, to: OperacjęADDłatwowykonaćzapomocąLINK:czas O(log n)

Drugie podejście Wstęp Zagadnienie Algorytm HLT Możemy zamiast całych spójnych składowych przechowywać ich pewne drzewa rozpinające. Jeżeli te drzewa są reprezentowane jako ET-drzewa, to: OperacjęADDłatwowykonaćzapomocąLINK:czas O(log n) Niestety do operacji DELETE nie wystarczy CUT

Drugie podejście Wstęp Zagadnienie Algorytm HLT Możemy zamiast całych spójnych składowych przechowywać ich pewne drzewa rozpinające. Jeżeli te drzewa są reprezentowane jako ET-drzewa, to: OperacjęADDłatwowykonaćzapomocąLINK:czas O(log n) Niestety do operacji DELETE nie wystarczy CUT Ponieważ potrzebujemy sprawdzić, czy nie istnieje tzw. krawędź zastępcza Znalezienie krawędzi zastępczej to czas rzędu O(m)

Zagadnienie Algorytm HLT Właściwe rozwiązanie algorytm HLT Algorytm Holma, de Lichtenberga i Thorupa. Podzielmy krawędzie na poziomy.

Zagadnienie Algorytm HLT Właściwe rozwiązanie algorytm HLT Algorytm Holma, de Lichtenberga i Thorupa. Podzielmy krawędzie na poziomy. Każde bezowocne dotknięcie krawędzi zwiększy jej poziom. Poziomów będzie O(log n).

Zagadnienie Algorytm HLT Właściwe rozwiązanie algorytm HLT Algorytm Holma, de Lichtenberga i Thorupa. Podzielmy krawędzie na poziomy. Każde bezowocne dotknięcie krawędzi zwiększy jej poziom. Poziomów będzie O(log n). NiechG i grafzbudowanyzkrawędziopoziomach i.wtedy G =G 0 G 1 G 2...

Zagadnienie Algorytm HLT Właściwe rozwiązanie algorytm HLT Algorytm Holma, de Lichtenberga i Thorupa. Podzielmy krawędzie na poziomy. Każde bezowocne dotknięcie krawędzi zwiększy jej poziom. Poziomów będzie O(log n). NiechG i grafzbudowanyzkrawędziopoziomach i.wtedy G =G 0 G 1 G 2... NiechF lasrozpinającyg,zaśf i podgraffskładającysię zkrawędziopoziomach i.wtedy: F 0 F 1 F 2...

Zagadnienie Algorytm HLT Właściwe rozwiązanie algorytm HLT Algorytm Holma, de Lichtenberga i Thorupa. Podzielmy krawędzie na poziomy. Każde bezowocne dotknięcie krawędzi zwiększy jej poziom. Poziomów będzie O(log n). NiechG i grafzbudowanyzkrawędziopoziomach i.wtedy G =G 0 G 1 G 2... NiechF lasrozpinającyg,zaśf i podgraffskładającysię zkrawędziopoziomach i.wtedy: F 0 F 1 F 2... Ponadtożądamy,by: T n 2 i dladowolnegodrzewatnależącego dodowolnegolasuf i. Terminologia: Krawędzie z F nazywamy drzewowymi, pozostałe niedrzewowymi.

Zagadnienie Algorytm HLT Poszczególne operacje na strukturze HLT ADD(u,v) koszto(logn)

Zagadnienie Algorytm HLT Poszczególne operacje na strukturze HLT ADD(u,v) koszto(logn) AleobarczamyjądodatkowymkosztemO(log 2 n)

Zagadnienie Algorytm HLT Poszczególne operacje na strukturze HLT ADD(u,v) koszto(logn) AleobarczamyjądodatkowymkosztemO(log 2 n) To na poczet przyszłych O(log n) podniesień poziomu

Zagadnienie Algorytm HLT Poszczególne operacje na strukturze HLT ADD(u,v) koszto(logn) AleobarczamyjądodatkowymkosztemO(log 2 n) To na poczet przyszłych O(log n) podniesień poziomu CONNECTED(u,v) koszto(logn)

Zagadnienie Algorytm HLT Poszczególne operacje na strukturze HLT ADD(u,v) koszto(logn) AleobarczamyjądodatkowymkosztemO(log 2 n) To na poczet przyszłych O(log n) podniesień poziomu CONNECTED(u,v) koszto(logn) CONNECTED() koszt O(1) pamiętamy liczbę spójnych składowych

Zagadnienie Algorytm HLT Poszczególne operacje na strukturze HLT ADD(u,v) koszto(logn) AleobarczamyjądodatkowymkosztemO(log 2 n) To na poczet przyszłych O(log n) podniesień poziomu CONNECTED(u,v) koszto(logn) CONNECTED() koszt O(1) pamiętamy liczbę spójnych składowych DELETE(u, v)

Zagadnienie Algorytm HLT Poszczególne operacje na strukturze HLT ADD(u,v) koszto(logn) AleobarczamyjądodatkowymkosztemO(log 2 n) To na poczet przyszłych O(log n) podniesień poziomu CONNECTED(u,v) koszto(logn) CONNECTED() koszt O(1) pamiętamy liczbę spójnych składowych DELETE(u,v) najbardziejproblematyczna...

Zagadnienie Algorytm HLT Usunięcie krawędzi ze struktury HLT Najpierw sprawdzamy poziom krawędzi(przyda nam się tu dodatkowa kopia całego grafu, gdzie krawędzie będą etykietowane poziomami). Oznaczmy ten poziom jako l.

Zagadnienie Algorytm HLT Usunięcie krawędzi ze struktury HLT Najpierw sprawdzamy poziom krawędzi(przyda nam się tu dodatkowa kopia całego grafu, gdzie krawędzie będą etykietowane poziomami). Oznaczmy ten poziom jako l. Jeżeli krawędź była niedrzewowa, to wystarczy usunąć koszt wszystkiego O(log n)

Zagadnienie Algorytm HLT Usunięcie krawędzi ze struktury HLT Najpierw sprawdzamy poziom krawędzi(przyda nam się tu dodatkowa kopia całego grafu, gdzie krawędzie będą etykietowane poziomami). Oznaczmy ten poziom jako l. Jeżeli krawędź była niedrzewowa, to wystarczy usunąć koszt wszystkiego O(log n) Wpp. musimy:

Zagadnienie Algorytm HLT Usunięcie krawędzi ze struktury HLT Najpierw sprawdzamy poziom krawędzi(przyda nam się tu dodatkowa kopia całego grafu, gdzie krawędzie będą etykietowane poziomami). Oznaczmy ten poziom jako l. Jeżeli krawędź była niedrzewowa, to wystarczy usunąć koszt wszystkiego O(log n) Wpp. musimy: WykonaćCUTnawszystkichlasachF 0,F 1,...,F l czaso(log 2 n)

Zagadnienie Algorytm HLT Usunięcie krawędzi ze struktury HLT Najpierw sprawdzamy poziom krawędzi(przyda nam się tu dodatkowa kopia całego grafu, gdzie krawędzie będą etykietowane poziomami). Oznaczmy ten poziom jako l. Jeżeli krawędź była niedrzewowa, to wystarczy usunąć koszt wszystkiego O(log n) Wpp. musimy: WykonaćCUTnawszystkichlasachF 0,F 1,...,F l czaso(log 2 n) Znaleźć krawędź zastępczą

Zagadnienie Algorytm HLT Usunięcie krawędzi ze struktury HLT Najpierw sprawdzamy poziom krawędzi(przyda nam się tu dodatkowa kopia całego grafu, gdzie krawędzie będą etykietowane poziomami). Oznaczmy ten poziom jako l. Jeżeli krawędź była niedrzewowa, to wystarczy usunąć koszt wszystkiego O(log n) Wpp. musimy: WykonaćCUTnawszystkichlasachF 0,F 1,...,F l czaso(log 2 n) Znaleźć krawędź zastępczą KoszttejoperacjitoO(log 2 n).

Zagadnienie Algorytm HLT HLT szukanie krawędzi zastępczej w operacji DELETE Nie może istnieć krawędź zastępcza o wyższym poziomie niż l

Zagadnienie Algorytm HLT HLT szukanie krawędzi zastępczej w operacji DELETE Nie może istnieć krawędź zastępcza o wyższym poziomie niż l Musimy wybrać krawędź zastępczą o najwyższym poziomie

Zagadnienie Algorytm HLT HLT szukanie krawędzi zastępczej w operacji DELETE Nie może istnieć krawędź zastępcza o wyższym poziomie niż l Musimy wybrać krawędź zastępczą o najwyższym poziomie Szukamywięcjejkolejnonapoziomachl,l 1,l 2,...

Zagadnienie Algorytm HLT HLT szukanie krawędzi zastępczej w operacji DELETE Nie może istnieć krawędź zastępcza o wyższym poziomie niż l Musimy wybrać krawędź zastępczą o najwyższym poziomie Szukamywięcjejkolejnonapoziomachl,l 1,l 2,... Krawędź zastępczą szukamy przeglądając wszystkie krawędzie wpodgrafierozpinanymprzezmniejszedrzewot 1 zdwóchdrzew T 1,T 2 powstałychzrozpaduoryginalnegodrzewat.

Zagadnienie Algorytm HLT HLT szukanie krawędzi zastępczej w operacji DELETE Nie może istnieć krawędź zastępcza o wyższym poziomie niż l Musimy wybrać krawędź zastępczą o najwyższym poziomie Szukamywięcjejkolejnonapoziomachl,l 1,l 2,... Krawędź zastępczą szukamy przeglądając wszystkie krawędzie wpodgrafierozpinanymprzezmniejszedrzewot 1 zdwóchdrzew T 1,T 2 powstałychzrozpaduoryginalnegodrzewat. Jeżeli dana krawędź nie jest zastępcza to podnosimy jej poziom

Zagadnienie Algorytm HLT HLT szukanie krawędzi zastępczej w operacji DELETE Nie może istnieć krawędź zastępcza o wyższym poziomie niż l Musimy wybrać krawędź zastępczą o najwyższym poziomie Szukamywięcjejkolejnonapoziomachl,l 1,l 2,... Krawędź zastępczą szukamy przeglądając wszystkie krawędzie wpodgrafierozpinanymprzezmniejszedrzewot 1 zdwóchdrzew T 1,T 2 powstałychzrozpaduoryginalnegodrzewat. Jeżeli dana krawędź nie jest zastępcza to podnosimy jej poziom(możemy to zrobić teoretycznie dla wszystkich krawędzi w badanym podgrafie, bo jego rozmiar nie przekracza n 2 i+1 )

Zagadnienie Algorytm HLT HLT szukanie krawędzi zastępczej w operacji DELETE Nie może istnieć krawędź zastępcza o wyższym poziomie niż l Musimy wybrać krawędź zastępczą o najwyższym poziomie Szukamywięcjejkolejnonapoziomachl,l 1,l 2,... Krawędź zastępczą szukamy przeglądając wszystkie krawędzie wpodgrafierozpinanymprzezmniejszedrzewot 1 zdwóchdrzew T 1,T 2 powstałychzrozpaduoryginalnegodrzewat. Jeżeli dana krawędź nie jest zastępcza to podnosimy jej poziom(możemy to zrobić teoretycznie dla wszystkich krawędzi w badanym podgrafie, bo jego rozmiar nie przekracza n ) 2 i+1 Jeżeli dana krawędź jest zastępcza, to kończymy wyszukiwanie

Zagadnienie Algorytm HLT HLT szukanie krawędzi zastępczej w operacji DELETE Nie może istnieć krawędź zastępcza o wyższym poziomie niż l Musimy wybrać krawędź zastępczą o najwyższym poziomie Szukamywięcjejkolejnonapoziomachl,l 1,l 2,... Krawędź zastępczą szukamy przeglądając wszystkie krawędzie wpodgrafierozpinanymprzezmniejszedrzewot 1 zdwóchdrzew T 1,T 2 powstałychzrozpaduoryginalnegodrzewat. Jeżeli dana krawędź nie jest zastępcza to podnosimy jej poziom(możemy to zrobić teoretycznie dla wszystkich krawędzi w badanym podgrafie, bo jego rozmiar nie przekracza n ) 2 i+1 Jeżeli dana krawędź jest zastępcza, to kończymy wyszukiwanie Kiedy znajdziemy krawędź zastępczą, to:

Zagadnienie Algorytm HLT HLT szukanie krawędzi zastępczej w operacji DELETE Nie może istnieć krawędź zastępcza o wyższym poziomie niż l Musimy wybrać krawędź zastępczą o najwyższym poziomie Szukamywięcjejkolejnonapoziomachl,l 1,l 2,... Krawędź zastępczą szukamy przeglądając wszystkie krawędzie wpodgrafierozpinanymprzezmniejszedrzewot 1 zdwóchdrzew T 1,T 2 powstałychzrozpaduoryginalnegodrzewat. Jeżeli dana krawędź nie jest zastępcza to podnosimy jej poziom(możemy to zrobić teoretycznie dla wszystkich krawędzi w badanym podgrafie, bo jego rozmiar nie przekracza n ) 2 i+1 Jeżeli dana krawędź jest zastępcza, to kończymy wyszukiwanie Kiedy znajdziemy krawędź zastępczą, to: musimy ją dodać na jej poziomie i wszystkich niższych

Zagadnienie Algorytm HLT HLT szukanie krawędzi zastępczej w operacji DELETE Nie może istnieć krawędź zastępcza o wyższym poziomie niż l Musimy wybrać krawędź zastępczą o najwyższym poziomie Szukamywięcjejkolejnonapoziomachl,l 1,l 2,... Krawędź zastępczą szukamy przeglądając wszystkie krawędzie wpodgrafierozpinanymprzezmniejszedrzewot 1 zdwóchdrzew T 1,T 2 powstałychzrozpaduoryginalnegodrzewat. Jeżeli dana krawędź nie jest zastępcza to podnosimy jej poziom(możemy to zrobić teoretycznie dla wszystkich krawędzi w badanym podgrafie, bo jego rozmiar nie przekracza n ) 2 i+1 Jeżeli dana krawędź jest zastępcza, to kończymy wyszukiwanie Kiedy znajdziemy krawędź zastępczą, to: musimy ją dodać na jej poziomie i wszystkich niższych Stąd mamy O(log n) operacji LINK.

HLT podsumowanie Zagadnienie Algorytm HLT Koszt(zamortyzowany) poszczególnych operacji: ADD(u,v),DELETE(u,v):O(log 2 n) CONNECTED(u, v): O(log n) CONNECTED: O(1)

Przypomnienie Wstęp Przypomnienie idei przepływów blokujących Znajdowanie przepływu blokującego w czasie O(m log n). W algorytmie Dinica szukamy ścieżki powiększające paczkami, składającymi się z maksymalnego zbioru najkrótszych ścieżek powiększających

Przypomnienie Wstęp Przypomnienie idei przepływów blokujących Znajdowanie przepływu blokującego w czasie O(m log n). W algorytmie Dinica szukamy ścieżki powiększające paczkami, składającymi się z maksymalnego zbioru najkrótszych ścieżek powiększających każda paczka to jeden przepływ blokujący.

Przypomnienie Wstęp Przypomnienie idei przepływów blokujących Znajdowanie przepływu blokującego w czasie O(m log n). W algorytmie Dinica szukamy ścieżki powiększające paczkami, składającymi się z maksymalnego zbioru najkrótszych ścieżek powiększających każda paczka to jeden przepływ blokujący. Odległość ujścia od źródła rośnie po każdym przepływie blokującym, więc musimy go szukać O(n) razy.

Przypomnienie Wstęp Przypomnienie idei przepływów blokujących Znajdowanie przepływu blokującego w czasie O(m log n). W algorytmie Dinica szukamy ścieżki powiększające paczkami, składającymi się z maksymalnego zbioru najkrótszych ścieżek powiększających każda paczka to jeden przepływ blokujący. Odległość ujścia od źródła rośnie po każdym przepływie blokującym, więc musimy go szukać O(n) razy. Przepływu blokującego szukamy w tzw. sieci warstwowej przy użyciu pary operacji: ADVANCE RETREAT

Przypomnienie idei przepływów blokujących Znajdowanie przepływu blokującego w czasie O(m log n). Jak znajdować przepływ blokujący szybciej? Jak znajdować przepływ blokujący szybciej? Wykorzystajmy informacje, które w podstawowej wersji algorytmu Dinica gubimy

Przypomnienie idei przepływów blokujących Znajdowanie przepływu blokującego w czasie O(m log n). Jak znajdować przepływ blokujący szybciej? Jak znajdować przepływ blokujący szybciej? Wykorzystajmy informacje, które w podstawowej wersji algorytmu Dinica gubimy informacje o częściowych ścieżkach powiększających.

Przypomnienie idei przepływów blokujących Znajdowanie przepływu blokującego w czasie O(m log n). Jak znajdować przepływ blokujący szybciej? Jak znajdować przepływ blokujący szybciej? Wykorzystajmy informacje, które w podstawowej wersji algorytmu Dinica gubimy informacje o częściowych ścieżkach powiększających. Te ścieżki tworzą las!

Przypomnienie idei przepływów blokujących Znajdowanie przepływu blokującego w czasie O(m log n). Jak znajdować przepływ blokujący szybciej? Jak znajdować przepływ blokujący szybciej? Wykorzystajmy informacje, które w podstawowej wersji algorytmu Dinica gubimy informacje o częściowych ścieżkach powiększających. Te ścieżki tworzą las! Reprezentujmy więc ten las za pomocą ET-drzew.

Przypomnienie idei przepływów blokujących Znajdowanie przepływu blokującego w czasie O(m log n). Jak znajdować przepływ blokujący szybciej? Jak znajdować przepływ blokujący szybciej? Wykorzystajmy informacje, które w podstawowej wersji algorytmu Dinica gubimy informacje o częściowych ścieżkach powiększających. Te ścieżki tworzą las! Reprezentujmy więc ten las za pomocą ET-drzew. Operacje ADVANCE i RETREAT odpowiednio zmienią postać.

Przypomnienie idei przepływów blokujących Znajdowanie przepływu blokującego w czasie O(m log n). Jak znajdować przepływ blokujący szybciej? Jak znajdować przepływ blokujący szybciej? Wykorzystajmy informacje, które w podstawowej wersji algorytmu Dinica gubimy informacje o częściowych ścieżkach powiększających. Te ścieżki tworzą las! Reprezentujmy więc ten las za pomocą ET-drzew. Operacje ADVANCE i RETREAT odpowiednio zmienią postać. Ale żeby znaleźć przepływ blokujący w czasie O(m log n) musimy umieć wzbogacić drzewa o wagi na krawędziach/wierzchołkach i umieć wykonywać szybko(w czasie O(log n)) operacje: COST ADDCOST MIN

Przypomnienie idei przepływów blokujących Znajdowanie przepływu blokującego w czasie O(m log n). Jak znajdować przepływ blokujący szybciej? Jak znajdować przepływ blokujący szybciej? Wykorzystajmy informacje, które w podstawowej wersji algorytmu Dinica gubimy informacje o częściowych ścieżkach powiększających. Te ścieżki tworzą las! Reprezentujmy więc ten las za pomocą ET-drzew. Operacje ADVANCE i RETREAT odpowiednio zmienią postać. Ale żeby znaleźć przepływ blokujący w czasie O(m log n) musimy umieć wzbogacić drzewa o wagi na krawędziach/wierzchołkach i umieć wykonywać szybko(w czasie O(log n)) operacje: COST ADDCOST MIN niestety ET-drzewa na to nie pozwalają

Drzewa Link-Cut Alternatywna struktura dla drzew dynamicznych Jest trudniejsza,

Drzewa Link-Cut Alternatywna struktura dla drzew dynamicznych Jest trudniejsza, zamortyzowana,

Drzewa Link-Cut Alternatywna struktura dla drzew dynamicznych Jest trudniejsza, zamortyzowana, ale więcej da się nią zrobić!

Drzewa Link-Cut Alternatywna struktura dla drzew dynamicznych Jest trudniejsza, zamortyzowana, ale więcej da się nią zrobić! Idea Znów nie przechowujemy drzew jawnie w pamięci, tylko zamiast nich pamiętamy ich pewną dekompozycję na ścieżki. Tak jak w drzewach splay przy każdej operacji ściągamy do korzenia żądany wierzchołek, tak teraz będziemy zmieniać dekompozycję ścieżkową, aby żądany wierzchołek był na drugim końcu ścieżki zaczynającej się w korzeniu.

Drzewa Link-Cut Alternatywna struktura dla drzew dynamicznych Jest trudniejsza, zamortyzowana, ale więcej da się nią zrobić! Idea Znów nie przechowujemy drzew jawnie w pamięci, tylko zamiast nich pamiętamy ich pewną dekompozycję na ścieżki. Tak jak w drzewach splay przy każdej operacji ściągamy do korzenia żądany wierzchołek, tak teraz będziemy zmieniać dekompozycję ścieżkową, aby żądany wierzchołek był na drugim końcu ścieżki zaczynającej się w korzeniu. Czyni to operacja ACCESS Zmiana dekompozycji ścieżkowej ściślej oznacza zmianę tzw. preferowanych synów

Budowa drzewa Link-Cut Każdy wierzchołek reprezentowanego drzewa ma co najwyżej jednego preferowanego syna. Jest to ten syn, w którego poddrzewie znajduje się ostatnio dotknięty wierzchołek.

Budowa drzewa Link-Cut Każdy wierzchołek reprezentowanego drzewa ma co najwyżej jednego preferowanego syna. Jest to ten syn, w którego poddrzewie znajduje się ostatnio dotknięty wierzchołek. Preferowane krawędzie tworzą dekompozycję ścieżkową.

Budowa drzewa Link-Cut Każdy wierzchołek reprezentowanego drzewa ma co najwyżej jednego preferowanego syna. Jest to ten syn, w którego poddrzewie znajduje się ostatnio dotknięty wierzchołek. Preferowane krawędzie tworzą dekompozycję ścieżkową. Czym są ścieżki? Są to drzewa splay o kluczach będących głębokościami poszczególnych wierzchołków w reprezentowanym drzewie.

Budowa drzewa Link-Cut Każdy wierzchołek reprezentowanego drzewa ma co najwyżej jednego preferowanego syna. Jest to ten syn, w którego poddrzewie znajduje się ostatnio dotknięty wierzchołek. Preferowane krawędzie tworzą dekompozycję ścieżkową. Czym są ścieżki? Są to drzewa splay o kluczach będących głębokościami poszczególnych wierzchołków w reprezentowanym drzewie. Każdy korzeń drzewa splay ma wskaźnik do swojego ojca w reprezentowanym drzewie.

Budowa drzewa Link-Cut Każdy wierzchołek reprezentowanego drzewa ma co najwyżej jednego preferowanego syna. Jest to ten syn, w którego poddrzewie znajduje się ostatnio dotknięty wierzchołek. Preferowane krawędzie tworzą dekompozycję ścieżkową. Czym są ścieżki? Są to drzewa splay o kluczach będących głębokościami poszczególnych wierzchołków w reprezentowanym drzewie. Każdy korzeń drzewa splay ma wskaźnik do swojego ojca w reprezentowanym drzewie. Drzewo Link-Cut jest w pewnym sensie drzewem drzew typu splay.

Operacje na drzewach Link-Cut Działanie operacji ACCESS(v) Najpierw odcina wierzchołek od ścieżki poniżej niego

Operacje na drzewach Link-Cut Działanie operacji ACCESS(v) Najpierw odcina wierzchołek od ścieżki poniżej niego Potem przebiega po kolejnych ścieżkach od v do korzenia łączącjezesobą.

Operacje na drzewach Link-Cut Działanie operacji ACCESS(v) Najpierw odcina wierzchołek od ścieżki poniżej niego Potem przebiega po kolejnych ścieżkach od v do korzenia łączącjezesobą. Na końcu wykonuje splay(v).

Operacje na drzewach Link-Cut Działanie operacji ACCESS(v) Najpierw odcina wierzchołek od ścieżki poniżej niego Potem przebiega po kolejnych ścieżkach od v do korzenia łączącjezesobą. Na końcu wykonuje splay(v). Inne operacje ROOT(v) najpierw ACCESS(v), potem należy zejść lewą ścieżką głównego drzewa splay(tego w korzeniu)

Operacje na drzewach Link-Cut Działanie operacji ACCESS(v) Najpierw odcina wierzchołek od ścieżki poniżej niego Potem przebiega po kolejnych ścieżkach od v do korzenia łączącjezesobą. Na końcu wykonuje splay(v). Inne operacje ROOT(v) najpierw ACCESS(v), potem należy zejść lewą ścieżką głównego drzewa splay(tego w korzeniu) CUT(v) najpierwaccess(v),potemodcinamyvodjego lewego poddrzewa

Operacje na drzewach Link-Cut Działanie operacji ACCESS(v) Najpierw odcina wierzchołek od ścieżki poniżej niego Potem przebiega po kolejnych ścieżkach od v do korzenia łączącjezesobą. Na końcu wykonuje splay(v). Inne operacje ROOT(v) najpierw ACCESS(v), potem należy zejść lewą ścieżką głównego drzewa splay(tego w korzeniu) CUT(v) najpierwaccess(v),potemodcinamyvodjego lewego poddrzewa LINK(u,v) najpierwaccess(u)iaccess(v) i podpinamy jedno drzewo pod drugie

Wagi w wierzchołkach Żeby obsługiwać operacje COST, MIN oraz ADDCOST moglibyśmy przechowywać cost(v) oraz mincost(v)(minimalny COSTwpoddrzewiev)dlakażdegowierzchołkav.

Wagi w wierzchołkach Żeby obsługiwać operacje COST, MIN oraz ADDCOST moglibyśmy przechowywać cost(v) oraz mincost(v)(minimalny COSTwpoddrzewiev)dlakażdegowierzchołkav. AlewtedynieudanamsięzrobićADDCOSTszybko.

Wagi w wierzchołkach Żeby obsługiwać operacje COST, MIN oraz ADDCOST moglibyśmy przechowywać cost(v) oraz mincost(v)(minimalny COSTwpoddrzewiev)dlakażdegowierzchołkav. AlewtedynieudanamsięzrobićADDCOSTszybko. Zamiast tego przechowujmy dla każdego wierzchołka: cost =cost(v) cost(p(v)) min =cost(v) mincost(v) Dzięki temu po operacji ACCESS(v) mamy prawie gotowy wynik powyższych zapytań, a operacja ADDCOST wymaga tylko zmiany wartości w korzeniu.

Analiza złożoności drzew Link-Cut Analiza drzew Link-Cut jest podobna do analizy drzew splay i dosyć techniczna. Każda z operacji wykonuje się w zamortyzowanym czasie O(log n).

Bibliografia Wstęp Daniel D. Sleator, Robert Endre Tarjan, A Data Structure for Dynamic Trees, Bell Laboratories, Murray Hill, New Jersey 07974, 8.05.1982 theory.csail.mit.edu/classes/6.897/spring05/lec/lec05.pdf www.mimuw.edu.pl/ kowalik/teach/zsd/link-cut.pdf www.mimuw.edu.pl/ mucha/teaching/zsd2006/zsd12.pdf