Вопрос о том, является ли P = NP, возможно, самым известным во всей информатике. Что это означает? И почему это так интересно?
Да, и для дополнительного кредита, пожалуйста, опубликуйте доказательство истинности или ложности заявления. :)
Вопрос о том, является ли P = NP, возможно, самым известным во всей информатике. Что это означает? И почему это так интересно?
Да, и для дополнительного кредита, пожалуйста, опубликуйте доказательство истинности или ложности заявления. :)
Ответы:
P обозначает полиномиальное время. NP обозначает недетерминированное полиномиальное время.
Определения:
Полиномиальное время означает, что сложность алгоритма составляет O (n ^ k), где n - это размер ваших данных (например, количество элементов в списке, которые нужно отсортировать), а k - это константа.
Сложность - это время, измеряемое количеством операций, которое потребуется, как функция количества элементов данных.
Операция - это то, что имеет смысл в качестве основной операции для конкретной задачи. Для сортировки основной операцией является сравнение. Для умножения матриц основной операцией является умножение двух чисел.
Теперь вопрос в том, что означает детерминированный против недетерминированного? Существует абстрактная вычислительная модель, воображаемый компьютер, называемый машиной Тьюринга (ТМ). Эта машина имеет конечное число состояний и бесконечную ленту с дискретными ячейками, в которые можно записывать и считывать конечный набор символов. В любой момент времени ТМ находится в одном из своих состояний и просматривает конкретную ячейку на ленте. В зависимости от того, что он читает из этой ячейки, он может записать новый символ в эту ячейку, переместить ленту на одну ячейку вперед или назад и перейти в другое состояние. Это называется переходом между состояниями. Удивительно, но, тщательно создавая состояния и переходы, вы можете создать TM, который эквивалентен любой компьютерной программе, которая может быть написана.
Здесь нас интересуют два вида ТМ: детерминированные и недетерминированные. Детерминированный TM имеет только один переход из каждого состояния для каждого символа, который он считывает с ленты. Недетерминированный TM может иметь несколько таких переходов, то есть он может проверять несколько возможностей одновременно. Это похоже на создание нескольких потоков. Разница в том, что недетерминированный TM может порождать столько «потоков», сколько ему нужно, в то время как на реальном компьютере одновременно может выполняться только определенное количество потоков (равное количеству процессоров). На самом деле компьютеры - это в основном детерминированные ТМ с конечными лентами. С другой стороны, недетерминированная ТМ не может быть физически реализована, разве что с помощью квантового компьютера.
Было доказано, что любая проблема, которая может быть решена с помощью недетерминированной ТМ, может быть решена с помощью детерминированной ТМ. Тем не менее, не ясно, сколько времени это займет. Утверждение P = NP означает, что если задача занимает полиномиальное время на недетерминированной ТМ, то можно построить детерминированную ТМ, которая бы решала ту же проблему и за полиномиальное время. Пока что никто не смог доказать, что это возможно, но никто так и не смог доказать, что это невозможно.
NP-полная задача означает NP-задачу X, так что любая NP-задача Y может быть сведена к X полиномиальной редукцией. Это подразумевает, что если кто-нибудь когда-нибудь придет к решению задачи с NP-полным решением за полиномиальное время, это также даст решение за NP-задачи за полиномиальное время. Таким образом, это докажет, что P = NP. И наоборот, если кто-то докажет, что P! = NP, то мы были бы уверены, что на обычном компьютере невозможно решить проблему NP за полиномиальное время.
Примером NP-полной проблемы является проблема поиска истинного присваивания, которое сделало бы булево выражение, содержащее n переменных истинным.
На данный момент на практике любая проблема, которая занимает полиномиальное время для недетерминированной ТМ, может быть решена только за экспоненциальное время на детерминированной ТМ или на обычном компьютере.
Например, единственный способ решить проблему присвоения правды - это попробовать 2 ^ n возможностей.
Интуитивно понятно, что если проблема в P , то в NP . Учитывая потенциальный ответ на проблему в P , мы можем проверить ответ, просто пересчитав ответ.
Менее очевидна, и гораздо труднее ответить, является ли все проблемы в НП в P . Означает ли тот факт, что мы можем проверить ответ за полиномиальное время, означает, что мы можем вычислить этот ответ за полиномиальное время?
Существует большое количество важных проблем, о которых известно, что они являются NP- полными (в основном, если доказано, что какие-либо из этих проблем находятся в P , то все проблемы NP оказываются в P ). Если P = NP , то будет доказано, что все эти проблемы имеют эффективное (полиномиальное время) решение.
Большинство ученых считают, что P ! = NP . Однако доказательств для P = NP или P ! = NP пока не установлено . Если кто-либо предоставит доказательства для какой-либо гипотезы, он выиграет 1 миллион долларов США .
Чтобы дать самый простой ответ, я могу думать о:
Предположим, у нас есть проблема, которая принимает определенное количество входных данных и имеет различные потенциальные решения, которые могут решить или не решить проблему для заданных входных данных. Хорошим примером может служить логическая головоломка в журнале головоломок: входные данные - это условия («Джордж не живет в синем или зеленом доме»), а потенциальным решением является список утверждений («Джордж живет в желтом» дом, выращивает горох и владеет собакой "). Известным примером является проблема коммивояжера: с учетом списка городов, времени, которое нужно добраться из любого города в любой другой, и ограничения по времени, потенциальным решением будет список городов в том порядке, в котором их посетит продавец, и это сработало бы, если бы сумма времени в пути была меньше, чем срок.
Такая проблема в NP, если мы можем эффективно проверить потенциальное решение, чтобы увидеть, работает ли оно. Например, учитывая список городов для посещения продавцом по порядку, мы можем сложить время для каждой поездки между городами и легко увидеть, не превышает ли это ограничение по времени. Проблема в P, если мы можем эффективно найти решение, если оно существует.
(Эффективно здесь имеет точное математическое значение. Практически это означает, что крупные проблемы не слишком сложно решить. При поиске возможного решения неэффективным способом было бы перечисление всех возможных потенциальных решений или чего-то близкого к этому. в то время как эффективный способ потребует поиска гораздо более ограниченного набора.)
Следовательно, проблема P = NP может быть выражена следующим образом: если вы можете эффективно проверить решение для задачи описанного выше типа, можете ли вы найти решение (или доказать, что оно не существует) эффективно? Очевидный ответ: «Почему вы должны это делать?», И именно в этом заключается проблема. Никто не смог доказать это так или иначе, и это беспокоит многих математиков и компьютерщиков. Вот почему любой, кто может доказать это решение, может получить миллион долларов от Фонда Клэйпул.
Обычно мы предполагаем, что P не равен NP, что нет общего способа найти решение. Если бы оказалось, что P = NP, многое изменилось бы. Например, криптография стала бы невозможной, а вместе с ней - какая-либо конфиденциальность или возможность проверки в Интернете. В конце концов, мы можем эффективно взять зашифрованный текст и ключ и создать оригинальный текст, поэтому, если P = NP, мы можем эффективно найти ключ, не зная его заранее. Взлом пароля станет тривиальным. С другой стороны, есть целые классы проблем планирования и распределения ресурсов, которые мы могли бы эффективно решить.
Возможно, вы слышали описание NP-полное. NP-полная проблема - это проблема, которая является NP (конечно) и обладает этим интересным свойством: если она есть в P, то каждая проблема NP есть, и поэтому P = NP. Если бы вы могли найти способ эффективно решить проблему коммивояжера или логические головоломки из журналов головоломок, вы могли бы эффективно решить что-нибудь в NP. NP-полная проблема является, в некотором смысле, самой сложной проблемой NP.
Итак, если вы можете найти эффективный метод общего решения для любой NP-полной задачи или доказать, что такого не существует, слава и богатство принадлежат вам.
Краткое резюме из моих скромных знаний:
Есть несколько простых вычислительных задач (например, нахождение кратчайшего пути между двумя точками на графике), которые можно вычислить довольно быстро (O (n ^ k), где n - размер входных данных, а k - постоянная (в случай графиков, это количество вершин или ребер)).
Другие проблемы, такие как поиск пути, который пересекает каждую вершину в графе или получение закрытого ключа RSA из открытого ключа, сложнее (O (e ^ n)).
Но CS говорит, что проблема в том, что мы не можем «преобразовать» недетерминированную машину Тьюринга в детерминированную, однако мы можем преобразовать недетерминированные конечные автоматы (такие как синтаксический анализатор регулярных выражений) в детерминированные (ну, вы можно, но время работы машины займет много времени). То есть мы должны попробовать все возможные пути (обычно умные профессора CS могут исключить несколько).
Это интересно, потому что никто даже не имеет представления о решении. Некоторые говорят, что это правда, некоторые говорят, что это неправда, но нет единого мнения. Другая интересная вещь заключается в том, что решение будет вредным для шифрования с открытым / закрытым ключом (например, RSA). Вы можете сломать их так же легко, как генерирование ключа RSA сейчас.
И это довольно вдохновляющая проблема.
Не так много я могу добавить к вопросу о том, что и почему для P =? NP, но в отношении доказательства. Мало того, что доказательство стоило бы некоторого дополнительного кредита, но это решило бы одну из проблем тысячелетия . Недавно был проведен интересный опрос, и опубликованные результаты (PDF) определенно стоит прочитать в отношении предмета доказательства.
Сначала несколько определений:
Особая проблема в P, если вы можете вычислить решение за время меньше, чем n^k
для некоторых k
, где n
размер входных данных. Например, можно выполнить сортировку, в n log n
которой меньше n^2
, поэтому сортировка выполняется за полиномиальное время.
Проблема в NP, если существует k
такое, что существует решение размера не больше, n^k
которое вы можете проверить не позднее времени n^k
. Возьмите 3-цветную окраску графиков: для данного графика 3-цветная окраска - это список пар (вершина, цвет), размер которых есть, O(n)
и вы можете по времени O(m)
(или O(n^2)
) проверить, имеют ли все соседи разные цвета. Таким образом, граф является 3-раскрашиваемым, только если существует короткое и легко проверяемое решение.
Эквивалентное определение НП является «задач , решаемых с помощью N ondeterministic машины Тьюринга в Р olynomial времени». Хотя это говорит вам о том, откуда взято имя, оно не дает вам того же интуитивного ощущения того, на что похожи проблемы NP.
Обратите внимание, что P является подмножеством NP: если вы можете найти решение за полиномиальное время, есть решение, которое можно проверить за полиномиальное время - просто убедитесь, что данное решение равно тому, которое вы можете найти.
Почему вопрос P =? NP
интересен? Чтобы ответить на этот вопрос, нужно сначала увидеть, что такое NP-полная проблема. Проще говоря,
Обратите внимание, что экземпляр L должен быть вычисляемым за полиномиальное время и иметь полиномиальный размер, равный размеру L '; таким образом, решение NP-полной задачи за полиномиальное время дает нам решение всех NP задач за полиномиальное время .
Вот пример: предположим, мы знаем, что 3-раскраска графов является NP-трудной задачей. Мы хотим доказать, что решение выполнимости булевых формул также является NP-трудной задачей.
Для каждой вершины v есть две логические переменные v_h и v_l и требование (v_h или v_l): каждая пара может иметь только значения {01, 10, 11}, которые мы можем рассматривать как цвета 1, 2 и 3.
Для каждого ребра (u, v) есть требование, чтобы (u_h, u_l)! = (V_h, v_l). То есть,
not ((u_h and not u_l) and (v_h and not v_l) or ...)
перечисление всех равных конфигураций и условие, что ни одна из них не соответствует действительности.
AND
Объединение всех этих ограничений дает булеву формулу, которая имеет полиномиальный размер ( O(n+m)
). Вы можете проверить, что для вычисления также требуется полиномиальное время: вы делаете простые O(1)
вещи для каждой вершины и для каждого ребра.
Если вы можете решить булеву формулу, которую я сделал, то вы также можете решить раскраску графа: для каждой пары переменных v_h и v_l пусть цвет v будет соответствовать значению этих переменных. По построению формулы соседи не будут иметь одинаковые цвета.
Следовательно, если 3-раскраска графов является NP-полной, то и выполнимость булевой формулы.
Мы знаем, что 3-раскраска графов является NP-полной; однако, исторически мы узнали, что, сначала показывая NP-полноту булевой контурируемости, а затем уменьшая ее до 3-цветности (а не наоборот).