Liczba chromatyczna

Kolorowanie wierzchołków grafu polega na przypisaniu każdemu wierzchołkowi pewnej liczby naturalnej (dopuszczlne są również litery). Kolorowanie uznajemy za poprawne, jeśli żadna para wierzchołków sąsiednich nie jest pokolorowana tym samym kolorem. Przypisanie kolorów wierzchołkom grafu możemy przeprowadzić na wiele sposobów.

Graf k-kolorowy to graf, który można pokolorować k kolorami.

Dla każdego grafu można wyznaczyć minimalną liczbę kolorów użyta do kolorowania grafu. Liczbę tę nazywamy liczbą chromatycznąliczba chromatycznaliczbą chromatyczną grafu.

Znajdowanie najmniejszej liczby kolorów do pokolorowania wierzchołków jest problemem NP‑trudnymproblem NP‑trudnyNP‑trudnym.

Znamy już jedną z metod kolorowania grafu wykorzystującą podejście zachłanne. Polega ona na tym, że algorytm iteruje po każdym wierzchołku grafu, przypisując mu pierwszy dostępny kolor, jeszcze niewykorzystany przez sąsiadów. Niestety, o ile algorytm zachłanny dokonuje poprawnego kolorowania wierzchołków, o tyle sposób przypisania im kolorów nie zawsze jest optymalny. W konsekwencji wyznaczenie dokładnej wartości liczby chromatycznej grafu metodą zachłanną zwykle jest niemożliwe.

RCDiVBEeDmWwM1
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Istnieje jednak metoda kolorowania wierzchołków grafu, która wykorzystuje w swoim działaniu algorytm z nawrotami. Polega to na testowaniu wszystkich konfiguracji przypisania kolorów wierzchołkom oraz wybrania tej, która składa się z najmniejszej liczby kolorów. Przy każdym kroku budowania rozwiązania sprawdzane jest, czy obecne rozwiązanie wygeneruje dobre pokolorowanie albo czy nie przekracza określonej liczby kolorów.

Na powyższym rysunku po prawej stronie znajduje się graf złożony z trzech wierzchołków, który chcemy pokolorować. Po lewej stronie przedstawione jest drzewo z kolejnymi krokami kolorowania grafu przy użyciu algorytmu z nawrotami. Podążając nieprzekreślonymi krawędziami, znajdziemy poprawnie pokolorowany graf.

Poniżej znajduje się specyfikacja oraz pseudokod omówionego tu algorytmu kolorowania wierzchołków grafu.

Specyfikacja problemu:

Dane:

  • V - liczba całkowita; liczba wierzchołków grafu

  • macierz_sąs - macierz sąsiedztwa grafu

Wynik:

  • kolory[1..V] - tablica liczb całkowitych; wyznaczone optymalne kolorowanie grafu

Pseudokod:

