Как построить сокращения между проблемами, чтобы доказать, что проблема является NP-полной?


27

Я прохожу сложный курс, и у меня возникают проблемы с сокращением числа проблем с NPC. Как я могу найти сокращения между проблемами? Есть ли общий трюк, который я могу использовать? Как мне подойти к проблеме, которая требует от меня доказать, что проблема в NPC?


4
Извините, что разочаровал, я не думаю, что есть метод, который решает все это. Как и многие жизненные проблемы, каждая из них уникальна. Надеемся, что со временем вы поймете, как решить каждую из них.
Ран Г.

1
Существуют ли полезные рекомендации о том, как подходить к таким проблемам? Я полностью теряюсь, когда вижу вопрос, который просит меня доказать, что это NPC. Как мне подойти к ним?
Аноним

Ответы:


45

Там нет волшебной пули; Доказательства NP-твердости трудны. Однако для всех таких доказательств существует общая основа. Многие студенты, которые борются с NP-доказательствами твердости, не понимают, что они должны делать, что, очевидно, делает невозможным выяснить, как это сделать. Итак, вот что нужно сделать, чтобы доказать проблему NP-Hard.

Во-первых, если вы просто не делаете домашнее задание, вы должны решить, какую сложную задачу решить, чтобы решить вашу проблему . Это в значительной степени вопрос о «запахе». Если число 3 появляется в либо месте в проблемы, попробуйте уменьшить значение из или или . (Да, я серьезно.) Если ваша проблема заключается в поиске оптимальной подпоследовательности, перестановки или пути, попробуйте уменьшить значение из или . Если ваша проблема требует наименьшего подмножества с определенным свойством, попробуйте ; если он запрашивает наибольшее подмножество с определенным свойством, попробуйте3 С о л о г 3 Р т т я т я о п Н м я л т о н я п С у с л е Н м я л т о н я п р т h C l i q u e I n d e3SAT3СоLор3пaрTяTяоNЧАСaмяLTоNяaNСYсLеЧАСaмяLTоNяaNпaTчасСLяQUеяNdепеNdеNTSеT, Если ваша проблема заключается в выполнении чего-либо в самолете, попробуйте или . И так далее. Если ваша проблема не «пахнет» чем-то, то или , вероятно, является лучшим выбором.Р л а н с т Т С Р 3 С Т С я г с ц я т S A TпLaNaрСярсUяTSATпLaNaрTSп3SATСярсUяTSAT

Очевидно, что вам уже нужно точно знать, как все эти проблемы определены , и чем проще проблема, которую вы решаете, тем лучше. Поэтому, как бы ни был хорош результат в конце, я не рекомендую уменьшать из или или или .MяNеsвесееперTеTряsОNеСчасесКерsMоvеSUперMaряоВроs

