• Nie Znaleziono Wyników

drzewa rozpinajace zbiory rozlaczne czas zamortyzowany

N/A
N/A
Protected

Academic year: 2021

Share "drzewa rozpinajace zbiory rozlaczne czas zamortyzowany"

Copied!
60
0
0

Pełen tekst

(1)

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.

(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

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

(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

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

(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

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

(5)

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

(6)

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

(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

(8)

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

(9)

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

(10)

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

(11)

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

(12)

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 4

aktualna 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

(13)

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

(14)

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 4

aktualna kraw ˛ed´z: 6 4 1

przychodzi kraw ˛ed´z 6 4 1, j ˛a te˙z dodajemy do budowanego

(15)

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

(16)

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 4

aktualna kraw ˛ed´z: 1 2 2

(17)

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

(18)

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 4

aktualna kraw ˛ed´z: 2 3 3

(19)

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!

(20)

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

(21)

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

(22)

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

(23)

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

(24)

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

(25)

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

(26)

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

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

(27)

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

(28)

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 1

Mamy 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].

(29)

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

(30)

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

(31)

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

(32)

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

(33)

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

(34)

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

(35)

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

(36)

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

(37)

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)

(38)

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)

(39)

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)

(40)

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)

(41)

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)

(42)

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

(43)

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

(44)

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

(45)

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

(46)

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

(47)

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

(48)

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

(49)

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

(50)

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

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

(51)

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

(52)

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 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

(53)

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

(54)

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 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

(55)

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

(56)

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˙zek

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 logn), gdzie

logn oznacza wysoko´s´c stosu pot ˛eg dwójek

potrzebnych do zbudowania n. Np. log2 = 1,

log22=2 , log222=3,log2222=4, itd. Warto´s´c

22222=265536

dla zainteresowanych: dowód tego faktu we „Wprowadzeniu do algorytmów“.

(57)

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 logn), gdzie

logn oznacza wysoko´s´c stosu pot ˛eg dwójek

potrzebnych do zbudowania n. Np. log2 = 1,

log22=2 , log222=3,log2222=4, itd. Warto´s´c

22222=265536

dla zainteresowanych: dowód tego faktu we „Wprowadzeniu do algorytmów“.

(58)

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˙zek

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 logn), gdzie

logn oznacza wysoko´s´c stosu pot ˛eg dwójek

potrzebnych do zbudowania n. Np. log2 = 1,

log22=2 , log222=3,log2222=4, itd. Warto´s´c 22222=265536

dla zainteresowanych: dowód tego faktu we „Wprowadzeniu do algorytmów“.

(59)

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 logn), gdzie

logn oznacza wysoko´s´c stosu pot ˛eg dwójek

potrzebnych do zbudowania n. Np. log2 = 1,

log22=2 , log222=3,log2222=4, itd. Warto´s´c 22222=265536

dla zainteresowanych: dowód tego faktu we „Wprowadzeniu do algorytmów“.

(60)

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

Podsumowanie

Korzystaj ˛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

Cytaty

Powiązane dokumenty

Na ko«cu rozwi¡zania ka»dego zadania nale»y poda¢ peªn¡ odpowied¹(-dzi)1. Dodatkowo, na karcie zada«

[r]

Odwracaj ˛ ac transformat ˛e za

[r]

Wreszcie, rozwa˙zana na pocz ˛ atku implikacja tak˙ze jest fałszywa w tej interpretacji.... Budujemy dowód zało˙zeniowy

Dla dowolnego wzz, koniunkcja w poprzedniku badanej implikacji nie mo˙ze mie´c warto´sci 1 przy tym wzz, poniewa˙z dla takiego wzz p miałaby warto´s´c 1, a implikacja p → q

Zakªada si¦ przy tym, »e ze wzgl¦du na peªn¡ symetri¦, betonowy blok dziaªa z takim samym obci¡»eniem na ka»d¡ z dwóch belek...

 mo˙zna pisa´c ogólne funkcje działaj ˛ ace dla wszystkich pochodnych pewnej klasy bazowej;.  elastyczny system typów: mo˙zna dodawa´c nowe typy bez modyfikacji ju˙z istniej