Informatyczny kącik olimpijski
Plan zajęć
Tym razem omawiamy zadanie o układaniu planu zajęć. Zadanie to pojawiło się na Obozie Naukowo-Treningowym im. A. Kreczmara w 2007 r.
Dla przykładu załóżmy, że w szkole zatrudnionych jest dwóch nauczycieli, są dwie klasy oraz sześć przedmiotów: Tutaj przedmioty opisujemy jako pary (numer nauczyciela, numer klasy). Zauważmy, że dany nauczyciel może wykładać danej klasie więcej niż jeden przedmiot.
Jeśli mamy do dyspozycji tylko jedną salę wykładową, to szkoła będzie musiała być otwarta przez 6 godzin (żadne zajęcia nie mogą odbywać się równolegle, a mamy ich sześć). Ale już dysponując dwiema salami, można skrócić ten czas do czterech godzin. Optymalny plan może wyglądać tak jak na rysunku obok.
Zadanie można sformułować w języku teorii grafów. Zbudujmy (multi)graf dwudzielny, którego wierzchołkami są nauczyciele i klasy, a krawędziami przedmioty (jeśli nauczyciel ma uczyć klasę przedmiotów, to mamy mkrawędzi łączących wierzchołki i w grafie). Stopniem wierzchołka nazwiemy liczbę krawędzi, które kończą się w tym wierzchołku. Ponadto przez oznaczymy maksymalny stopień wierzchołka w grafie (w naszym przykładzie ).
Niech będzie minimalną liczbą, dla której istnieje plan zajęć, który wymaga otwarcia szkoły na dokładnie godzin. Z treści zadania wynikają dwa oczywiste dolne ograniczenia na Ponieważ żaden nauczyciel nie może prowadzić dwóch zajęć naraz ani żadna klasa nie może uczestniczyć w więcej niż jednych zajęciach naraz, więc Co więcej, jeśli mamy do dyspozycji s sal, to z zasady szufladkowej Dirichleta wynika, że Okazuje się, że są to jedyne ograniczenia i
jest optymalnym rozwiązaniem zadania.
Zanim to wykażemy, przypomnijmy kilka pojęć z teorii grafów. Skojarzeniem w grafie nazywamy taki podzbiór krawędzi że żadne dwie krawędzie z nie mają końca w tym samym wierzchołku. Kolorowaniem krawędziowym grafu na kolorów nazywamy rozkład zbioru krawędzi na sumę rozłącznych skojarzeń (część z nich może być pusta). Zatem, aby rozwiązać zadanie, musimy znaleźć rozkład grafu na rozłącznych skojarzeń, z których każde będzie zawierało co najwyżej krawędzi (krawędzie należące do danego skojarzenia reprezentują przedmioty, które będą prowadzone w tym samym czasie – ich przydział do sal jest dowolny).
Udowodnimy najpierw, że każdy graf dwudzielny można pokolorować na kolorów. W tym celu podamy algorytm, który będzie kolorował kolejne krawędzie grafu. Powiedzmy, że chcemy teraz pokolorować krawędź W wierzchołku u na pewno nie użyliśmy jeszcze wszystkich kolorów; powiedzmy, że został czerwony. Będziemy zatem chcieli pokolorować na czerwono. Jeśli w v nie użyliśmy czerwonego, to możemy to zrobić. W przeciwnym przypadku nie użyliśmy tam jakiegoś innego koloru (np. niebieskiego). Konstruujemy teraz w grafie ścieżkę , której krawędzie są na przemian czerwone i niebieskie. Szukamy przy tym ścieżki maksymalnej, tj. (jakiejkolwiek) takiej, której nie da się już przedłużyć. Ścieżka kiedyś się skończy (żaden wierzchołek nie może wystąpić na niej dwukrotnie, bo to by oznaczało, że pewne dwie krawędzie, które się w nim kończą, są obie czerwone albo obie niebieskie) i wtedy będziemy mogli zamienić kolory na tej ścieżce (niebieski na czerwony i na odwrót) i pomalować na czerwono. Zauważmy, że ścieżka nie mogła zawierać wierzchołka u, bo musiałaby wchodzić do niego niebieską krawędzią, zatem byłoby cyklem nieparzystej długości, którego w grafie dwudzielnym być nie może.
Umiemy zatem rozłożyć graf na sumę rozłącznych skojarzeń; niektóre z nich mogą jednakże mieć rozmiar większy niż Aby to naprawić, przyda nam się jeszcze jedna obserwacja: jeśli i są rozłącznymi skojarzeniami i , to istnieją rozłączne skojarzenia i takie że i oraz Dowód tej obserwacji jest analogiczny jak dowód twierdzenia Berge’a o istnieniu ścieżki powiększającej względem skojarzenia, które nie jest najliczniejsze (można pokazać, że istnieje ścieżka długości nieparzystej, której krawędzie naprzemiennie należą do i ) – opracowanie jego szczegółów pozostawiam Czytelnikowi.
Teraz do podziału dodajemy pustych skojarzeń. Dopóki możemy znaleźć dwa skojarzenia, których moce różnią się o więcej niż 1, aplikujemy do nich powyższą obserwację. Ponieważ , to na końcu wszystkie skojarzenia będą miały rozmiar lub , czyli taki, jak trzeba.
Zauważmy na koniec, że zarówno kolorowanie grafu, jak i poprawianie kolorowania, można zrealizować w czasie