Ten problem jest trudniejszy niż się wydaje.
Jak wspominali inni, jest to problem NP-zupełny, ale przeanalizujmy, co to oznacza.
Zasadniczo oznacza to, że musisz spojrzeć na wszystkie możliwe kombinacje.
Ale „spójrz na” niewiele mówi ci, co musisz zrobić.
Generowanie wszystkich możliwych kombinacji jest łatwe. Może generować ogromną ilość danych, ale nie powinieneś mieć większych problemów ze zrozumieniem koncepcji tej części problemu.
Drugi problem polega na ocenie, czy dana możliwa kombinacja jest dobra, zła lub lepsza od poprzedniego „dobrego” rozwiązania.
W tym celu potrzebujesz czegoś więcej niż tylko „czy to możliwe rozwiązanie”.
Na przykład, czy ten sam nauczyciel pracuje bezpośrednio 5 dni w tygodniu przez X tygodni? Nawet jeśli jest to skuteczne rozwiązanie, może nie być lepszym rozwiązaniem niż naprzemiennie dwie osoby, tak aby każdy nauczyciel pracował po jednym tygodniu. Och, nie pomyślałeś o tym? Pamiętaj, że to ludzie, z którymi masz do czynienia, a nie tylko problem z alokacją zasobów.
Nawet jeśli jeden nauczyciel mógłby pracować w pełnym wymiarze godzin przez 16 tygodni bez przerwy, może to być nieoptymalne rozwiązanie w porównaniu z rozwiązaniem, w którym próbujesz zmieniać nauczycieli na przemian, a tego rodzaju równoważenie jest bardzo trudne do wbudowania w oprogramowanie.
Podsumowując, stworzenie dobrego rozwiązania tego problemu będzie wiele warte dla wielu, wielu ludzi. Dlatego nie jest łatwo rozwiązać i rozwiązać problem. Bądź przygotowany na wyznaczenie celów, które nie są w 100% i nazwanie ich „wystarczająco dobrymi”.