Przejdź do zawartości

Graf hamiltonowski

Z Wikipedii, wolnej encyklopedii

Graf hamiltonowski – rodzaj grafu rozważany w teorii grafów i definiowany dwojako, w dwóch nieco innych znaczeniach:

W niektórych źródłach graf zawierający tylko ścieżkę Hamiltona nazywany jest grafem półhamiltonowskim[2].

Aby lepiej zrozumieć właściwości grafu hamiltonowskiego można się posłużyć przykładem komiwojażera, który chce odwiedzić wszystkich swoich klientów, ale tylko raz (problem komiwojażera). Klienci to wierzchołki grafu, a drogi między nimi są jego krawędziami. Jeżeli graf jest hamiltonowski, to znaczy, że komiwojażer może obejść wszystkich klientów bez mijania drugi raz żadnego z nich i wrócić do punktu wyjścia.

Przykłady grafów hamiltonowskich

[edytuj | edytuj kod]
Graf skierowany posiadający ścieżkę Hamiltona. Niebieskie kropki to wierzchołki grafu, strzałki to krawędzie grafu, a ścieżkę hamiltona oznaczono kolorem czerwonym.
Przykładowy cykl Hamiltona w grafie dwunastościanu foremnego
Przykłady cykli Hamiltona w grafie siatki 8x8

Grafem hamiltonowskim w szczególności jest każdy graf:

Złożoność czasowa

[edytuj | edytuj kod]

Nie są znane algorytmy umożliwiające jednoznaczne rozwiązanie problemu znajdowania najkrótszej możliwej ścieżki Hamiltona w czasie wielomianowym i działające dla wszystkich możliwych grafów (problem ścieżki Hamiltona jest NP zupełny). W praktyce najczęściej stosowane są algorytmy genetyczne, często wykorzystywane w połączeniu z heurystycznymi (np. heurystyka najbliższego sąsiada). Są to jednak metody dające w większości jedynie rozwiązania bliskie optymalnemu. Znalezienie najlepszego, możliwego rozwiązania, zależy głównie od liczby punktów oraz czasem szczęścia na skutek generacji populacji początkowej, krzyżowania oraz mutacji w algorytmach genetycznych.

Problem złożoności czasowej znajdowania rozwiązania problemu grafu hamiltonowskiego wiąże się z brakiem twierdzenia takiego jak twierdzenie Eulera dla grafów Eulera. Owo twierdzenie pozwala w czasie liniowym (tj. zależnym liniowo od, w tym przypadku, liczby wierzchołków) znaleźć odpowiedź na pytanie, czy graf jest eulerowski. W przypadku grafów Hamiltona twierdzenie takie prawdopodobnie nie istnieje.

Znalezienie algorytmu znajdowania drogi Hamiltona w czasie wielomianowym jest „Świętym Graalem” informatyki, i chociaż powstały już setki publikacji opisujących rzekomo taki właśnie algorytm, problem jest nadal otwarty. Według znakomitej części specjalistów taki algorytm nie istnieje („gdyż, zgodnie z rachunkiem prawdopodobieństwa, ktoś już by taki algorytm znalazł”), jednak do czasu udowodnienia, że takowy algorytm nie istnieje, lub udowodnienia, że taki dowód nie może zostać przeprowadzony, należy wstrzymać się z kategorycznymi osądami.

Przykładowy cykl hamiltonowski w grafie Mycielskiego

Oznaczenia

[edytuj | edytuj kod]

Niech oznacza graf, zbiór jego wierzchołków, zbiór krawędzi, moc zbioru, pojedynczy (w tym przypadku -ty) wierzchołek grafu, a stopień wierzchołka (liczbę kończących się w nim krawędzi). Tradycyjnie oznacza się oraz zapis będący zbiorem dwuelementowym wierzchołków, używa się do oznaczenia krawędzi między i (w przypadku digrafów jest to para uporządkowana, gdyż liczy się kolejność oznaczająca kierunek krawędzi).

Indeksowanie wierzchołków

[edytuj | edytuj kod]

Ścieżka/cykl Hamiltona może być jednoznacznie wyznaczona przez indeksowanie wierzchołków – tj. nadanie im indeksów, powiedzmy takich, że istnieje ścieżka Hamiltona przechodząca w takiej właśnie kolejności przez wierzchołki grafu.

Gdy znane jest indeksowanie wyznaczające ścieżkę Hamiltona, to znalezienie (lub potwierdzenie nieistnienia) cyklu Hamiltona jest trywialne i sprowadza się do sprawdzenia, czy istnieje krawędź – zajmuje to, w zależności od sposobu reprezentacji grafu, czas stały lub gdzie to liczba wierzchołków danego grafu (zobacz: Notacja dużego O).

Warunek konieczny

[edytuj | edytuj kod]

Jeżeli graf jest hamiltonowski to dla każdego niepustego podzbioru zbioru wierzchołków zachodzi

gdzie oznacza liczbę spójnych składowych grafu

Warunki wystarczające

[edytuj | edytuj kod]

Istnieją jednak twierdzenia pozwalające na podstawie cech grafu, dostępnych w czasie liniowym, stwierdzić jednoznacznie, że dany graf jest hamiltonowski. Należy pamiętać, że jest to implikacja jednostronna – istnieje nieskończenie wiele grafów hamiltonowskich, które nie mają poniższych cech.

Twierdzenia te są matematycznym obrazem dość naturalnej obserwacji dotyczącej własności grafów – jest logiczne, że im więcej jest krawędzi w grafie, tym „większe są szanse” na znalezienie wśród nich drogi Hamiltona. W skrócie (i nieformalnie), poniższe twierdzenia mówią, że graf jest hamiltonowski, jeżeli tylko ma on odpowiednio dużo krawędzi w stosunku do liczby wierzchołków.

Najważniejsze z nich to:

Szczególne przypadki

[edytuj | edytuj kod]

Oczywiste jest, że żaden graf niespójny nie jest hamiltonowski. Dodawanie krawędzi (w szczególności krawędzi wielokrotnych i pętli) do grafu Hamiltona w oczywisty sposób nie może uczynić z niego grafu niehamiltonowskiego. Każdy graf pełny o wierzchołkach zawiera V! cykli Hamiltona, gdyż dla każdej permutacji indeksów wierzchołków, wyznacza istniejącą drogę, będącą cyklem Hamiltona. Każdy turniej ma ścieżkę Hamiltona.

Algorytmy znajdowania ścieżki Hamiltona

[edytuj | edytuj kod]

Zobacz też

[edytuj | edytuj kod]

Przypisy

[edytuj | edytuj kod]
  1. graf Hamiltona, [w:] Encyklopedia PWN [online], Wydawnictwo Naukowe PWN [dostęp 2021-10-10].
  2. Reinhard Diestel: Graph Theory. Nowy Jork: 2000, s. 213. ISBN 0-387-95014-1.

Bibliografia

[edytuj | edytuj kod]