Как реализовать оптимальную расстановку расписания занятий в уч. заведении?
Есть задача - на основе данных о преподах, группах, предметах, количестве часов в неделю для каждого предмета расставить корректное расписание занятий, желательно, оптимальное (без окон у групп и преподов, желательно без перепадов времени (сегодня первая смена, завтра вторая), по возможности, чтобы не было такого, что у препода всего 1 пара в день). В какую сторону копать? Какие есть алгоритмы?