![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Глава 21. Кратчайшие пути. Теперь предположим, что имеется эффективное сведение NP-трудной задачи А к конкретной задаче В
Продемонстрированная методика является чрезвычайно важной, поскольку она использовалась для того, чтобы показать, что огромное множество задач относятся к NP-трудным, предоставляя на выбор широкий круг задач, с помощью которых строились доказательства NP-трудности новой задачи. Например, в разделе 17.7 мы столкнулись с одной из классических NP-трудных задач — с задачей поиска гамильтонова пути, в которой требуется определить, существует ли простой путь, содержащий все вершины данного графа. Она была одной из первых задач, в отношении которой было показано, что она является NP-трудной (см. раздел ссылок). Довольно просто получить формулировку, в соответствии с которой из свойства 21.17 следует, что задача кратчайших путей относится к NP-трудным: Свойство 21.18. В сетях, в которых веса ребер могут быть отрицательными, задачи поиска кратчайших путей являются NP-трудными. Доказательство: Наше доказательство состоит в сведении задачи о гамильтоновом пути к задаче о кратчайших путях. Другими словами, мы покажем, что для решения задачи о гамильтоновом пути можно использовать любой алгоритм, с помощью которого можно найти кратчайшие пути в сетях с отрицательными весами ребер. Для заданного неориентированного графа мы строим сеть с ребрами в обоих направлениях, соответствующими каждому ребру в графе, и со всеми ребрами, имеющими веса -1. Кратчайший (простой) путь, начинающийся в любой вершине этой сети, имеет длину 1 — V тогда и только тогда, когда граф имеет гамильтонов путь. Обратите внимание, что эта сеть изобилует отрицательными циклами. Не только каждый цикл в графе соответствуют отрицательному циклу в сети, но также каждое ребро в графе соответствует циклу с весом -2 в данной сети. Результат этих рассуждений состоит в том, что задача поиска кратчайших путей является NP-трудной, поскольку, если бы мы могли разработать эффективный алгоритм для задачи поиска кратчайших путей в сетях, то мы должны были бы иметь эффективный алгоритм для задачи поиска гамильтонова пути в графах. ■ Как только будет обнаружено, что данная задача является NP-трудной, естественным будет разыскать те варианты этой задачи, которые можно решить. Для задач поиска кратчайших путей мы стоим перед выбором между наличием массы эффективных алгоритмов для ациклических сетей или для сетей, в которых веса ребер не являются отрицательными, и отсутствием хорошего решения для сетей, которые могли бы содержать циклы и отрицательные веса. Есть ли какие-либо другие виды сетей, которые нас могут заинтересовать? Это является темой раздела 21.7. Там, например, будет показано, что задача календарного планирования работ с конечными сроками сводится к варианту задачи по- Часть 5. Алгоритмы на графах
Как показывают эти примеры, сведение — это простая технология, которая полезна при разработке алгоритмов, поэтому мы часто прибегаем к нему. При этом мы либо сможем решить новую задачу путем доказательства того, что она сводится к задаче с известным решением, либо мы сможем доказать, что новая задача будет сложной, показав, что задача, о которой известно, что она сложная, сводится к рассматриваемой задаче. В таблице 21.3 дан более подробный обзор различных последствий применения сведения между четырьмя общими классами задач, которые обсуждались в главе 17. Обратите внимание, что существует несколько случаев, когда сведение не дает новой информации; например, хотя выбор и сводится к сортировке, а задача нахождения наиболее длинных путей в ациклических сетях сводится к задаче нахождения кратчайших путей в общих сетях, эти утверждения не проливают свет на относительную трудность задачи. В других случаях сведение либо может, либо нет, предоставлять новую информацию; еще в некоторых случаях последствия сведения действительно глубоки. Чтобы продолжить развитие этих концепций, мы нуждаемся в строгом и формальном описании концепции сведения, о чем мы подробно поговорим в части 8; здесь мы просто неформально подведем итог наиболее важных практических применений сведения вместе с примерами, которые уже были представлены. Таблица 21.3. Последствия сведения________________________________________ Эта таблица подводит итог некоторых последствий сведения задачи А к другой задаче В, с примерами, которые обсуждались в этом разделе. Глубокие последствия случаев 9 и 10 заходят настолько далеко, что мы в общем случае предполагаем, что нет возможности обосновать такие сведения (см. часть 8). Сведение наиболее полезно в следующих случаях: 1, 6, 11 и 16 - для изучения нового алгоритма для А или обоснования нижней границы для В; 13 - 15 - для изучения новых алгоритмов для А; 12 - для того, чтобы убедиться в сложности В.
|