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.