Ka»dy zbiór przechowywany jako drzewo z korzeniem. Korze« drzewa = reprezentant zbioru.
Ka»dy wierzchoªek drzewa posiada pola:
element zbioru,
wska¹nik do ojca w drzewie (korze« wskazuje na siebie).
Struktur¦ drzewa mo»na tak»e zaimplementowa¢ przy wykorzystaniu tablicy ojców indeksowanej elementami, które grupujemy w zbiory.
50 / 88
A. Mróz, WMiI, UMK
Przeszukiwanie grafu Najkrótsze drogi Zbiory rozª¡czne MST Maksymalny przepªyw
Struktury danych dla zbiorów rozª¡cznych
Implementacja drzewa z korzeniem.Ka»dy zbiór przechowywany jako drzewo z korzeniem.
Korze« drzewa = reprezentant zbioru. Ka»dy wierzchoªek drzewa posiada pola:
element zbioru,
wska¹nik do ojca w drzewie (korze« wskazuje na siebie).
Struktur¦ drzewa mo»na tak»e zaimplementowa¢ przy wykorzystaniu tablicy ojców indeksowanej elementami, które grupujemy w zbiory.
50 / 88
A. Mróz, WMiI, UMK
Przeszukiwanie grafu Najkrótsze drogi Zbiory rozª¡czne MST Maksymalny przepªyw
Struktury danych dla zbiorów rozª¡cznych
Implementacja drzewa z korzeniem.Ka»dy zbiór przechowywany jako drzewo z korzeniem. Korze« drzewa = reprezentant zbioru.
Ka»dy wierzchoªek drzewa posiada pola:
element zbioru,
wska¹nik do ojca w drzewie (korze« wskazuje na siebie).
Struktur¦ drzewa mo»na tak»e zaimplementowa¢ przy wykorzystaniu tablicy ojców indeksowanej elementami, które grupujemy w zbiory.
50 / 88
A. Mróz, WMiI, UMK
Przeszukiwanie grafu Najkrótsze drogi Zbiory rozª¡czne MST Maksymalny przepªyw
Struktury danych dla zbiorów rozª¡cznych
Implementacja drzewa z korzeniem.Ka»dy zbiór przechowywany jako drzewo z korzeniem. Korze« drzewa = reprezentant zbioru.
Ka»dy wierzchoªek drzewa posiada pola: element zbioru,
wska¹nik do ojca w drzewie (korze« wskazuje na siebie).
Struktur¦ drzewa mo»na tak»e zaimplementowa¢ przy wykorzystaniu tablicy ojców indeksowanej elementami, które grupujemy w zbiory.
50 / 88
A. Mróz, WMiI, UMK
Przeszukiwanie grafu Najkrótsze drogi Zbiory rozª¡czne MST Maksymalny przepªyw
Struktury danych dla zbiorów rozª¡cznych
Implementacja drzewa z korzeniem.Ka»dy zbiór przechowywany jako drzewo z korzeniem. Korze« drzewa = reprezentant zbioru.
Ka»dy wierzchoªek drzewa posiada pola: element zbioru,
wska¹nik do ojca w drzewie (korze« wskazuje na siebie).
Struktur¦ drzewa mo»na tak»e zaimplementowa¢ przy wykorzystaniu tablicy ojców indeksowanej elementami, które grupujemy w zbiory.
50 / 88
A. Mróz, WMiI, UMK
Przeszukiwanie grafu Najkrótsze drogi Zbiory rozª¡czne MST Maksymalny przepªyw
Struktury danych dla zbiorów rozª¡cznych
Implementacja drzewa z korzeniem.Ka»dy zbiór przechowywany jako drzewo z korzeniem. Korze« drzewa = reprezentant zbioru.
Ka»dy wierzchoªek drzewa posiada pola: element zbioru,
wska¹nik do ojca w drzewie (korze« wskazuje na siebie).
Struktur¦ drzewa mo»na tak»e zaimplementowa¢ przy wykorzystaniu tablicy ojców indeksowanej elementami, które grupujemy w zbiory.
50 / 88
A. Mróz, WMiI, UMK
Przeszukiwanie grafu Najkrótsze drogi Zbiory rozª¡czne MST Maksymalny przepªyw
Struktury danych dla zbiorów rozª¡cznych
Implementacja drzewa z korzeniem.MakeSet(x) stworzenie nowego drzewa o jedynym wierzchoªku x. Zªo»ono±¢: O(1).
FindSet(x) przej±cie po wska¹nikach od x do ojca itp. a» do korzenia. Zªo»ono±¢: O(h), gdzie h = wysoko±¢ drzewa. Union(x, y) zmiana wska¹nika w korzeniu drzewa Tx
(zawieraj¡cego x) tak aby wskazywaª na korze« drzewa Ty (zawieraj¡cego y).
Zªo»ono±¢: O(1).
51 / 88
A. Mróz, WMiI, UMK
Przeszukiwanie grafu Najkrótsze drogi Zbiory rozª¡czne MST Maksymalny przepªyw
Struktury danych dla zbiorów rozª¡cznych
Implementacja drzewa z korzeniem.MakeSet(x) stworzenie nowego drzewa o jedynym wierzchoªku x. Zªo»ono±¢: O(1).
FindSet(x) przej±cie po wska¹nikach od x do ojca itp. a» do korzenia. Zªo»ono±¢: O(h), gdzie h = wysoko±¢ drzewa.
Union(x, y) zmiana wska¹nika w korzeniu drzewa Tx
(zawieraj¡cego x) tak aby wskazywaª na korze« drzewa Ty (zawieraj¡cego y).
Zªo»ono±¢: O(1).
51 / 88
A. Mróz, WMiI, UMK
Przeszukiwanie grafu Najkrótsze drogi Zbiory rozª¡czne MST Maksymalny przepªyw
Struktury danych dla zbiorów rozª¡cznych
Implementacja drzewa z korzeniem.MakeSet(x) stworzenie nowego drzewa o jedynym wierzchoªku x. Zªo»ono±¢: O(1).
FindSet(x) przej±cie po wska¹nikach od x do ojca itp. a» do korzenia. Zªo»ono±¢: O(h), gdzie h = wysoko±¢ drzewa. Union(x, y) zmiana wska¹nika w korzeniu drzewa Tx
(zawieraj¡cego x) tak aby wskazywaª na korze« drzewa Ty (zawieraj¡cego y).
Zªo»ono±¢: O(1).
51 / 88
A. Mróz, WMiI, UMK
Przeszukiwanie grafu Najkrótsze drogi Zbiory rozª¡czne MST Maksymalny przepªyw
Struktury danych dla zbiorów rozª¡cznych
Implementacja drzewa z korzeniem.Dwie heurystyki:
1 ¡czenie wg wysoko±ci: drzewo o mniejszej wysoko±ci doª¡czamy do drzewa o wi¦kszej wysoko±ci (+ uaktualnienie wysoko±ci).
2 Kompresja drogi: stosowana przy operacji FindSet(x) polega na zmianie wska¹ników we wszystkich wierzchoªkach na drodze od x do korzenia tak, by wskazywaªy na korze«.
52 / 88
A. Mróz, WMiI, UMK
Przeszukiwanie grafu Najkrótsze drogi Zbiory rozª¡czne MST Maksymalny przepªyw
Struktury danych dla zbiorów rozª¡cznych
Implementacja drzewa z korzeniem.Dwie heurystyki:
1 ¡czenie wg wysoko±ci: drzewo o mniejszej wysoko±ci doª¡czamy do drzewa o wi¦kszej wysoko±ci (+ uaktualnienie wysoko±ci).
2 Kompresja drogi: stosowana przy operacji FindSet(x) polega na zmianie wska¹ników we wszystkich wierzchoªkach na drodze od x do korzenia tak, by wskazywaªy na korze«.
52 / 88
A. Mróz, WMiI, UMK
Przeszukiwanie grafu Najkrótsze drogi Zbiory rozª¡czne MST Maksymalny przepªyw
Struktury danych dla zbiorów rozª¡cznych
Implementacja drzewa z korzeniem.Implementacja z uwzgl¦dnieniem heurystyk.
Oznaczenia:
h(x) = wysoko±¢ wierzchoªka x (∈ N),
ojciec(x) = ojciec wierzchoªka x (wska¹nik lub odwoªanie do tablicy ojców). MakeSet(x) 1 begin 2 ojciec(x) := x; 3 h(x) := 0 4 end; 53 / 88 A. Mróz, WMiI, UMK N
Przeszukiwanie grafu Najkrótsze drogi Zbiory rozª¡czne MST Maksymalny przepªyw
Struktury danych dla zbiorów rozª¡cznych
Implementacja drzewa z korzeniem.Implementacja z uwzgl¦dnieniem heurystyk. Oznaczenia:
h(x) = wysoko±¢ wierzchoªka x (∈ N),
ojciec(x) = ojciec wierzchoªka x (wska¹nik lub odwoªanie do tablicy ojców). MakeSet(x) 1 begin 2 ojciec(x) := x; 3 h(x) := 0 4 end; 53 / 88 A. Mróz, WMiI, UMK N
Przeszukiwanie grafu Najkrótsze drogi Zbiory rozª¡czne MST Maksymalny przepªyw
Struktury danych dla zbiorów rozª¡cznych
Implementacja drzewa z korzeniem.Implementacja z uwzgl¦dnieniem heurystyk. Oznaczenia:
h(x) = wysoko±¢ wierzchoªka x (∈ N),
ojciec(x) = ojciec wierzchoªka x (wska¹nik lub odwoªanie do tablicy ojców). MakeSet(x) 1 begin 2 ojciec(x) := x; 3 h(x) := 0 4 end; 53 / 88 A. Mróz, WMiI, UMK N
Przeszukiwanie grafu Najkrótsze drogi Zbiory rozª¡czne MST Maksymalny przepªyw
Struktury danych dla zbiorów rozª¡cznych
Implementacja drzewa z korzeniem.Implementacja z uwzgl¦dnieniem heurystyk ª¡czenie wg wysoko±ci:
Link(x, y) 1 begin 2 ifh(x) > h(y)then 3 ojciec(y) := x 4 else begin 5 ojciec(x) := y; 6 ifh(x) = h(y)then 7 h(y) := h(y) + 1 8 end 9 end; Union(x, y) 1 begin 2 Link(FindSet(x), FindSet(y)) 3 end; 54 / 88 A. Mróz, WMiI, UMK N
Przeszukiwanie grafu Najkrótsze drogi Zbiory rozª¡czne MST Maksymalny przepªyw
Struktury danych dla zbiorów rozª¡cznych
Implementacja drzewa z korzeniem.Implementacja z uwzgl¦dnieniem heurystyk ª¡czenie wg wysoko±ci:
Link(x, y) 1 begin 2 ifh(x) > h(y)then 3 ojciec(y) := x 4 else begin 5 ojciec(x) := y; 6 ifh(x) = h(y)then 7 h(y) := h(y) + 1 8 end 9 end; Union(x, y) 1 begin 2 Link(FindSet(x), FindSet(y)) 3 end; 54 / 88 A. Mróz, WMiI, UMK N
Przeszukiwanie grafu Najkrótsze drogi Zbiory rozª¡czne MST Maksymalny przepªyw
Struktury danych dla zbiorów rozª¡cznych
Implementacja drzewa z korzeniem.Implementacja z uwzgl¦dnieniem heurystyk kompresja drogi:
FindSet(x)
1 begin
2 if x <> ojciec(x)then
3 ojciec(x) := FindSet( ojciec(x) );
4 returnojciec(x)
5 end;
55 / 88
A. Mróz, WMiI, UMK
Przeszukiwanie grafu Najkrótsze drogi Zbiory rozª¡czne MST Maksymalny przepªyw