• Nie Znaleziono Wyników

2 Algorytm Hopcrofta-Karpa

N/A
N/A
Protected

Academic year: 2021

Share "2 Algorytm Hopcrofta-Karpa"

Copied!
3
0
0

Pełen tekst

(1)

Algorytmy i Struktury Danych, 14. ćwiczenia

2010-01-11

1 Plan

• udowodnić, że w algorytmie Hopcrofta-Karpa ścieżki powiększające nie maleją.

• zaimplementować w czasie liniowym algorytm obliczania doskonałego sko- jarzenia w dwudzielnych grafach regularnych stopnia 3

• kolorowanie grafów planarnych 6 kolorami (operowanie na listach sąsiedz- twa)

• Omówić usuwanie z B-drzewa

• Pokazać jak zrobić split i join na 2-3-4 drzewach

• Pokazać wstawianie i usuwanie z drzew czerwono-czarnych - nie symulując tych operacji 2-3-4 drzew

2 Algorytm Hopcrofta-Karpa

Polecam notatki P. Sankowskiego: http://www.dis.uniroma1.it/~sankowski/lecture2.pdf

3 Grafy planarne

n − m + f = 2

(n — liczba wierzchołków, m — liczba krawędzi, f — liczba ściań) m ≤ 3v − 6

1 2

Xdeg(vi) ≤ 3n − 6

Xdeg(vi) ≤ 6n − 12

czyli w grafie planarnym istnieje wierzchołek o stopniu co najwyżej 5.

Algorytm 6-kolorowania: tak długo jak graf nie jest pusty, znajdź wierzcho- łek v o stopniu ≤ 5. Usuń go z grafu, pokoloruj rekurencyjnie resztę, nadaj nowy kolor v (zawsze jest co najmniej jeden wolny).

1

(2)

4 Przejście z 2-3-4 drzew na czerwono-czarne

• węzeł z jednym kluczem zamieniany jest na czarny węzeł,

• węzeł z dwoma kluczami zamieniany jest na dwa węzły czarny i jego czer- wonego syna (możemy dowolnie wybrać lewy czy prawy),

• węzeł z trzema kluczami jest zamieniany na czarny węzeł z dwoma czer- wonymi synami.

B-drzewa definicja

• każdy węzeł ma następujące pola n, c[], key[],

• każdy węzeł wewnętrzny utrzymuje n kluczy i n + 1 wskaźników do synów,

• klucze są uporządkowane rosnąco,

• klucz w poddrzewie c[i] mają wartości pochodzą z przedziału [key[i − 1], key[i]] (definiujemy key[0] = −∞, key[n + 1] = ∞),

• wszystkie liście mają leżą na tej samej głębokości,

• każdy węzeł zawiera nie więcej niż 2t − 1 kluczy,

• każdy węzeł oprócz korzenia zawiera co najmniej t − 1 kluczy.

B-drzewa usuwanie

• jeśli klucz k jest w węźle x i x jest liściem, to usuń k z węzła,

• jeśli klucz k jest w węźle wewnętrznym x, to:

– niech y1 syn x poprzedzający k, y2 syn x występujący po k, k1 po- przednik k w drzewie, k2 następnik k w drzewie,

– jeśli węzeł y1 ma co najmniej t kluczy, to rekurencyjnie usuń k1 i zastąp k przez k1,

– w przeciwnym przypadku, jeśli węzeł y2ma co najmniej t kluczy, to rekurencyjnie usuń k2i zastąp k przez k2,

– w przeciwnym przypadku, y1i y2mają po t − 1 kluczy, scal węzeł y1, klucz k i węzeł y2otrzymując węzeł y0, usuń rekurencyjnie k z węzła y.

• jeśli klucz k nie występuje w węźle wewnętrznym x, to:

– znajdź odpowiednie poddrzewo y w którym może znajdować się k, – jeśli y ma co najmniej t kluczy, usuń rekurencyjnie k z y,

– wpp., jeśli y ma t − 1 kluczy, ale jeden z sąsiadów y ma t kluczy, to dodaj jeden klucz do y (jeden klucz przechodzi z x do y, jeden z brata y do x),

– wpp., scal y z dowolnym bratem i usuń k z tak utworzonego węzła (je- śli x jest korzeniem, to może to spowodować zmniejszenie wysokości drzewa).

2

(3)

5 Drzewa czerwono-czarne

Cormen, Rozdział 13, strony 273–301.

3

Cytaty

Powiązane dokumenty

Każde drzewo decyzyjne dla algorytmu sortującego ciąg n- elementowy przez porównywanie elementów, ma co najmniej wysokość log

Czytamy kolejno znaki wyrażenia i kolejne argumenty operacji wpisujemy na stos argumentów, a kolejno spotkane operacje wpisujemy na stos operacji.. Schemat blokowy algorytmu.

Zadanie Do zbioru reprezentowanego przez drzewo D dołączyć element e, o ile nie należy on jeszcze do etykiet drzewa D.... Zastosowanie: wyszukiwanie

(3) Jeżeli tak otrzymane drzewo nie jest częściowo uporządkowane, to przechodząc wzdłuż drogi od liścia x do korzenia, poprawić etykiety zamieniając etykietę ojca z

Jeśli element e należy do kolejki q, to po skończonej liczbie usunięć kolejnych elementów minimalnych.. dotrę do tego

takie drzewo <V, T> rozpinające grafu G, że suma kosztów jego krawędzi  eT c (e) jest najmniejsza.. Mirkowska, ASD_12 Algorytmy na

Niech będzie tekst 100000 znakowy, w którym występują tylko litery a,b,c,d,e,f i a-45tys razy, b-13tys., c-12tys.,.. d-16tys., e -

Powiemy, że problem jest rozstrzygalny, jeśli istnieje algorytm, który dla dowolnych danych x po skończonej liczbie kroków daje rozwiązanie problemu. W przeciwnym