Przeskocz do treści

Delta mi!

Informatyczny kącik olimpijski

Plan zajęć

Tomasz Idziaszek

o artykule ...

  • Publikacja w Delcie: maj 2009
  • Publikacja elektroniczna: 18-06-2010

Tym razem omawiamy zadanie o układaniu planu zajęć. Zadanie to pojawiło się na Obozie Naukowo-Treningowym im. A. Kreczmara w 2007 r.

|------|------|------|
|godz.-|sala 1|-sala2-|
|  1   |(1,2) |  —   |
|  2   |(2,2) |  —   |
|  3   |(1,1) |(2,2) |
|      |      |      |
---4----(1,1)--(2,2)--

Dla przykładu załóżmy, że w szkole zatrudnionych jest dwóch nauczycieli, są dwie klasy oraz sześć przedmiotów: math 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 math ma uczyć klasę math przedmiotów, to mamy mkrawędzi łączących wierzchołki math i math w grafie). Stopniem wierzchołka nazwiemy liczbę krawędzi, które kończą się w tym wierzchołku. Ponadto przez math oznaczymy maksymalny stopień wierzchołka w grafie (w naszym przykładzie math).

obrazek

Niech math będzie minimalną liczbą, dla której istnieje plan zajęć, który wymaga otwarcia szkoły na dokładnie math godzin. Z treści zadania wynikają dwa oczywiste dolne ograniczenia na math 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 mathCo więcej, jeśli mamy do dyspozycji s sal, to z zasady szufladkowej Dirichleta wynika, że math Okazuje się, że są to jedyne ograniczenia i

display-math

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 math że żadne dwie krawędzie z math nie mają końca w tym samym wierzchołku. Kolorowaniem krawędziowym grafu na math kolorów nazywamy rozkład zbioru krawędzi na sumę math rozłącznych skojarzeń (część z nich może być pusta). Zatem, aby rozwiązać zadanie, musimy znaleźć rozkład grafu na math rozłącznych skojarzeń, z których każde będzie zawierało co najwyżej math 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 math kolorów. W tym celu podamy algorytm, który będzie kolorował kolejne krawędzie grafu. Powiedzmy, że chcemy teraz pokolorować krawędź math W wierzchołku u na pewno nie użyliśmy jeszcze wszystkich kolorów; powiedzmy, że został czerwony. Będziemy zatem chcieli pokolorować math 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ę math , 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ć math na czerwono. Zauważmy, że ścieżka nie mogła zawierać wierzchołka u, bo musiałaby wchodzić do niego niebieską krawędzią, zatem math byłoby cyklem nieparzystej długości, którego w grafie dwudzielnym być nie może.

Umiemy zatem rozłożyć graf na sumę math rozłącznych skojarzeń; niektóre z nich mogą jednakże mieć rozmiar większy niż math Aby to naprawić, przyda nam się jeszcze jedna obserwacja: jeśli math i math są rozłącznymi skojarzeniami i math , to istnieją rozłączne skojarzenia math i math takie że math i math oraz math 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 math i math ) – opracowanie jego szczegółów pozostawiam Czytelnikowi.

Teraz do podziału dodajemy math 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ż math, to na końcu wszystkie skojarzenia będą miały rozmiar math lub math, czyli taki, jak trzeba.

Zauważmy na koniec, że zarówno kolorowanie grafu, jak i poprawianie kolorowania, można zrealizować w czasie math