Informatyczny kącik olimpijski
Myjnia samochodowa
Zadanie omawiane w tym kąciku pochodzi z obozu treningowego drużyn rosyjskich z 2008 roku (autor zadania: Andrew Stankevich).

Zadanie. Do myjni ustawiła się długa kolejka samochodów (jest ich
), z których każdy należy wyczyścić w środku i umyć
od zewnątrz. Dla samochodu o numerze
czynności te zajmują,
odpowiednio,
oraz
sekund i są wykonywane niezależnie
przez dwie różne osoby – jeden pracownik myje wszystkie samochody od
zewnątrz, a drugi czyści wszystkie od wewnątrz. Każdy z pracowników
może dowolnie ustalić kolejność czyszczenia samochodów. Każdy
pracownik może pracować naraz tylko nad jednym samochodem i każdy
samochód może być w jednej chwili czyszczony przez tylko jednego
pracownika. Zadaniem jest takie ustalenie kolejności czyszczenia przez obu
pracowników, żeby jak najszybciej zakończyć całą pracę.
W prawdziwej myjni prawdopodobnie liczby
nie różnią się zbytnio,
podobnie jest w przypadku liczb
Zachęcamy Czytelnika do zastanowienia
się, czy dodatkowe założenie, że
i analogicznie dla
pomaga w znalezieniu rozwiązania. W oryginalnym zadaniu
jednak takich założeń nie było, zastanówmy się więc, jak je rozwiązać
bez tego.
Oznaczmy przez
najkrótszy czas, w którym można zakończyć pracę. Łatwo
zauważyć, że
oraz
Niech
Chcielibyśmy ułożyć plan,
w którym
Jeśli
rozważmy
które realizuje to maksimum. Wiemy wówczas, iż
oraz
czyli możemy ustalić, że jeden
z pracowników najpierw czyści wszystkie samochody poza
a drugi
w tym czasie czyści samochód
po czym zamieniają się. W ten
sposób otrzymujemy plan spełniający
Pozostał nam przypadek,
w którym
Możemy w nim bez straty ogólności
założyć, że
W takiej sytuacji przeprowadzimy
rozumowanie indukcyjne. Jeśli są co najwyżej dwa samochody, sprawa jest
oczywista. Jeśli są dokładnie trzy, to nie mogą zachodzić jednocześnie
nierówności
bo mielibyśmy,
wbrew założeniom,
Bez straty ogólności
załóżmy, że
Jeśli dodatkowo
to
widzimy, że można ustawić samochody następująco: u pierwszego
pracownika
a u drugiego
Jeśli zaś nie, to
naturalnie
a stąd
i sytuacja jest zupełnie
analogiczna.

Załóżmy w takim razie, że umiemy rozplanować czyszczenie dowolnych
samochodów, i zastanówmy się, jak wyczyścić dane
samochodów (
). Niech dwoma samochodami o najmniejszej
sumie
będą te o numerach
i
Ustalmy, że
samochód drugi będzie czyszczony przez każdego z pracowników tuż po
pierwszym, oraz załóżmy dodatkowo, że w czasie, gdy jeden z pracowników
czyści którykolwiek z tych samochodów, drugi pracownik nie może
czyścić drugiego z tych samochodów. Innymi słowy, zamieniamy
te dwa samochody w jeden, o współczynnikach
i
Dla nowego zestawu samochodów mamy:

Zauważmy, że z wyboru samochodów
i
wynika, że
Stąd
czyli
ostatecznie
Z założenia indukcyjnego
otrzymanych
po zamianie samochodów można wyczyścić w czasie
a więc
tym bardziej wyjściowe
samochodów można wyczyścić w czasie
To pokazuje, że
jest szukanym minimalnym czasem
czyszczenia samochodów w dowolnym przypadku.
Zauważmy, że nasz dowód jest w pełni konstruktywny: tak długo, jak
i
wybieramy dwa samochody
o najmniejszej sumie
i łączymy je w jeden. Przy użyciu
odpowiedniej struktury danych (chociażby kopca) tę procedurę można
zrealizować w czasie
Następnie rozwiązujemy problem dla
trzech samochodów lub dla przypadku
co możemy
wykonać w czasie stałym lub, odpowiednio,
Na końcu
odzyskujemy rozwiązanie całości poprzez podstawianie, kolejno, par
samochodów w miejsce tych sztucznie stworzonych.