Przeskocz do treści

Delta mi!

Informatyczny kącik olimpijski

Myjnia samochodowa

Tomasz Kulczyński

o artykule ...

  • Publikacja w Delcie: październik 2011
  • Publikacja elektroniczna: 02-10-2011
  • Wersja do druku [application/pdf]: (139 KB)

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

obrazek

Zadanie. Do myjni ustawiła się długa kolejka samochodów (jest ich math), z których każdy należy wyczyścić w środku i umyć od zewnątrz. Dla samochodu o numerze math czynności te zajmują, odpowiednio, math oraz math 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 math nie różnią się zbytnio, podobnie jest w przypadku liczb math Zachęcamy Czytelnika do zastanowienia się, czy dodatkowe założenie, że math i analogicznie dla math 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 math najkrótszy czas, w którym można zakończyć pracę. Łatwo zauważyć, że math  math oraz math Niech math Chcielibyśmy ułożyć plan, w którym math Jeśli math rozważmy math które realizuje to maksimum. Wiemy wówczas, iż math oraz math czyli możemy ustalić, że jeden z pracowników najpierw czyści wszystkie samochody poza math a drugi w tym czasie czyści samochód math po czym zamieniają się. W ten sposób otrzymujemy plan spełniający math Pozostał nam przypadek, w którym math Możemy w nim bez straty ogólności założyć, że math 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 math  math  math bo mielibyśmy, wbrew założeniom, math Bez straty ogólności załóżmy, że math Jeśli dodatkowo math to widzimy, że można ustawić samochody następująco: u pierwszego pracownika math a u drugiego math Jeśli zaś nie, to naturalnie math a stąd math i sytuacja jest zupełnie analogiczna.

obrazek

Załóżmy w takim razie, że umiemy rozplanować czyszczenie dowolnych math samochodów, i zastanówmy się, jak wyczyścić dane math samochodów ( math). Niech dwoma samochodami o najmniejszej sumie math będą te o numerach math i math 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 math i  math Dla nowego zestawu samochodów mamy:

pict

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