Во-вторых, фактическое сокращение. Чтобы свести проблему X (которую вы знаете, NP-сложная) к проблеме Y (которую вы пытаетесь доказать, NP-сложная, вам нужно описать алгоритм, который преобразует произвольный экземпляр X в допустимый экземпляр Y Алгоритм редукции должен делать что-то конкретное с каждой «особенностью» X-экземпляра, часть вывода для каждой «функции» обычно называется гаджетом .

Но в чем особенность? Это зависит от проблемы X. Например:

  • Чтобы преобразовать экземпляр , вам понадобится гаджет для каждой переменной и для каждого предложения в формуле ввода. Каждый переменный гаджет должен иметь два «состояния», которые соответствуют «истине» и «ложи». Каждый гаджет предложения также должен иметь несколько «состояний», каждое из которых каким-то образом заставляет хотя бы один из литералов в этом предложении быть истинными. (Состояния не являются частью вывода алгоритма редукции.)3SAT

  • Чтобы преобразовать экземпляр , вам потребуется гаджет для каждой вершины и каждого ребра входного графа, а также другой гаджет для определения трех цветов.3СоLор

  • Чтобы преобразовать экземпляр , вам потребуется гаджет для каждого входа, для каждого провода и для каждого затвора во входной цепи.пLaNaрСярсUяTSaT

Конкретный вид гаджет зависит от задачи Y, тот , который вы восстанавливающие к . Например, если вы сводите проблему к графикам, ваши гаджеты будут небольшими подграфами; см. статью в Википедии. Если вы сводите проблему к планированию, каждый гаджет будет набором заданий, которые нужно запланировать. Если вы сводитесь к проблеме с Марио , то каждый гаджет будет представлять собой набор блоков, кирпичей и Koopas.

Это может сбить с толку, если обе проблемы связаны с одним и тем же типом объекта. Например, если X и Y являются проблемами с графами, ваш алгоритм преобразует один граф (экземпляр X) в другой граф (экземпляр Y). Мудро выбирайте обозначения, чтобы не перепутать эти два графика. Я также настоятельно рекомендую использовать несколько цветов чернил.

Наконец, ваш алгоритм сокращения должен удовлетворять трем свойствам:

  • Работает за полиномиальное время. (Это обычно легко.)

  • Если вашему алгоритму сокращения дается положительный экземпляр X в качестве входных данных, он создает положительный экземпляр Y в качестве выходных данных.

  • Если ваш алгоритм редукции выдает положительный экземпляр Y в качестве вывода, ему должно быть дан положительный экземпляр X в качестве ввода.

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

Вот что . Как только приходит с практикой.


5
3SAT3SATпTрUееaLsе

1
Относительно "Если ваш алгоритм уменьшения выдает положительный экземпляр Y в качестве вывода, ему должно быть дан положительный экземпляр X в качестве ввода": хотя было бы более интуитивно писать это условие как "Если вашему алгоритму сокращения задан отрицательный экземпляр Х в качестве входных данных, он производит отрицательный экземпляр Y в качестве выходного», обратите внимание , что эти два условия эквивалентны , и как JeffE написал это обычно делает построение доказательства намного проще, так как в каждом случае вы„что - то“(либо положительный экземпляр X или положительный экземпляр Y) для работы.
j_random_hacker

11

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

Другая правильная стратегия - всегда использовать 3SAT (или любую другую проблему). Это может сделать некоторые сокращения более сложными, но положительным моментом является то, что у вас есть большой опыт выражения сатинируемости в других типах проблем. Таким образом, вы экономите время на поиске хорошего партнера по сокращению (включая тупики) и надеетесь, что ваш опыт позволит вам быстро выполнить сокращение, даже если оно сложнее.

Этот подход также имеет некоторую мета-красоту: (3) SAT является одной из немногих проблем, для которых NP-полнота была доказана (почти) напрямую. Поэтому, полагаясь только на это доказательство, ваше «дерево доказательств» остается плоским, избегая длинных цепочек сокращений.


3
Непосредственное доказательство того, что задача ограниченного останова является NP-полной, когда оценка задана в унарном порядке, не слишком сложно, и это простой способ доказать, что существует некоторая NP-полная проблема, даже если сама проблема довольно бесполезна для ее уменьшения.
Алекс тен Бринк

3
Я не уверен в утверждении, что это единственная проблема, которая, как доказано, является NP-полной непосредственно. На самом деле, если вы интерпретируете это в строгом смысле слова, то это определенно ложно. В статье Кука 1971 года говорится о TAUT, а не SAT (он использует сокращения Кука, а не сокращения Карпа) (легко заметить, что доказательство также доказывает, что SAT является NP-полным при сокращениях Карпа).
Каве

@ Каве, а? Тавтология является Co-Np полной и, следовательно, неизвестно, что она находится в NP (-complete). Я не читал статью Кука, хотя.
Альберт Хендрикс

1
@ Альберт, ну тогда тебе стоит это прочитать. С сокращениями Кука вы не можете различить NP и coNP.
Каве
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.