Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Drzewa rozpinaj ˛
ace, zbiory rozł ˛
aczne, czas
zamortyzowany
zaj ˛ecia 3.
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Drzewa rozpinaj ˛
ace
Drzewa rozpinaj ˛ace
Mamy graf nieskierowany, wa˙zony, wagi wi ˛eksze od 0. Chcemy wybra´c taki podzbiór kraw ˛edzi, ˙zeby :
była droga pomi ˛edzy ka˙zd ˛a par ˛a wierzchołków
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Drzewa rozpinaj ˛ace
Mamy graf nieskierowany, wa˙zony, wagi wi ˛eksze od 0. Chcemy wybra´c taki podzbiór kraw ˛edzi, ˙zeby :
była droga pomi ˛edzy ka˙zd ˛a par ˛a wierzchołków
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Drzewa rozpinaj ˛
ace
Drzewa rozpinaj ˛ace
Mamy graf nieskierowany, wa˙zony, wagi wi ˛eksze od 0. Chcemy wybra´c taki podzbiór kraw ˛edzi, ˙zeby :
była droga pomi ˛edzy ka˙zd ˛a par ˛a wierzchołków
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Popatrzmy na poni˙zsz ˛a sie´c poł ˛acze ´n i spróbujmy znale´z´c drzewo rozpinaj ˛ace tej sieci.
3 5 7 2 4 1 6 5 6 1 7 1 2 3 2 1 1 4
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Rozwi ˛
azanie
W tym celu wypiszmy sobie wszystkie kraw ˛edzie posortowane po rosn ˛acej wadze:
koniec 1 koniec 2 waga
6 7 1 3 5 1 6 4 1 4 7 1 1 2 2 2 4 2 2 3 3 4 5 4 1 3 5 1 6 6 5 7 7
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Patrzymy na kolejne kraw ˛edzie z tej listy
próbujemy dodawa´c je do budowanego drzewa
rozpinaj ˛acego
je´sli dana kraw ˛ed´z ł ˛aczy dwa wierzchołki, mi ˛edzy
którymi nie było drogi, to dodajemy j ˛a do drzewa
je´sli nie, to odrzucamy
kontynuujemy, a˙z wszystkie wierzchołki b ˛ed ˛a
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
I co dalej?
Patrzymy na kolejne kraw ˛edzie z tej listy
próbujemy dodawa´c je do budowanego drzewa
rozpinaj ˛acego
je´sli dana kraw ˛ed´z ł ˛aczy dwa wierzchołki, mi ˛edzy
którymi nie było drogi, to dodajemy j ˛a do drzewa
je´sli nie, to odrzucamy
kontynuujemy, a˙z wszystkie wierzchołki b ˛ed ˛a
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Patrzymy na kolejne kraw ˛edzie z tej listy
próbujemy dodawa´c je do budowanego drzewa
rozpinaj ˛acego
je´sli dana kraw ˛ed´z ł ˛aczy dwa wierzchołki, mi ˛edzy
którymi nie było drogi, to dodajemy j ˛a do drzewa
je´sli nie, to odrzucamy
kontynuujemy, a˙z wszystkie wierzchołki b ˛ed ˛a
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
I co dalej?
Patrzymy na kolejne kraw ˛edzie z tej listy
próbujemy dodawa´c je do budowanego drzewa
rozpinaj ˛acego
je´sli dana kraw ˛ed´z ł ˛aczy dwa wierzchołki, mi ˛edzy
którymi nie było drogi, to dodajemy j ˛a do drzewa
je´sli nie, to odrzucamy
kontynuujemy, a˙z wszystkie wierzchołki b ˛ed ˛a
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Patrzymy na kolejne kraw ˛edzie z tej listy
próbujemy dodawa´c je do budowanego drzewa
rozpinaj ˛acego
je´sli dana kraw ˛ed´z ł ˛aczy dwa wierzchołki, mi ˛edzy
którymi nie było drogi, to dodajemy j ˛a do drzewa
je´sli nie, to odrzucamy
kontynuujemy, a˙z wszystkie wierzchołki b ˛ed ˛a
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Przykład
Sie´c: 3 5 7 2 4 1 6 5 6 1 7 1 2 3 2 1 1 4aktualna kraw ˛ed´z: 6 7 1
przychodzi kraw ˛ed´z 6 7 1, nie da si ˛e jeszcze przejecha´c mi ˛edzy 6 a 7, dodajemy t ˛e kraw ˛ed´z
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3 3 5 7 2 4 1 6 5 6 1 7 1 2 3 2 1 1 4
aktualna kraw ˛ed´z: 3 5 1
przychodzi kraw ˛ed´z 3 5 1, j ˛a te˙z dodajemy do budowanego
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Przykład
Sie´c: 3 5 7 2 4 1 6 5 6 1 7 1 2 3 2 1 1 4aktualna kraw ˛ed´z: 6 4 1
przychodzi kraw ˛ed´z 6 4 1, j ˛a te˙z dodajemy do budowanego
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3 3 5 7 2 4 1 6 5 6 1 7 1 2 3 2 1 1 4
aktualna kraw ˛ed´z: 7 4 1
przychodzi kraw ˛ed´z 7 4 1, ale nie jest potrzebna, jest ju˙z droga mi ˛edzy 7 i 4
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Przykład
Sie´c: 3 5 7 2 4 1 6 5 6 1 7 1 2 3 2 1 1 4aktualna kraw ˛ed´z: 1 2 2
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3 Sie´c: 3 5 7 2 4 1 6 5 6 1 7 1 2 3 2 1 1 4
aktualna kraw ˛ed´z: 2 4 2
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Przykład
Sie´c: 3 5 7 2 4 1 6 5 6 1 7 1 2 3 2 1 1 4aktualna kraw ˛ed´z: 2 3 3
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3 Sie´c: 3 5 7 2 4 1 6 5 6 1 7 1 2 3 2 1 1 4
Hurra! Cały graf jest ju˙z poł ˛aczony drzewem rozpinaj ˛acym!
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
A sk ˛
ad wiadomo, ˙ze..?
A sk ˛ad wiadomo, ˙ze wierzchołki s ˛a w jednej spójnej składowej?
do tej pory pomijali´smy to milczeniem wystarczyło spojrze´c na rysunek
niestety ci ˛e˙zko wytłumaczy´c komputerowi, ˙zeby spojrzał na rysunek
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
A sk ˛ad wiadomo, ˙ze wierzchołki s ˛a w jednej spójnej składowej?
do tej pory pomijali´smy to milczeniem
wystarczyło spojrze´c na rysunek
niestety ci ˛e˙zko wytłumaczy´c komputerowi, ˙zeby spojrzał na rysunek
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
A sk ˛
ad wiadomo, ˙ze..?
A sk ˛ad wiadomo, ˙ze wierzchołki s ˛a w jednej spójnej składowej?
do tej pory pomijali´smy to milczeniem wystarczyło spojrze´c na rysunek
niestety ci ˛e˙zko wytłumaczy´c komputerowi, ˙zeby spojrzał na rysunek
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
A sk ˛ad wiadomo, ˙ze wierzchołki s ˛a w jednej spójnej składowej?
do tej pory pomijali´smy to milczeniem wystarczyło spojrze´c na rysunek
niestety ci ˛e˙zko wytłumaczy´c komputerowi, ˙zeby spojrzał na rysunek
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania
Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Co potrzeba?
Co potrzeba?Potrzebna jest struktura danych, która pozwala szybko
sprawdzi´c, czy dane dwa wierzchołki le˙z ˛a w jednej
składowej oraz potrafi ˛aca szybko ł ˛aczy´c dwa wierzchołki.
Innymi słowy potrzebujemy reprezentantentowa´c rodzin ˛e
rozł ˛acznych zbiorów wierzchołków. Czasem b ˛edziemy
ł ˛aczy´c dwa takie zbiory w jeden (dodanie kraw ˛edzi).
Czasem za´s b ˛edziemy zadawa´c pytanie, czy dane dwa
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania
Idea rozwi ˛azania
Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3 Specyfikacja
Mamy pocz ˛atkowo n zbiorów (np. po jednym zbiorze na
wierzchołek), m zapyta ´n postaci „Czy elementy x i y nale˙z ˛a
do tego samego zbioru (zapytanie odpowiada kraw ˛edzi) oraz co najwy˙zej n − 1 operacji scalenia zbiorów. Wyró˙zniamy dwie operacje:
FIND(x)- zwracareprezentantentanta zbioru, do
którego nale˙zy x , przy czym dla dowolnych ró˙znych elementów tego samego zbioru zwraca te same elementy
UNION(x,y)- je´sli x i y nale˙z ˛a do innych zbiorów, to
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania
Idea rozwi ˛azania
Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Specyfikacja
SpecyfikacjaMamy pocz ˛atkowo n zbiorów (np. po jednym zbiorze na
wierzchołek), m zapyta ´n postaci „Czy elementy x i y nale˙z ˛a
do tego samego zbioru (zapytanie odpowiada kraw ˛edzi) oraz co najwy˙zej n − 1 operacji scalenia zbiorów. Wyró˙zniamy dwie operacje:
FIND(x)- zwracareprezentantentanta zbioru, do
którego nale˙zy x , przy czym dla dowolnych ró˙znych elementów tego samego zbioru zwraca te same elementy
UNION(x,y)- je´sli x i y nale˙z ˛a do innych zbiorów, to
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania
Idea rozwi ˛azania
Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3 Specyfikacja
Mamy pocz ˛atkowo n zbiorów (np. po jednym zbiorze na
wierzchołek), m zapyta ´n postaci „Czy elementy x i y nale˙z ˛a
do tego samego zbioru (zapytanie odpowiada kraw ˛edzi) oraz co najwy˙zej n − 1 operacji scalenia zbiorów. Wyró˙zniamy dwie operacje:
FIND(x)- zwracareprezentantentanta zbioru, do
którego nale˙zy x , przy czym dla dowolnych ró˙znych elementów tego samego zbioru zwraca te same elementy
UNION(x,y)- je´sli x i y nale˙z ˛a do innych zbiorów, to
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania
Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Rozwi ˛
azanie 1
Rozwi ˛azanie 1Mamy tablic ˛e reprezentant[i], której i-ta pozycja zawiera informacj ˛e o reprezentantentancie zbioru, do
którego nale˙zy i. Pocz ˛atkowo dla ka˙zdego i
reprezentant[i] == i. Je´sli robimy UNION(i,j), to
podmieniamy wszystkie wyst ˛apienia warto´sci
reprezentant[j]poprzez reprezentant[i].
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania
Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3 Cechy
bardzo szybkie sprawdzanie, czy dane dwa elementy
s ˛a w jednym zbiorze O(1)
powolne ł ˛aczenie dwóch zbiorów O(n)
prosta implementacja
strasznie du˙zy czas całkowity O(n2+m) (wszystkie
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania
Rozwi ˛azanie 1
Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Cechy rozwi ˛
azania 1
Cechy
bardzo szybkie sprawdzanie, czy dane dwa elementy
s ˛a w jednym zbiorze O(1)
powolne ł ˛aczenie dwóch zbiorów O(n)
prosta implementacja
strasznie du˙zy czas całkowity O(n2+m) (wszystkie
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania
Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3 Cechy
bardzo szybkie sprawdzanie, czy dane dwa elementy
s ˛a w jednym zbiorze O(1)
powolne ł ˛aczenie dwóch zbiorów O(n)
prosta implementacja
strasznie du˙zy czas całkowity O(n2+m) (wszystkie
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania
Rozwi ˛azanie 1
Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Cechy rozwi ˛
azania 1
Cechy
bardzo szybkie sprawdzanie, czy dane dwa elementy
s ˛a w jednym zbiorze O(1)
powolne ł ˛aczenie dwóch zbiorów O(n)
prosta implementacja
strasznie du˙zy czas całkowity O(n2+m) (wszystkie
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1
Rozwi ˛azanie 2
Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
A jak mo˙zna szybciej ł ˛aczy´c?
trzymamy zbiory jako listy elementów
dodatkowo ka˙zdy element ma wska´znik na pierwszy element listy, czyli na reprezentantentanta
zawsze pami ˛etamy rozmiar takiej listy
ł ˛aczenie takich dwóch list odbywa si ˛e na zasadzie
„doklej mały do du˙zego”, czyli do wi ˛ekszego zbioru doklejamy na koniec mniejszy, i w tym mniejszym zbiorze modyfikujemy wska´zniki na
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Rozwi ˛
azanie 2
A jak mo˙zna szybciej ł ˛aczy´c?
trzymamy zbiory jako listy elementów
dodatkowo ka˙zdy element ma wska´znik na pierwszy element listy, czyli na reprezentantentanta
zawsze pami ˛etamy rozmiar takiej listy
ł ˛aczenie takich dwóch list odbywa si ˛e na zasadzie
„doklej mały do du˙zego”, czyli do wi ˛ekszego zbioru doklejamy na koniec mniejszy, i w tym mniejszym zbiorze modyfikujemy wska´zniki na
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1
Rozwi ˛azanie 2
Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
A jak mo˙zna szybciej ł ˛aczy´c?
trzymamy zbiory jako listy elementów
dodatkowo ka˙zdy element ma wska´znik na pierwszy element listy, czyli na reprezentantentanta
zawsze pami ˛etamy rozmiar takiej listy
ł ˛aczenie takich dwóch list odbywa si ˛e na zasadzie
„doklej mały do du˙zego”, czyli do wi ˛ekszego zbioru doklejamy na koniec mniejszy, i w tym mniejszym zbiorze modyfikujemy wska´zniki na
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Rozwi ˛
azanie 2
A jak mo˙zna szybciej ł ˛aczy´c?
trzymamy zbiory jako listy elementów
dodatkowo ka˙zdy element ma wska´znik na pierwszy element listy, czyli na reprezentantentanta
zawsze pami ˛etamy rozmiar takiej listy
ł ˛aczenie takich dwóch list odbywa si ˛e na zasadzie
„doklej mały do du˙zego”, czyli do wi ˛ekszego zbioru doklejamy na koniec mniejszy, i w tym mniejszym zbiorze modyfikujemy wska´zniki na
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1
Rozwi ˛azanie 2
Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Cechy rozwi ˛azania 2
szybki czas sprawdzania, czy dwa elementy nale˙z ˛a do
jednego zbioru O(1)
ł ˛aczenie jest szybsze, bo je´sli jakiemu´s elementowi
podmieniamy wska´znik na reprezentantentanta, to nagle ten element znajduje si ˛e w zbiorze co najmniej dwa razy wi ˛ekszym
wniosek? ka˙zdy element ma podmieniany wska´znik co najwy˙zej O(log n) razy
cały czas ł ˛aczenia wynosi wi ˛ec O(n log n), wi ˛ec
zamortyzowany czas przeznaczony na jedn ˛a operacj ˛e
UNIONwynosi O(log n)
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1
Rozwi ˛azanie 2
Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Cechy rozwi ˛
azania 2
Cechy rozwi ˛azania 2
szybki czas sprawdzania, czy dwa elementy nale˙z ˛a do
jednego zbioru O(1)
ł ˛aczenie jest szybsze, bo je´sli jakiemu´s elementowi
podmieniamy wska´znik na reprezentantentanta, to nagle ten element znajduje si ˛e w zbiorze co najmniej dwa razy wi ˛ekszym
wniosek? ka˙zdy element ma podmieniany wska´znik co najwy˙zej O(log n) razy
cały czas ł ˛aczenia wynosi wi ˛ec O(n log n), wi ˛ec
zamortyzowany czas przeznaczony na jedn ˛a operacj ˛e
UNIONwynosi O(log n)
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1
Rozwi ˛azanie 2
Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Cechy rozwi ˛azania 2
szybki czas sprawdzania, czy dwa elementy nale˙z ˛a do
jednego zbioru O(1)
ł ˛aczenie jest szybsze, bo je´sli jakiemu´s elementowi
podmieniamy wska´znik na reprezentantentanta, to nagle ten element znajduje si ˛e w zbiorze co najmniej dwa razy wi ˛ekszym
wniosek? ka˙zdy element ma podmieniany wska´znik co najwy˙zej O(log n) razy
cały czas ł ˛aczenia wynosi wi ˛ec O(n log n), wi ˛ec
zamortyzowany czas przeznaczony na jedn ˛a operacj ˛e
UNIONwynosi O(log n)
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1
Rozwi ˛azanie 2
Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Cechy rozwi ˛
azania 2
Cechy rozwi ˛azania 2
szybki czas sprawdzania, czy dwa elementy nale˙z ˛a do
jednego zbioru O(1)
ł ˛aczenie jest szybsze, bo je´sli jakiemu´s elementowi
podmieniamy wska´znik na reprezentantentanta, to nagle ten element znajduje si ˛e w zbiorze co najmniej dwa razy wi ˛ekszym
wniosek? ka˙zdy element ma podmieniany wska´znik co najwy˙zej O(log n) razy
cały czas ł ˛aczenia wynosi wi ˛ec O(n log n), wi ˛ec
zamortyzowany czas przeznaczony na jedn ˛a operacj ˛e
UNIONwynosi O(log n)
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1
Rozwi ˛azanie 2
Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Cechy rozwi ˛azania 2
szybki czas sprawdzania, czy dwa elementy nale˙z ˛a do
jednego zbioru O(1)
ł ˛aczenie jest szybsze, bo je´sli jakiemu´s elementowi
podmieniamy wska´znik na reprezentantentanta, to nagle ten element znajduje si ˛e w zbiorze co najmniej dwa razy wi ˛ekszym
wniosek? ka˙zdy element ma podmieniany wska´znik co najwy˙zej O(log n) razy
cały czas ł ˛aczenia wynosi wi ˛ec O(n log n), wi ˛ec
zamortyzowany czas przeznaczony na jedn ˛a operacj ˛e
UNIONwynosi O(log n)
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2
Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Da si ˛e jeszcze szybciej! - Rozwi ˛
azanie 3
Trzymamy rodzin ˛e zbiorów rozł ˛acznych jako las drzew
ka˙zdy element oprócz korzenia w drzewie ma wska´znik do jakiego´s elementu wy˙zej
je´sli jest korzeniem, to ma wska´znik sam do siebie reprezentantentantem zbioru jest korze ´n drzewa scalanie = podpi ˛ecie korzenia jednego drzewa do drugiego drzewa
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2
Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Trzymamy rodzin ˛e zbiorów rozł ˛acznych jako las drzew
ka˙zdy element oprócz korzenia w drzewie ma wska´znik do jakiego´s elementu wy˙zej
je´sli jest korzeniem, to ma wska´znik sam do siebie reprezentantentantem zbioru jest korze ´n drzewa scalanie = podpi ˛ecie korzenia jednego drzewa do drugiego drzewa
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2
Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Da si ˛e jeszcze szybciej! - Rozwi ˛
azanie 3
Trzymamy rodzin ˛e zbiorów rozł ˛acznych jako las drzew
ka˙zdy element oprócz korzenia w drzewie ma wska´znik do jakiego´s elementu wy˙zej
je´sli jest korzeniem, to ma wska´znik sam do siebie
reprezentantentantem zbioru jest korze ´n drzewa scalanie = podpi ˛ecie korzenia jednego drzewa do drugiego drzewa
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2
Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Trzymamy rodzin ˛e zbiorów rozł ˛acznych jako las drzew
ka˙zdy element oprócz korzenia w drzewie ma wska´znik do jakiego´s elementu wy˙zej
je´sli jest korzeniem, to ma wska´znik sam do siebie reprezentantentantem zbioru jest korze ´n drzewa
scalanie = podpi ˛ecie korzenia jednego drzewa do drugiego drzewa
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2
Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Da si ˛e jeszcze szybciej! - Rozwi ˛
azanie 3
Trzymamy rodzin ˛e zbiorów rozł ˛acznych jako las drzew
ka˙zdy element oprócz korzenia w drzewie ma wska´znik do jakiego´s elementu wy˙zej
je´sli jest korzeniem, to ma wska´znik sam do siebie reprezentantentantem zbioru jest korze ´n drzewa scalanie = podpi ˛ecie korzenia jednego drzewa do drugiego drzewa
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2
Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Zasadniczo wygl ˛ada to tak:
a b d c e f g
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Przykład po UNION
A jak zrobimy UNION(b,f), to wygl ˛ada tak:
a b d c e f g
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3 Ranga
dla ka˙zdego elementu z ka˙zdego zbioru trzymamy
rang ˛e, która jest wysoko´sci ˛a drzewa, czyli odległo´sci ˛a
najdalszego elementu od korzenia
scalanie zbiorów robimy podpinaj ˛ac do drzewa o
wi ˛ekszej randze drzewo o mniejszej randze
je´sli rangi s ˛a równe, to podpinamy jakkolwiek i
zwi ˛ekszamy rang ˛e w korzeniu drzewa, do którego podpi ˛eli´smy
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Optymalizacja 1
Rangadla ka˙zdego elementu z ka˙zdego zbioru trzymamy
rang ˛e, która jest wysoko´sci ˛a drzewa, czyli odległo´sci ˛a
najdalszego elementu od korzenia
scalanie zbiorów robimy podpinaj ˛ac do drzewa o
wi ˛ekszej randze drzewo o mniejszej randze
je´sli rangi s ˛a równe, to podpinamy jakkolwiek i
zwi ˛ekszamy rang ˛e w korzeniu drzewa, do którego podpi ˛eli´smy
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3 Ranga
dla ka˙zdego elementu z ka˙zdego zbioru trzymamy
rang ˛e, która jest wysoko´sci ˛a drzewa, czyli odległo´sci ˛a
najdalszego elementu od korzenia
scalanie zbiorów robimy podpinaj ˛ac do drzewa o
wi ˛ekszej randze drzewo o mniejszej randze
je´sli rangi s ˛a równe, to podpinamy jakkolwiek i
zwi ˛ekszamy rang ˛e w korzeniu drzewa, do którego podpi ˛eli´smy
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Koszt czasowy
Koszt czasowyw omówionej dot ˛ad implementacji koszt czasowy
zapytania FIND jest logarytmiczny (warto zastanowi´c si ˛e dlaczego!)
koszt operacji UNION to dwie operacje FIND plus czas podmienienia wska´znika, czyli w sumie logarytmicznie całkowity koszt działania takiej struktury to O(m log n), czyli do´s´c du˙zo
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3 Koszt czasowy
w omówionej dot ˛ad implementacji koszt czasowy
zapytania FIND jest logarytmiczny (warto zastanowi´c si ˛e dlaczego!)
koszt operacji UNION to dwie operacje FIND plus czas podmienienia wska´znika, czyli w sumie logarytmicznie
całkowity koszt działania takiej struktury to O(m log n), czyli do´s´c du˙zo
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Koszt czasowy
Koszt czasowyw omówionej dot ˛ad implementacji koszt czasowy
zapytania FIND jest logarytmiczny (warto zastanowi´c si ˛e dlaczego!)
koszt operacji UNION to dwie operacje FIND plus czas podmienienia wska´znika, czyli w sumie logarytmicznie całkowity koszt działania takiej struktury to O(m log n), czyli do´s´c du˙zo
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3 Koszt czasowy
w omówionej dot ˛ad implementacji koszt czasowy
zapytania FIND jest logarytmiczny (warto zastanowi´c si ˛e dlaczego!)
koszt operacji UNION to dwie operacje FIND plus czas podmienienia wska´znika, czyli w sumie logarytmicznie całkowity koszt działania takiej struktury to O(m log n), czyli do´s´c du˙zo
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Kompresja ´scie˙zek
Kompresja ´scie˙zekka˙zdy element najlepiej czuje si ˛e blisko korzenia, bo wtedy nie trzeba za du˙zo chodzi´c po wska´znikach w operacji FIND
skoro ju˙z musimy tyle chodzi´c w operacji FIND, mo˙zemy poskraca´c ´scie˙zki, czyli po prostu wszystkie
napotkane na drodze wierzchołki podpi ˛a´c do korzenia
całkowity czas działania struktury to O(m log∗n), gdzie
log∗n oznacza wysoko´s´c stosu pot ˛eg dwójek
potrzebnych do zbudowania n. Np. log∗2 = 1,
log∗22=2 , log∗222=3,log∗2222=4, itd. Warto´s´c
22222=265536
dla zainteresowanych: dowód tego faktu we „Wprowadzeniu do algorytmów“.
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2
Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
ka˙zdy element najlepiej czuje si ˛e blisko korzenia, bo wtedy nie trzeba za du˙zo chodzi´c po wska´znikach w operacji FIND
skoro ju˙z musimy tyle chodzi´c w operacji FIND, mo˙zemy poskraca´c ´scie˙zki, czyli po prostu wszystkie
napotkane na drodze wierzchołki podpi ˛a´c do korzenia
całkowity czas działania struktury to O(m log∗n), gdzie
log∗n oznacza wysoko´s´c stosu pot ˛eg dwójek
potrzebnych do zbudowania n. Np. log∗2 = 1,
log∗22=2 , log∗222=3,log∗2222=4, itd. Warto´s´c
22222=265536
dla zainteresowanych: dowód tego faktu we „Wprowadzeniu do algorytmów“.
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Kompresja ´scie˙zek
Kompresja ´scie˙zekka˙zdy element najlepiej czuje si ˛e blisko korzenia, bo wtedy nie trzeba za du˙zo chodzi´c po wska´znikach w operacji FIND
skoro ju˙z musimy tyle chodzi´c w operacji FIND, mo˙zemy poskraca´c ´scie˙zki, czyli po prostu wszystkie
napotkane na drodze wierzchołki podpi ˛a´c do korzenia
całkowity czas działania struktury to O(m log∗n), gdzie
log∗n oznacza wysoko´s´c stosu pot ˛eg dwójek
potrzebnych do zbudowania n. Np. log∗2 = 1,
log∗22=2 , log∗222=3,log∗2222=4, itd. Warto´s´c 22222=265536
dla zainteresowanych: dowód tego faktu we „Wprowadzeniu do algorytmów“.
zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2
Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
ka˙zdy element najlepiej czuje si ˛e blisko korzenia, bo wtedy nie trzeba za du˙zo chodzi´c po wska´znikach w operacji FIND
skoro ju˙z musimy tyle chodzi´c w operacji FIND, mo˙zemy poskraca´c ´scie˙zki, czyli po prostu wszystkie
napotkane na drodze wierzchołki podpi ˛a´c do korzenia
całkowity czas działania struktury to O(m log∗n), gdzie
log∗n oznacza wysoko´s´c stosu pot ˛eg dwójek
potrzebnych do zbudowania n. Np. log∗2 = 1,
log∗22=2 , log∗222=3,log∗2222=4, itd. Warto´s´c 22222=265536
dla zainteresowanych: dowód tego faktu we „Wprowadzeniu do algorytmów“.
Drzewa rozpinaj ˛ace, zbiory rozł ˛aczne, czas zamorty-zowany Wst ˛ep Przykład Rozwi ˛azanie Zbiory rozł ˛aczne Wymagania Idea rozwi ˛azania Rozwi ˛azanie 1 Rozwi ˛azanie 2 Da si ˛e jeszcze szybciej! -Rozwi ˛azanie 3
Podsumowanie
PodsumowanieKorzystaj ˛ac z przedstawionego algorytmu budowania
drzewa rozpinaj ˛acego, przy u˙zyciu Rozwi ˛azania 3, do
reprezentowania zmieniaj ˛acych si ˛e w czasie spójnych
składowych budujemy drzewo rozpinaj ˛ace w czasie