Автор: Пользователь скрыл имя, 27 Декабря 2011 в 18:28, реферат
Целью моей работы является определение классов задач Р, NP и NP-полный; объяснение разницы между задачами принятия решений и оптимизации; объяснение причин, по которым задача относится к классу NP; разработка программ на языке высокого уровня типа Pascal и демонстрация решения рассматриваемых алгоритмов в программе Macromedia Flash.
Задачи, которые решались при написании курсовой работы следующие:
1. Написать программы на языке Pascal.
2. Проанализировать быстродействие алгоритмов.
{передаем Nab - номер набранной группы, OstW-вместимость, stoim-цена набранного (еще не набрали нисколько)}
Procedure Search(Nab, OstW, Stoim:integer);
var i:integer;
begin
{здесь
OstW-вес который следует
{Nab - набор
предметов если наполнили
if (Nab > N) and (Stoim > Max) then begin
{найдено решение}
BestP:=NowP;
Max:=Stoim;
End
{иначе если количество взятых <= обьема.
забиваем рюкзак дальше}
else if Nab<=N then
{иначе
если набрано меньше чем
for i:=0 to OstW div W[Nab] do begin
{идем от 0 до ост. места}
NowP[Nab]:=i;
{берем предмет Nab пока есть место в ранце}
Search(Nab+1,OstW-i*W[Nab],
{после
каждого взятия предмета
стоимость набора и уменьшаем место в рюкзаке
на вес предмета, так же увеличиваем количество
раз взятия предмета}
end;
По существу данный метод - это вариация полного перебора, с исключениями заведомо не оптимальных решений. Для полного перебора можно построить дерево решений. Если у нас есть какое то оптимальное решение P, мы пытаемся улучшить его, но если на рассматриваемой в текущий момент ветви решение заведомо хуже чем P то следует остановить поиск и выбрать другую ветвь для рассмотрения. Например, на рис 4. есть ограничение на вес рюкзака W=5. Тогда используя метод ветвей и границ можно сократить дерево перебора до такого, рис 5. Видно сразу, что количество вариантов для перебора уменьшилось сразу. А именно осталось 8 вариантов исхода, вместо 24 ранее. Но не всегда получается отсеять достаточно много вариантов чтобы скорость работы была заметно увеличена, всегда можно подобрать такие входные данные, для которых метод ветвей и границ даст оценку по времени идентичную полному перебору.
Рис
5
Минусы Полного перебора
Плюсы Полного перебора
Минусы Метода ветвей и границ
Плюсы Метода ветвей и границ
Минусы Жадного алгоритма
Плюсы Жадного алгоритма
На диаграмме 1. показано соотношение времени работы алгоритмов. По вертикальной оси в 1/10000 секунд. По горизонтальной оси в зависимости от количества предметов. Для ДП алгоритма для количества n предметов брался вес w=10*n, так как скорость работы ДП алгоритма зависит от произведения w *n.
Диаграмма
1
ЗАКЛЮЧЕНИЕ
Итак, какой же практический смысл имеет изучение теории сложности и классификация задач с точки зрения NP-полноты? Ответ очевиден — зачастую гораздо разумнее и эффективнее найти доказательство того, что рассматриваемая задача принадлежит к классу NP-полных, и в соответствие с этим заняться поиском достаточно точных приближенных алгоритмов, нежели безрезультатно тратить время на отыскание полиномиальных алгоритмов ее решения. Ясно, что именно NP-полные задачи играют здесь центральную роль — дело в том, что полиномиальное время является, хоть и первым, но достаточно хорошим приближением понятия «практической разрешимости задачи».
Задача коммивояжера является частичным случаем гамильтоновой задачи о путешественнике. Суть задачи коммивояжера состоит в нахождении суммарной минимальной характеристики (расстояния, стоимости проезда и т.д.), при этом коммивояжер должен пройти все n городов по одному разу, вернувшись в тот город, с которого начал.
Существуют
несколько методов решения
Задача
о коммивояжере имеет множество
обобщений и методы её решения
в различных проявлениях
?????????
В
ходе исследования задачи о рюкзаке
были выявлены три основных алгоритма
решения. Полный перебор, ДП – программирование,
жадный алгоритм. Так же был рассмотрен
Метод ветвей и границ, но как сокращение
полного перебора. Все методы разделены
на две группы. Первая группа – точные
методы, сюда входят ДП – алгоритмы, Полный
перебор и Метод ветвей и границ. Вторая
группа – приближенные методы, к таким
методам относится Жадный алгоритм. Выбор
использования того или иного метода спорный
вопрос, все зависит от постановки задачи,
а так же от того, какие цели поставлены.
Если требуется найти точное решение,
то конечно нужно использовать точные
методы, при небольшом наборе входных
данных (предметов до 10-20), подойдет перебор
или метод ветвей и границ в силу простоты
реализации, при больших, следует использовать
ДП – алгоритм. Если же точность решения
не так важна, или входные данные таковы,
что ни один из точных методов не работоспособен,
остается применять только приближенные
алгоритмы. Но остается возможность комбинирования
различных методов для ускорения, или
даже применение каких либо “уловок”
для конкретного примера. Надеяться же
на построение полиномиального алгоритма
нет смысла, так как данная задача NP-полна.
Безусловно, данная задача очень важна
с точки зрения ее приложения в реальной
жизни. Не смотря на свою “древность”,
рюкзак не только не забывается, наоборот,
интерес к нему задаче растет. Оптимальная
загрузка транспорта помогает сокращать
расходы, получать большую прибыль. Также
задача применяется в криптографии и прикладной
математике.
СПИСОК
ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЕