государственное бюджетное образовательное учреждение среднего профессионального образования Архангельской области

реклама
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ АРХАНГЕЛЬСКОЙ ОБЛАСТИ
государственное бюджетное образовательное учреждение
среднего профессионального образования
Архангельской области
«ВЕЛЬСКИЙ ЭКОНОМИЧЕСКИЙ ТЕХНИКУМ»
(ГБОУ СПО АО «ВЭТ»)
Дмитроченко М.И.
Учебное пособие по учебной дисциплине
«Теория алгоритмов»
по теме «NP-полные задачи»
Учебное пособие
Вельск 2013
2
Рецензенты: Федяевская К.В., преподаватель ГБОУ СПО АО «ВЭТ».
Рохина С.Н., старший методист ГАОУ СПО Архангельской области
«Вельский сельскохозяйственный техникум»
Дмитроченко М.И.. Учебное пособие по учебной дисциплине «Теория алгоритмов» по теме «NP-полные задачи»: учебное пособие. – Вельск:
ГБОУ СПО «ВЭТ», 2013 г.
Данное учебное пособие предназначено для преподавателей, студентов
и слушателей курсов, изучающих дисциплину «Теория алгоритмов».
Рассмотрено и одобрено на заседании предметной (цикловой) комиссии вычислительных дисциплин ГБОУ СПО АО «ВЭТ», протокол № __1 от «_17_»
мая 2013 года
© Дмитроченко М.И., 2013.
© государственное бюджетное образовательное учреждение среднего профессионального образования Архангельской области «Вельский экономический техникума»
Усл. пч. л. 1,5
3
СОДЕРЖАНИЕ
ВВЕДЕНИЕ .................................................................................................................. 4
ОСНОВНАЯ ЧАСТЬ................................................................................................... 5
1. ФОРМАЛЬНОЕ ОПРЕДЕЛЕНИЕ ......................................................................... 5
2. ЗАДАЧА О ВЫПОЛНИМОСТИ БУЛЕВЫХ ФОРМУЛ .................................... 7
3. КРАТЧАЙШЕЕ РЕШЕНИЕ «ПЯТНАШЕК» РАЗМЕРА ................................... 9
4. ЗАДАЧА КОММИВОЯЖЁРА ............................................................................. 11
5. ПРОБЛЕМА РАСКРАСКИ ГРАФА.................................................................... 17
6. ЗАДАЧА О ВЕРШИННОМ ПОКРЫТИИ .......................................................... 19
7. ЗАДАЧА О ПОКРЫТИИ МНОЖЕСТВА .......................................................... 21
8. ЗАДАЧА О НЕЗАВИСИМОМ МНОЖЕСТВЕ .................................................. 22
ЗАКЛЮЧЕНИЕ ......................................................................................................... 23
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ ..................................................... 24
4
ВВЕДЕНИЕ
Понятие NP - полноты было введено независимо Куком (StephenCook,
1971) и Левиным (журнал «Проблемы передачи информации», 1973,т.9, вып. 3)
и основывается на понятии сводимости одной задачи к другой.
Сводимость может быть представлена следующим образом: если мы
имеем задачу 1 и решающий эту задачу алгоритм, выдающий правильный ответ для всех конкретных проблем, составляющих задачу, а для задачи 2 алгоритм решения неизвестен, то если мы можем переформулировать (свести) задачу 2 в терминах задачи 1, то мы решаем задачу 2.
Таким образом, если задача 1 задана множеством конкретных проблем
DA1, а задача 2 – множеством, и существует функция fs (алгоритм), сводящая
конкретную постановку задачи 2 (dA2) к конкретной постановке задачи (dA1):
fs d(2)DA2) = d(1)DA1, то задача 2 сводима к задаче 1.
Если при этом FA(fs) = О(nk), т.е. алгоритм сведения принадлежит классу Р, то говорят, что задача 1 полиномиально сводится к задаче 2.
Принято говорить, что задача задается некоторым языком, тогда если
задача 1 задана языком L1, а задача 2 - языком L2, то полиномиальная сводимость обозначается следующим образом: L2 ≤рL1.
Определение класса NPC (NP-complete) или класса NP-полных задач
требует выполнения следующих двух условий: во-первых, задача должна
принадлежать классу NP (LNP), и, во-вторых, к ней полиномиально должны сводиться все задачи из класса NP (Lx<рL, для каждого LXNP).
В теории алгоритмов NP-полная задача – задача из класса NP, к которой можно свести любую другую задачу из класса NP за полиномиальное
время. Таким образом, NP-полные задачи образуют в некотором смысле
подмножество «самых сложных» задач в классе NP; и если для какой-то из
них будет найден «быстрый» алгоритм решения, то и любая другая задача из
класса NP может быть решена так же «быстро».
5
ОСНОВНАЯ ЧАСТЬ
1. Формальное определение
Алфавитом называется всякое конечное множество символов (например, {0, 1} или {a, b, c}. Множество всех возможных слов (конечных строк,
составленных из символов этого алфавита) над некоторым алфавитом  обозначается *. Языком L над алфавитом  называется всякое подмножество
множества *, то есть L  *. Задачей распознавания для языка L, называется определение того, принадлежит ли данное слово языку L.
Язык L1 называется сводимым (по Карпу) к языку L2 если существует
функция, f: *→*, вычислимая за полиномиальное время, обладающая следующим свойством: f(x) L2 тогда и только тогда, когда x L1.
Язык L2 называется NP-трудным, если любой язык из класса NP сводится к нему. Язык называют NP-полным, если он NP-труден, и при этом сам
лежит в классе NP.
Таким образом, если будет найден алгоритм, решающий некоторую
(любую) NP-полную задачу за полиномиальное время, то все NP-задачи окажутся в классе Р, то есть будут решаться за полиномиальное время.
Задача называется NP-полной в сильном смысле, если у неё существует
подзадача, которая:
– не является задачей с числовыми параметрами;
– встречающихся в этой задаче ограничено сверху полиномом от длины входа), принадлежит классу NP;
– является NP-полной.
Класс таких задач называется NPCS. Если гипотеза Р  NP верна, то
для NPCS задачи не существует псевдополиномиального алгоритма.
Примерами NP-полных задач являются:
– задача о выполнимости булевых формул;
6
– кратчайшее решение «пятнашек» размера;
– задача коммивояжёра;
– проблема раскраски графа;
– задача о вершинном покрытии;
– задача о покрытии множества;
– задача о независимом множестве.
7
2. Задача о выполнимости булевых формул
Задача выполнимости булевых формул (SAT или ВЫИ) – важная для
теории вычислительной сложности алгоритмическая задача.
Экземпляром задачи SAT является булева формула, состоящая только
из имен переменных, скобок и операций (И), (ИЛИ) и (НЕ). Задача заключается в следующем: можно ли назначить всем переменным, встречающимся в
формуле, значения ложь и истина так, чтобы формула стала истинной.
Согласно теореме Кука, доказанной Стивеном Куком в 1971-м году, задача SAT для булевых формул, записанных в конъюнктивной нормальной
форме, является NP-полной. Требование о записи в конъюнктивной форме
существенно, так как, например, задача SAT для формул, представленных в
дизъюнктивной нормальной форме, тривиально решается за линейное время
в зависимости от размера записи формулы.
Чтобы четко сформулировать задачу распознавания, необходимо условиться об алфавите, с помощью которого задаются экземпляры языка. Этот
алфавит должен быть фиксирован и конечен. В своей книге Хопкрофт, Мотвани и Ульман предлагают использовать следующий алфавит: {«», «»,
«», «(», «)», «X», «0», «1»}. При использовании такого алфавита скобки и
операторы записываются естественным образом, а переменные получают
следующие имена: xl, x10, x11, х100 и т.д., согласно их номерам, записанным
в двоичной системе счисления.
Пусть некоторая булева формула, записанная в обычной математической нотации, имела длину N символов. В ней каждое вхождение каждой переменной было описано хотя бы одним символом, следовательно, всего в
данной формуле не более N переменных.
Значит, в предложенной выше нотации каждая переменная будет записана с помощью O (log N) символов. В таком случае, вся формула в новой
нотации будет иметь длину O (log N) символов, то есть длина строки возрас-
8
тет в полиномиальное число раз. Например, формула a(bc) примет вид
х1( x10 x11).
В 1971-м году в статье Стивена Кука был впервые введен термин «NPполная задача», и задача SAT была первой задачей, для которой доказывалось это свойство.
В доказательстве теоремы Кука каждая задача из класса NP в явном виде сводится к SAT. После появления результатов Кука была доказана NPполнота для множества других задач. При этом чаще всего для доказательства NP-полноты некоторой задачи приводится полиномиальное сведение задачи SAT к данной задаче, возможно в несколько шагов, то есть с использованием нескольких промежуточных задач.
9
3. Кратчайшее решение «пятнашек» размера
Пятнашки – популярная головоломка, придуманная в 1878 году Ноем
Чепмэном. Представляет собой набор одинаковых квадратных костяшек с
нанесёнными числами, заключённых в квадратную коробку. Длина стороны
коробки в четыре раза больше длины стороны костяшек для набора из
15 элементов (и в три раза больше для набора в 8 элементов), соответственно
в коробке остаётся незаполненным одно квадратное поле. Цель игры – перемещая костяшки по коробке добиться упорядочивания их по номерам. желательно сделав как можно меньше перемещений.
С 1891 года до самой смерти Сэмюэл Лойд считал, что изобрёл головоломку именно он. Однако существуют доказательства того, что он был непричастен к созданию «пятнашек». Настоящим изобретателем был Ной Палмер Чепмэн, почтмейстер из Канасготы, который ещё в 1874 году показывал
друзьям головоломку, состоящую из шестнадцати пронумерованных квадратиков, которые надо было сложить в ряды по четыре штуки так, чтобы сумма
чисел в каждом ряду была равна 34. Затем сын Ноя Чепмэна, Фрэнк Чепмэн
привёз доработанные головоломки в Сиракузы (штат Нью-Йорк), а затем в
Хартфорд (Коннектикут), где слушатели Американской школы для слабослышащих начали производство головоломки. К 1879 году она уже продавалась не только в Хартфорде, но и в Бостоне. Тогда о «пятнашках» узнал
художник по дереву Маттиас Райе. В декабре 1879 года он начал бизнес по
производству новой головоломки под названием «Драгоценная головоломка»
(англ. Gem Puzzle). В начале 1880 года некий Чарльз Неви, дантист из Вустера, привлёк внимание общественности, предложил денежное вознаграждение
за решение задачи собирания головоломки, что добавило популярности новой забаве. Весной того же года игра достигла Европы. 21 февраля 1880 года
Ной Чепмэн попытался оформить патент на своё изобретение (патент назывался «Головоломка из бриллиантовых блоков», «Block Solitaire Puzzle»), од-
10
нако заявка на патент была отклонена, так как мало отличалась от уже
оформленного тремя годами ранее патента «Хитрые блоки», «Puzzle-Blocks».
Пятнашки представляют собой классическую задачу для моделирования эвристических алгоритмов. Обычно задачу решают через количество перемещений и поиск манхеттенского расстояния между каждой костяшкой и
её позицией в собранной головоломке. Для решения используются алгоритмы наподобие алгоритма А*.
Можно
показать,
что
ровно
половину
из
всех
возможных
1307674368000 (=15!) начальных положений пятнашек невозможно привести
к собранному виду: пусть квадратик с числом i. Будем считать ni = k0 есть если после костяшки с i-м числом нет чисел, меньших i, то k = 0. Также введем
15
число e – номер ряда пустой клетки (считая с 1). Если сумма N   ni  e явi 1
ляется нечётной, то решения головоломки не существует.
Для обобщённых пятнашек (с большим, чем 15, количеством костяшек)
задача поиска кратчайшего решения является NP-полной.
Если допустить поворот коробки на 90 градусов, при котором изображения цифр окажутся лежащими на боку, то можно перевести неразрешимые
комбинации в разрешимые (и наоборот). Таким образом, если вместо цифр
на костяшки нанести точки и не фиксировать положение коробки, то неразрешимых комбинаций вообще не окажется.
11
4. Задача коммивояжёра
Задача коммивояжёра (англ. Travelling salesman problem. TSP) (коммивояжер – разъездной сбытовой посредник) – одна из самых известных задач
комбинаторной оптимизации, заключающаяся в отыскании самого выгодного
маршрута, проходящего через указанные города хотя бы по одному разу с
последующим возвратом в исходный город. В условиях задачи указываются
критерий выгодности маршрута (кратчайший, самый дешёвый, совокупный
критерий и т. п.) и соответствующие матрицы расстояний, стоимости и т. п.
Как правило, указывается, что маршрут должен проходить через каждый город только один раз – в таком случае выбор осуществляется среди гамильтоновых циклов.
Существует несколько частных случаев общей постановки задачи, в
частности геометрическая задача коммивояжёра (также называемая планарной или евклидовой, когда матрица расстояний отражает расстояния между
точками на плоскости), треугольная задача коммивояжёра (когда на матрице
стоимостей выполняется неравенство треугольника), симметричная и асимметричная задачи коммивояжёра. Также существует обобщение задачи, так
называемая обобщённая задача коммивояжёра.
Общая постановка задачи, впрочем как и большинство её частных случаев, относится к классу NP-полных задач. Задача коммивояжёра относится к
числу трансвычислительных: уже при относительно небольшом числе городов (66 и более) она не может быть решена методом перебора вариантов никакими теоретически мыслимыми компьютерами за время, меньшее нескольких миллиардов лет.
Точно неизвестно, когда проблему коммивояжера исследовали впервые. Однако, известна изданная в 1832 году книга с названием «Коммивояжер – как он должен вести себя и что должен делать для того, чтобы доставлять товар и иметь успех в своих делах – советы старого курьера» (нем. Der
Handlungsreisende - wie er sein soil und was er zu thun hat, urn Auftrage zu erhal-
12
ten und eines glucklichen Erfolgs in seinen Geschaften gewiβ zu sein - von einem
alten Commis-Voyageur), в которой описана проблема, но математический аппарат для ее решения не применяется. Зато в ней предложены примеры
маршрутов для некоторых регионов Германии и Швейцарии.
Ранним вариантом задачи может рассматриваться англ. Icosian Game
Уильяма Гамильтона 19 века, которая заключалась в том, чтобы найти маршруты на графе с 20 узлами. Первые упоминания в качестве математической
задачи на оптимизацию принадлежат Карлу Менгеру (нем. Karl Menger), который сформулировал ее на математическом коллоквиуме в 1930 году так:
«Мы называем проблемой посыльного (поскольку этот вопрос возникает у
каждого почтальона, в частности, ее решают многие путешественники) задачу найти кратчайший путь между конечным множеством мест, расстояние
между которыми известно».
Вскоре появилось известное сейчас название задача странствующего
продавца (англ. Traveling Salesman Problem), которую предложил Гаслер
Уитни (англ. Hassler Whitney) из Принстонского университета.
Вместе с простотой определения и сравнительной простотой нахождения хороших решений задача коммивояжера отличается тем, что нахождение
действительно оптимального пути является достаточно сложной задачей.
Учитывая эти свойства, начиная со второй половины 20-го века, исследование задачи коммивояжера имеет не столько практический смысл, сколько
теоретический в качестве модели для разработки новых алгоритмов оптимизации.
Многие современные распространенные методы дискретной оптимизации, такие как метод деления плоскостью, ветвей и границ и различные варианты эвристических алгоритмов, были разработаны на примере задачи коммивояжера.
В 1950-е и 1960-е годы задача коммивояжера привлекла внимание ученых в США и Европе. Важный вклад в исследование задачи принадлежит
Джорджу Данцигу, Делберту Рею Фалкерсону (англ. Delbert Ray Fulkerson) и
13
Селмеру Джонсону (англ. Selmer М. Johnson), которые в 1954 году в институте RAND Corportation сформулировали задачу в виде задачи дискретной оптимизации и разработали метод деления плоскостью для ее решения. Используя новый метод, они вычислили путь для отдельного набора узлов с 49
городами и доказали, что не существует короткого пути. В 1960-е и 1970-е
годы многочисленные группы исследователей изучали задачу с точки зрения
математики и ее применения, например, в информатике, экономике, химии и
биологии.
Ричард Карп в 1972 году доказал NP-полноту задачи поиска гамильтоновых путей, из чего, благодаря полиномиальной сводимости, вытекала NPполнота задачи коммивояжера. На основе этих свойств им было приведено
теоретическое обоснование сложности поиска решений задачи на практике.
Больших успехов удалось достичь в конце 1970-х и 1980-х годах, когда
Мартин Грётчел (нем. Martin Grotschel), Манфред Падберг (нем. Manfred
Padberg) и Гиованни Ринальди (нем. Giovanni Rinaldi) и другие, с применением новых методов деления плоскостью, ветвей и границ вычислили решение
для отдельного случая задачи с 2393 городами.
В 1990-е годы Дэвид Аплгейт (англ. David Applegate). Роберт Биксби
(англ. Robert Bixby), Вашека Шватал (англ. Vasek Chvatal) и Уильям Кук
(англ. William Cook) установили рекорды по программе Конкорд. Герхард
Райнельт (нем. Gerhard Reinelt) создал TSPLIB – набор стандартизованных
экземпляров задачи коммивояжера различной степени сложности для сравнения результатов работы различных групп исследователей. В марте 2005 года задача с 33 810 узлами была решена программой Конкорд: был вычислен
путь длиной в 66 048 945 и доказано отсутствие коротких путей. В апреле
2006 было найдено решение для экземпляра с 85 900 узлами. Используя методы декомпозиции, можно вычислить решения для случаев задачи с миллионами узлов, длина которых менее чем на 1 % больше оптимальной.
Для возможности применения математического аппарата для решения
проблемы, ее следует представить в виде математической модели. Проблему
14
коммивояжёра можно представить в виде модели на графе, то есть, используя
вершины и ребра между ними.
Таким образом, вершины графа (на рис.1: От А до D) соответствуют
городам, а ребра (i, j) между вершинами i и j – пути сообщения между этими
городами. Каждому ребру (i, j) можно сопоставить критерий выгодности
маршрута Сi, j ≥ 0 (на рис.1: 20, 42, ...), который можно понимать как. например, расстояние между городами, время или стоимость поездки. Маршрутом
(также гамильтоновым маршрутом) называется маршрут на таком графе, в
который входит по одному разу каждая вершина графа. Задача заключается в
отыскании кратчайшего маршрута.
Рисунок 1.
В целях упрощения задачи и гарантии существования маршрута, обычно считается, что модельный граф задачи является полностью связным, то
есть, что между произвольной парой вершин существует ребро. В тех случаях, когда между отдельными городами не существует сообщения, этого можно достичь путем ввода рёбер с максимальной длиной. Из-за большой длины
такое ребро никогда не попадет к оптимальному маршруту, если он существует.
В зависимости от того, какой критерий выгодности маршрута сопоставляется величине ребер, различают различные варианты задачи, важнейшими из которых являются симметричная и метрическая задачи.
15
В общем случае, асимметричная задача коммивояжера отличается тем.
что она моделируется ориентированным графом. Таким образом, следует
также учитывать, в каком направлении находятся ребра.
В случае симметричной задачи все пары ребер между одними и теми
же вершинами имеют одинаковую длину, то есть, для ребра (i, j) одинаковы
длины Сi,j ≥ Сj,i. В симметричном случае количество возможных маршрутов
вдвое меньше асимметричного случая. Симметричная задача моделируется
неориентированным графом (см. рис. 1).
На самом деле, задача коммивояжёра в случае реальных городов может
быть как симметричной, так и асимметричной в зависимости от длительности или длины маршрутов и от направления движения.
Симметричную задачу коммивояжера называют метрической, если относительно длин ребер выполняется неравенство треугольника. Условно говоря, в таких задачах обходные пути длиннее прямых, то есть, ребро от вершины i до вершины j никогда не бывает длиннее пути через промежуточную
вершину k: Сi,j ≤ Сi,k + Сk,j.
Такое свойство длины ребер определяет измеримое пространство на
множестве ребер и меру расстояния, удовлетворяющую интуитивному пониманию расстояния.
Распространенные на практике функции расстояния являются также
метриками и удовлетворяют неравенству треугольника:
• евклидово расстояние в евклидовой задаче коммивояжёра;
• мангетенская метрика (также квартальная метрика) прямоугольной
задачи коммивояжёра, в которой расстояние между вершинами на решетке
равно сумме расстояний по оси ординат и абсцисс;
• максимальная метрика, определяющая расстояние между вершинами
решетчатого графа как максимальное значение расстояния вдоль оси ординат
и абсцисс. Две последние метрики находят применение, например, при сверлении отверстий в печатных платах, когда станок должен сделать больше отверстий за наименьшее время и может перемещать сверло в обоих направле-
16
ниях для перехода от одного отверстия к следующему. Мангетенская метрика соответствует случаю, когда передвижение в обоих направлениях происходит последовательно, а максимальная – случаю, когда передвижение в
обоих направлениях происходит синхронно, а общее время равно максимальному времени передвижения вдоль оси ординат или абсцисс.
He-метрическая задача коммивояжёра может возникать, например, в
случае минимизации длительности пребывания при наличии выбора транспортных средств в различных направлениях. В таком случае обходной путь
самолетом может быть короче прямого сообщения автомобилем.
Если на практике в условиях задачи разрешается посещать города несколько раз, то симметричную задачу можно свести к метрической. Для этого
задачу рассматривают на так называемом графе расстояний. Этот граф имеет
такое же множество вершин, как и исходный, и является полностью связным.
Длина ребер Сi,j между вершинами i и j на графе расстояний соответствует
длине кратчайшего расстояния между вершинами i и j в исходном графе. Для
определенных таким образом длин Сi,j выполняется неравенство треугольника, и каждому маршруту на графе расстояний всегда соответствует маршрут
с возможными повторениями вершин в исходном графе.
17
5. Проблема раскраски графа
Хроматическое число графа G – минимальное число цветов, в которые
можно раскрасить вершины графа G так. чтобы концы любого ребра имели
разные цвета. Обозначается χ (G).
Хроматическое число графа– минимальное число k, такое что множество
V вершин графа можно разбить на k непересекающихся классов C1, C2, …, Ck;
V=
U Ci,; Ci  Cj = , таких, что вершины в каждом классе независимы, то
i
есть любое ребро графа не соединяет вершины одного и того же класса.
•
К-раскрашиваемый граф – граф, хроматическое число которого не
превосходит K. То есть его вершины можно раскрасить K разными цветами
так, что у любого ребра концы будут разного цвета.
•
К-хроматический граф – граф, хроматическое число которого равно
K . То есть вершины графа можно раскрасить K цветами так, что у любого
ребра концы будут разного цвета, но так раскрасить K – 1 цветами – уже
нельзя.
Хроматический класс графа G – минимальное число цветов, в которые
можно раскрасить ребра графа G так, чтобы смежные ребра имели разные
цвета. Обозначается χ'(G). Проблема реберной раскраски произвольного
плоского кубического графа без мостов тремя цветами эквивалентна знаменитой
Проблеме
четырех
красок.
Реберная
раскраска
определяет
1-факторизацию графа.
Если рассмотреть количество различных раскрасок помеченного графа
как функцию от доступного числа цветов t, то оказывается, что эта функция
всегда будет полиномом от t. Этот факт был обнаружен при попытке доказать гипотезу четырех красок.
18
Рисунок. 2.
19
6. Задача о вершинном покрытии
Задача о вершинном покрытии – NP-полная задача информатики в области теории графов. Часто используется в теории сложности для доказательства NP-полноты более сложных задач.
Вершинное покрытие для неориентированного графа G = (V, E) это множество его вершин S такое что, у каждого ребра графа хотя бы один из концов входит в S.
Размером (size) вершинного покрытия называется число входящих в
него вершин.
Пример: Граф (рис.3) имеет вершинное покрытие {1, 3, 5, 6} размера 4.
Однако оно не является наименьшим вершинным покрытием, поскольку существуют вершинные покрытия меньшего размера, такие как {2, 4, 5} и {1, 2, 4}.
Рисунок. 3.
Задача о вершинном покрытии требует указать минимально возможный размер k вершинного покрытия для заданного графа.
На входе: Граф G.
Результат: k - размер наименьшего вершинного покрытия S графа G.
Также вопрос можно ставить, как эквивалентную задачу о разрешении:
На входе: Граф G и положительное целое число k.
Вопрос: Существует ли вершинное покрытие S для G размера k?
Задача о вершинном покрытии сходна с задачей о независимом наборе.
Множество вершин S является вершинным покрытием тогда и только тогда,
20
когда его дополнение S  V \ S . Это следует из того, что граф с n вершинами
имеет вершинное покрытие размера k тогда и только тогда, когда данный
граф имеет независимый набор размера n – k. В этом смысле обе проблемы
равнозначны.
Поскольку задача о вершинном покрытии является NP-полной, то, к
сожалению. неизвестны алгоритмы для её решения за полиномиальное время. Однако существуют алгоритмы, дающие «приближённое» решение этой
задачи за полиномиальное время – можно найти вершинное покрытие, в котором число вершин не более чем вдвое превосходит минимально возможное.
21
7. Задача о покрытии множества
Задача о покрытии множества Задача о покрытии множества является
классическим вопросом информатики и теории сложности. Данная задача
обобщает NP-полную задачу о вершинном покрытии (и потому является NPсложной). Несмотря на то, что задача о вершинном покрытии сходна с данной, подход, использованный в приближённом алгоритме, здесь не работает.
Вместо этого мы рассмотрим жадный алгоритм. Даваемое им решение будет
хуже оптимального в логарифмическое число раз. С ростом размера задачи
качество решения ухудшается, но всё же довольно медленно, поэтому такой
подход можно считать полезным.
Исходными данными задачи о покрытии множества является конечное
множество U и семейство S его подмножеств. Покрытием называют семейство C  S наименьшей мощности, объединением которых является U. В случае постановки вопроса о разрешении на вход подаётся пара (U, S) и целое
число k; вопросом является существование покрывающего множества мощности k (или менее).
22
8. Задача о независимом множестве
Задача о независимом множестве относится к классу NP-полных задач
в области теории графов. Эквивалентна задаче о клике.
Множество вершин графа называется независимым, если никакие две
вершины этого множества не соединены ребром. Другими словами, индуцированный этим множеством подграф состоит из изолированных вершин.
Иногда также говорят, что каждое ребро графа инцидентно не более чем одной вершине из независимого множества. Задача распознавания (англ.) выглядит так: существует ли в заданном графе G независимое множество размера k? Соответствующая ей оптимизационная задача, она же задача о независимом множестве, формулируется следующим образом: в заданном графе
G требуется найти независимое множество максимального размера.
Иногда эту задачу называют поиском независимого множества максимального размера или максимального (по размеру) независимого множества.
Не стоит путать это понятие с максимальным (по включению) независимым
множеством, которое определяется как такое независимое множество вершин, что при добавлении к нему еще одной (любой) вершины исходного
графа оно перестает быть независимым. Понятно, что таких множеств, вообще говоря, может быть несколько и разных размеров. Максимальное по
включению независимое множество отнюдь не всегда является максимальным по размеру. В то же время, каждое независимое множество максимального размера по определению является также и максимальным по включению. Для нахождения (какого-то) максимального по включению независимого множества можно воспользоваться жадным алгоритмом, работающим за
полиномиальное время, тогда как задача о независимом множестве максимального размера принадлежит к классу NP-полных задач.
23
ЗАКЛЮЧЕНИЕ
Если доказано, что задача является NP-полной, то это означает, что её
решение для параметров, имеющих практическое значение, связано с огромными затратами времени или памяти, которые не позволят получить решение. В этом случае необходимо переформулировать задачу. Например, задача
поиска минимальной формулы для булевой функции является задачей NPполной, поэтому при проектировании схем, где эта задача встречается, решают задачу, которую формулируют как поиск функций, близкой к минимальной, для чего пользуются эвристическими алгоритмами, основанными
на предположениях здравого смысла. Так, если решается задача размещения
объектов в некотором блоке, то разумно начинать размещение с самого
большого объекта. В этих алгоритмах не всегда гарантируется получение
минимального решения, но если для большинства задач оценка отличается не
больше, чем на 10-15% от минимального, то это часто устраивает пользователей.
24
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
1. Ахо А. Ульман Дж. Теория синтаксического анализа, перевода и
компиляции. Том 1 – Синтаксический анализ. – М.: Мир, 1978 г. – 612 с., ил.
2. Ахо А., Хопкрофт Дж., Ульман Дж. Структуры данных и алгоритмы: Пер. с англ.: – М.: Издательский дом «Вильямс», 2001 г. –384 с., ил.
3. Вирт Н. Алгоритмы и структуры данных: Пер. с англ. – 2-ое изд.,
испр. – СПб.: Невский диалект, 2001 г. – 352 с., ил.
4. Карпов Ю.Г. Теория автоматов – СПб.: Питер, 2002 г. – 224с., ил.
5. Кнут Д. Искусство программирования. Тома 1, 2, 3. 3-е изд. Пер. с
англ. : Уч. пос. – М.: Изд. дом "Вильямс", 2001 г.
6. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. – М.: МЦНМО, 2001 г. – 960 с., 263 ил.
7. Макконнел Дж. Анализ алгоритмов. Вводный курс. – М.: Техносфера, 2002 г. –304 с.
8. Новиков Ф. А. Дискретная математика для программистов. – СПб.:
Питер, 2001 г. – 304 с., ил.
9. Романовский И.В. Дискретный анализ. Учебное пособие для студентов, специализирующихся по прикладной математике. – Издание 2-ое, исправленное. – СПб.; Невский диалект, 2000 г. – 240 с., ил.
10. Успенский В.А. Машина Поста. – М.: Наука, 1979 г. – 96 с. – (Популярные лекции по математике).
11. Чмора А.Л. Современная прикладная криптография. – М.: Гелиос
АРВ, 2001 г. – 256 с., ил.
Похожие документы
Скачать