Похоже, что задачу можно легко формализовать в терминах целочисленного (а точнее даже булева) программирования, если ввести (как обычно в подобных задачах) булевы переменные
или
в зависимости от присутствия человека номер
на вахте номер
(под "вахтой" я понимаю пару: объект и период времени).
Тогда постоянное присутствие кого-то на определенном объекте в определенный период будет задаваться требованием неравенства нулю суммы
по всем
для каждого фиксированного
. Впрочем и достаточность мест в общаге будет задаваться похожим условием, разве что вместо
возможно надо будет суммировать
и т.д. и т.п.
Ну а про приближенное (или даже точное) решение задач целочисленного программирования все (или почти все) известно. Можно, например, использоваться релаксацию исходной задачи до задачи линейного программирования и т.д.