Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ANALIZ_ALGOR.doc
Скачиваний:
5
Добавлен:
21.08.2019
Размер:
2.31 Mб
Скачать

2. Приближенные методы решения np-задач

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

Задача об упаковке рюкзака. Приближенный алгоритм представляет здесь простой жадный алгоритм, выбирающий наилучшее отношение стоимости к размеру. Сначала мы сортируем список объектов по отношению стоимости к размеру. Каждый объект представляется в виде пары [размер, стоимость]. Для списка объектов [25,50], [20,80], [20,50], [15,45], [30,105], [35,35], [20,10], [10,45] удельные стоимости имеют значения: 2, 4, 2.5, 3, 3.5, 1, 0.5, 4.5. Сортировка удельных стоимостей приводит к списку: [10,45], [20,80], [30,105], [15,45], [20,50], [25,50], [35,35], [20,10]. После этого начинаем заполнять рюкзак последовательно идущими объектами отсортированного списка. Если очередной объект не входит, мы отбрасываем его и переходим к следующему. Так продолжается до тех пор, пока рюкзак не заполнится или список не закончится. Т.о., если емкость рюкзака 80, то мы сможем поместить в него первые четыре объекта суммарным объемом 75 и общей стоимостью 275. Это не оптимальное решение: первые три предмета с добавкой пятого дают объем 80 и суммарную стоимость 280.

Задача о раскраске графа. Это необычная задача: построение раскраски, достаточно близкой к оптимальной, дается столь же сложно, как и построение оптимальной раскраски. Число красок, даваемое наилучшим известным полиномиальным алгоритмом, более чем вдвое превышает оптимальное. Доказано, что если существует полиномиальный алгоритм, раскрашивающий вершины любого графа числом красок, превышающим оптимальное не более, чем вдвое, то существует полиномиальный алгоритм оптимальной раскраски любого графа.

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

Алгоритм последовательной раскраски произвольного графа с вершинами:

- раскрашиваемый граф

Для от 1 до

Делать, пока в есть вершина, соседняя с , покрашенная цветом

Конец внутреннего цикла (пока)

Покрасить вершину цветом

Конец внешнего цикла

Степенью графа называется максимальная степень его вершин. Число красок, используемое приведенным алгоритмом, равно степени графа+1.

Вопросы

  1. В чем заключается основная проблема теории сложности?

  2. Понятие NP-полноты.

  3. Жадные алгоритмы, их основная идея. Примеры жадных алгоритмов.

Литература

  1. Дж. Макконнелл. Основы современных алгоритмов. 2-е дополненное издание. – М.: Техносфера, 2004. – 368 с.

  2. Каханер Д. Численные методы и программное обеспечение / Д.Каханер, К.Моулер, С.Нэш; пер. с англ. Х.Д.Икрамова. — М.: Мир, 2001. — 575 с.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]