Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка эффективных алгоритмов.doc
Скачиваний:
118
Добавлен:
24.11.2019
Размер:
1.2 Mб
Скачать

8.1.4 Упаковка рюкзака

Имеется набор объектов объемом S1,S2…Sn и стоимостью W1,W2,…Wn. Упаковать рюкзак объемом К так, чтобы его стоимость была максимальной, или – можно ли добиться того, чтобы суммарная стоимость упаковки была по-меньшей мере W.

Эта задача возникает, например, при выборе стратегии вложения денег: объемом здесь является объем различных вложений, стоимостью – предполагаемая величина дохода, а объем рюкзака – размер планируемых капитальных вложений.

8.1.5. Задача о суммах элементов подмножества

Пусть имеется множество объектов различных размеров S1,S2…Sn и некоторая положительная верхняя граница L. Найти набор объектов, сумма размеров которых наиболее близка к L и не превышает этой границы, или – существует ли набор объектов с суммой размеров L. Это – упрощенная версия задачи об упаковке рюкзака.

8.1.6. Задача о планировании работ

Есть набор работ, и известно время, необходимое для завершения каждой из них Т1, Т2…Tn., и сроки D1,D2…Dn, к которым эти работы должны быть обязательно завершены, а также штрафы Р1, Р2, Рn, которые будут наложены при незавершении работы установленные сроки.

Найти порядок работ, минимизирующий накладываемые штрафы, или в другой постановке – есть ли порядок работ, при котором величина штрафа будет не больше P.

8.2. Приближенные эвристические решения nр-полных задач.

Поскольку полиномиальные решения этих задач неизвестны, следует рассмотреть альтернативные возможности, дающие лишь достаточно хорошие ответы – приближенные решения.

8.2.1. Жадные приближенные алгоритмы

На каждой отдельной стадии «жадный» алгоритм выбирает тот вариант, который является локально оптимальным в том или ином смысле. Не каждый «жадный» алгоритм позволяет получить оптимальный результат в целом. Как нередко бывает в жизни, «жадная стратегия» обеспечивает лишь сиюминутную выгоду, в то время как результат в целом может оказаться неблагоприятным.

Существуют задачи, для которых ни один из известных «жадных» алгоритмов не позволяет получить оптимальное решение; тем не менее, имеются «жадные» алгоритмы, которые с большой вероятностью позволяют получать «хорошие» решения. Вообще говоря, если рассматриваемая задача такова, что единственным способом получить оптимальное решение является использование метода полного перебора, тогда «жадный» алгоритм или другой эвристический метод получения хорошего (но не обязательно оптимального) решения может оказаться единственным реальным средством достижения результата.

Как уже обсуждалось, найти точное решение задачи из класса NPС трудно, потому что число требующих проверки возможных комбинаций входных значений чрезвычайно велико. Жадные алгоритмы пытаются сделать наилучший выбор на основе доступной информации.

Для каждого набора входных значений I мы можем создать множество возможных решений PSI. Оптимальное решение это такое решение Sоптимал PSI, что Value(Sоптимал)Value(S’) для всех S’PSI, если мы имеем дело с задачей минимизации, и Value(Sоптимал)Value(S’) для всех S’PSI, если мы имеем дело с задачей максимизации.

Решения, предлагаемые приближенными алгоритмами для задач класса NP, не будут оптимальными, поскольку алгоритмы просматривают только часть массива PSI, зачастую не очень большую.

Качество приближенных алгоритмов можно определить, сравнив полученные решения с оптимальным (если, конечно, известно оптимальное решение):

Q(A)= для задачи минимизации и

Q(A)= для задачи поиска максимума.

Рассмотрим приближенные алгоритмы решения рассмотренных ранее задач. Они не являются единственно возможными, скорее они призваны продемонстрировать многообразие различных подходов.