Я решаю проблемы с упражнениями из книги Пападимитру и Вазирани «Алгоритмы».
Вопрос состоит в следующем:
На сервере есть n клиентов, ожидающих обслуживания.Время обслуживания, необходимое каждому клиенту, известно заранее: для клиента это минуты.Так, если, например, клиенты обслуживаются в порядке увеличения i, то i-й клиент должен ждать Sum (j = 1 - n) tj минут.
Мы хотим минимизировать общее время ожидания.Дайте эффективный алгоритм для того же.
Моя попытка:
Я подумал о паре подходов, но не мог решить, какой из них лучше или какой-либо другой, который лучше моего.
Подход 1:
Служите им по принципу Round Robin с интервалом времени, равным 5. Однако, когда мне нужно быть более осторожным при выборе интервала времени.Оно не должно быть слишком высоким или низким.Итак, я подумал о выборе временного интервала в качестве среднего значения времени обслуживания.
Подход 2: Предположим, что задания сортируются по времени, которое они занимают, и сохраняются в массиве A [1 ... n]
Сначала подайте A [1], затем A [n], затем A [2], затем A [n-1] и так далее.
Я не могу действительно решить, какое решение будет более оптимальным для этой проблемы.Я что-то упустил.
Спасибо, Чандер