Этот вопрос навеян другим вопросом о распределении процессов. Это поворот и расширение проблемы, обсуждаемой там.
У нас есть n процессов, и нам нужно выделить их как можно меньшему числу процессоров. У каждого процесса есть запланированное время начала и окончания, которое мы определим в терминах единиц времени, пронумерованных от 1; процесс будет выполняться в течение некоторой непрерывной последовательности единиц времени. Затем процессор может быть запланирован для запуска любого количества непересекающихся процессов.
Очевидный жадный алгоритм:
На каждом этапе планируйте максимальный непересекающийся набор оставшихся процессов на следующем процессоре.
Как выбрать максимальное непересекающееся множество? Мы оставим алгоритм как недетерминированный, так как это упрощает анализ и разделение на два подвопроса.
По сути, предыдущий вопрос касался поведения в случае неудачного алгоритма: каково наименьшее n, для которого этот алгоритм может произвести субоптимальное распределение ( т.е. требуют больше процессоров, чем необходимо)? Получается, что ответ n=4. Бывают случаи, когда достаточно двух процессоров, но для жадного алгоритма может потребоваться три процессора (хотя, если повезет, он сделает это за два шага).
Этот вопрос касается того, что произойдет, если недетерминизму всегда везет:
При каком наименьшем n этот алгоритм гарантированно будет неоптимальным? То есть, каково наименьшее n, для которого мы можем найти набор процессов, где жадный алгоритм должен использовать больше процессов, чем необходимо?
Поскольку Stack Overflow активно поощряет задавать и отвечать на ваши собственные вопросы, я сделаю это здесь, и вы можете сказать мне, можно ли улучшить мой частичный ответ!