Планирование в жадных алгоритмах

Опубликовано: 23 Сентября, 2022

В этой статье мы обсудим различные алгоритмы планирования для жадных алгоритмов. Многие задачи планирования можно решить с помощью жадных алгоритмов.

Постановка задачи: Имея N событий с указанием времени их начала и окончания, найдите расписание, включающее как можно больше событий. Невозможно выбрать событие частично. Рассмотрим следующие события:

  • В этом случае максимальное количество событий равно двум. В качестве выбранных событий B и D используются следующие:
  • Для решения задачи можно придумать несколько жадных алгоритмов.

Алгоритмы, которые работают с каждым случаем:

Алгоритм 1 :

  • Первая идея состоит в том, чтобы выбрать как можно более короткие события. В примере этот алгоритм выбирает следующие события:
  • Однако выбор коротких событий не всегда является правильной стратегией. Например, алгоритм не работает в следующем случае:
  • Если выбрано короткое событие, можно выбрать только одно событие. Однако можно было бы выбрать оба длинных события.

Алгоритм 2 :

  • Другая идея состоит в том, чтобы всегда выбирать следующее возможное событие, которое начинается как можно раньше. Этот алгоритм выбирает следующие события:
  • Тем не менее, приведен встречный пример для этого алгоритма. В этом случае алгоритм выбирает только одно событие:
  • Если выбрано первое событие, другие события выбрать невозможно. Однако можно было бы выбрать два других события.

Алгоритм 3 :

  • Третья идея состоит в том, чтобы всегда выбирать следующее возможное событие, которое заканчивается как можно раньше. Этот алгоритм выбирает следующие события:
  • Оказывается, этот алгоритм всегда дает оптимальное решение.
  • Причина этого в том, что всегда оптимальным выбором будет сначала выбрать событие, которое заканчивается как можно раньше.
  • После этого оптимальным выбором является выбор следующего события с использованием той же стратегии и т. д., пока любое другое событие не может быть выбрано.
  • Один из способов работы алгоритма — рассмотреть, что произойдет, если сначала выбрать событие, которое заканчивается позже, чем событие, которое заканчивается как можно раньше.
  • Теперь, имея не более равного количества вариантов выбора следующего события.
  • Следовательно, выбор события, которое заканчивается позже, никогда не даст лучшего решения, и жадный алгоритм верен.