Linia 1. funkcja kolizje otwórz nawias okrągły wierzchołek przecinek kolory przecinek macierz podkreślnik sąs zamknij nawias okrągły. Linia 2. dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek długość otwórz nawias okrągły macierz podkreślnik sąs zamknij nawias okrągły wykonuj dwukropek. Linia 3. jeżeli i wykrzyknik znak równości wierzchołek ORAZ macierz podkreślnik sąs otwórz nawias kwadratowy wierzchołek zamknij nawias kwadratowy otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias ostrokątny 0 I kolory otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości kolory otwórz nawias kwadratowy wierzchołek zamknij nawias kwadratowy dwukropek. Linia 4. zwróć prawda. Linia 5. zwróć fałsz. Linia 8. V ← liczba wierzchołków grafu średnik liczba całkowita. Linia 9. macierz podkreślnik sąs ← macierz sąsiedztwa grafu. Linia 10. kolory otwórz nawias kwadratowy 1 kropka kropka V zamknij nawias kwadratowy ← tablica wypełniona zerami otwórz nawias okrągły 0 oznacza brak koloru zamknij nawias okrągły. Linia 11. dla liczba podkreślnik kolorów znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek V wykonuj dwukropek. Linia 12. wierzchołek znak równości 1. Linia 13. dopóki wierzchołek zamknij nawias ostrokątny 0 wykonuj dwukropek. Linia 14. czy podkreślnik koliduje ← prawda. Linia 15. dopóki czy podkreślnik koliduje znak równości prawda ORAZ kolory otwórz nawias kwadratowy wierzchołek zamknij nawias kwadratowy otwórz nawias ostrokątny liczba podkreślnik kolorów wykonuj dwukropek. Linia 16. kolory otwórz nawias kwadratowy wierzchołek zamknij nawias kwadratowy ← kolory otwórz nawias kwadratowy wierzchołek zamknij nawias kwadratowy plus 1. Linia 17. czy podkreślnik koliduje ← kolizje otwórz nawias okrągły wierzchołek przecinek kolory przecinek macierz podkreślnik sąs zamknij nawias okrągły. Linia 18. jeżeli czy podkreślnik koliduje znak równości fałsz dwukropek. Linia 19. jeżeli wierzchołek znak równości V dwukropek. Linia 20. wyświetl kolory. Linia 21. zakończ. Linia 22. w przeciwnym wypadku dwukropek. Linia 23. wierzchołek ← wierzchołek plus 1. Linia 24. w przeciwnym wypadku dwukropek. Linia 25. kolory otwórz nawias kwadratowy wierzchołek zamknij nawias kwadratowy ← 0. Linia 26. wierzchołek ← wierzchołek minus 1.

Indeks chromatyczny

Kolorowanie grafu można również rozumieć jako przypisywanie kolorów krawędziom. Aby kolorowanie krawędzi zostało uznane za poprawne, każda para krawędzi wychodząca z wierzchołka musi mieć przypisany inny kolor. Jeśli do pokolorowania krawędzi grafu użyto najmniejszej możliwej liczby kolorów, to takie kolorowanie krawędzi uznajemy za optymalne. Najmniejszą liczbą kolorów potrzebną do pokolorowania krawędzi grafu nazywamy indeksem chromatycznymindeks chromatycznyindeksem chromatycznym grafu.

Grafy planarne

Graf planarnygraf planarnyGraf planarny to graf, który można narysować na płaszczyźnie w taki sposób, aby żadne dwie krawędzie nie przecinały się ze sobą.

Tego rodzaju grafy mogą służyć do reprezentacji mapy podziałów terytorialnych. Dla przykładu załóżmy, że za pomocą grafu chcemy przedstawić mapę administracyjną Polski. Każde województwo będzie reprezentowane przez wierzchołek grafu. Z kolei krawędzie połączą dwa wierzchołki odpowiadające sąsiednim województwom.

Planarność grafu jest blisko związania z kolorowaniem grafu oraz liczbą chromatyczną. Jedno z popularniejszych twierdzeń matematycznych — twierdzenie o czterech barwach — określa liczbę kolorów, których zawsze można użyć dla pokolorowania grafu planarnego.

o czterech barwach
Twierdzenie: o czterech barwach

Wierzchołki każdego grafu planarnego można pokolorować czterema kolorami. W związku z tym liczba chromatyczna każdego grafu planarnego jest nie większa niż 4.

R15y0IRY3xYtj1
Kolorowanie mapy administracyjnej Polski i równoważnego grafu planarnego.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Teza twierdzenia o czterech barwach początkowo została zaproponowana w kontekście kolorowania mapy. Pomimo prostego sformułowania twierdzenie było bardzo trudne do udowodnienia. Po raz pierwszy jego prawdziwość wykazali Wolfgang HakenKenneth Appel w 1976 roku. Dowód był bardzo złożony i polegał na sprawdzeniu z pomocą komputera niemalże dwóch tysięcy szczególnych przypadków. Było to pierwsze w historii użycie komputera do przeprowadzenia dowodu matematycznego.

Układanie planu lekcji

Kolorowanie grafu okazuje się przydatne choćby przy układaniu planów lekcji.

Dana jest lista przedmiotów, dla których jedna lekcja trwa 45 minut. Niestety niektóre pary zajęć kolidują ze sobą i  z różnych powodów nie mogą odbyć się o tej samej godzinie - na przykład jeśli obejmują tę samą grupę uczniów.

Nr

Przedmiot

Kolizja z przedmiotami

1

Język polski

4, 3

2

Matematyka

3, 4, 6, 7

3

Informatyka

1, 2, 4, 7

4

Język angielski

1, 2, 3

5

Chemia

6

6

Biologia

2, 5

7

Fizyka

2, 3

Załóżmy, że naszym zadaniem jest przypisanie poszczególnym zajęciom godziny rozpoczęcia. Optymistycznie dążymy do tego, aby cały plan zajmował jak najmniej godzin. Problem sformułowany w ten sposób znajduje rozwiązanie w teorii grafów.

R1QGjuKDjTt0Q1
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Lista konfliktów przedmiotów może zostać potraktowana jak lista sąsiedztwa grafu. Każde dwa przedmioty, które ze sobą kolidują, zostaną połączone krawędzią. Jeden przedział czasowy odpowiada kolorowi, który przypiszemy wierzchołkom, czyli zajęciom. Przykładowe kolorowanie możemy zobaczyć na powyższym rysunku.

Planowanie przydziału miejsc

Jeszcze innym zastosowaniem kolorowania grafu może być planowanie układu miejsc dla gości w ramach spotkań towarzyskich czy dużych przyjęć. Przyjrzyjmy się temu na przykładzie niewielkiej grupy.

Mając daną listę gości, przydzielamy im poszczególne miejsca przy pewnej liczbie stołów. Możemy się spodziewać, że niektórzy z gości będą się znali, wobec tego chcemy, aby zasiedli przy tym samym stole. Załóżmy również, że pewni uczestnicy nie przepadają za sobą, więc najlepiej będzie, jeśli dostaną miejsca przy osobnych stołach.

Nr

Imię

Znajomi

Nie przepada za

1

Zosia

2, 4

5, 6

2

Albert

1

3

Andrzej

7

4

Julia

1

5

Marta

1

6

Daniel

7

1

7

Marcin

6

3

Dla tak sformułowanej sytuacji możemy postawić kilka pytań:

  • Ile wynosi minimalna liczba stołów potrzebnych do zaplanowania miejsc, tak aby każdy z gości był zadowolony?

  • Jakie może być przykładowe przypisanie miejsc gościom przy wykorzystaniu najmniejszej liczby stołów?

  • Jeśli liczba stołów i miejsc przy stole jest ograniczona, to czy możliwe jest takie przydzielenie miejsc, aby nie doszło do spotkania dwójki nieprzepadających za sobą gości przy jednym stole?

  • Ile minimalnie miejsc potrzeba na każdy stolik, aby było to możliwe przy ograniczonej liczbie stołów?

Problem przydzielania miejsc dla gości możemy przedstawić, odwołując się do teorii grafów. Każdy wierzchołek niech odpowiada jednemu uczestnikowi. Jeśli dwóch gości nie przepada za sobą, wówczas łączymy krawędzią odpowiadające im wierzchołki.

R1YuFgLADfxwc1
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Przypisywanie stołów gościom jest równoznaczne z kolorowaniem wierzchołków grafu. Numer stołu to w istocie numer koloru. Goście, w przypadku których reprezentujące ich wierzchołki mają ten sam kolor, zasiądą przy jednym stole. Na powyższym rysunku został przedstawiony jeden z wielu możliwych podziałów gości na stoły.

Słownik

graf planarny
graf planarny

graf, który można narysować na płaszczyźnie w taki sposób, aby żadne dwie krawędzie nie przecinały się ze sobą

indeks chromatyczny
indeks chromatyczny

minimalna liczba kolorów potrzebna do prawidłowego pokolorowania krawędzi grafu

liczba chromatyczna
liczba chromatyczna

minimalna liczba kolorów potrzebna do prawidłowego pokolorowania wierzchołków grafu

problem NP‑trudny
problem NP‑trudny

problem, który jest co najmniej tak trudny do rozwiązania, jak najtrudniejsze problemy w klasie NP, czyli takie, których rozwiązanie można znaleźć w czasie wielomianowym (proporcjonalnym do wielkości danych wejściowych)