Вопрос о том, является ли P = NP, пожалуй, самым известным во всех компьютерных науках. Что это значит? И почему это так интересно?
О, и для дополнительного кредита, пожалуйста, опубликуйте доказательство утверждения истины или ложности.:)
Вопрос о том, является ли P = NP, пожалуй, самым известным во всех компьютерных науках. Что это значит? И почему это так интересно?
О, и для дополнительного кредита, пожалуйста, опубликуйте доказательство утверждения истины или ложности.:)
P обозначает полиномиальное время. NP означает недетерминированное полиномиальное время.
Определения:
Полиномиальное время означает, что сложность алгоритма O (n ^ k), где n - размер ваших данных (например, количество элементов в отсортированном списке), а k - константа.
Сложность измеряется временем в количестве операций, которые она должна выполнять, в зависимости от количества элементов данных.
Операция - это то, что имеет смысл в качестве основной операции для конкретной задачи. Для сортировки основная операция - это сравнение. Для матричного умножения основной операцией является умножение двух чисел.
Теперь вопрос заключается в том, что означает детерминированное или неопределенное. Существует абстрактная вычислительная модель, воображаемый компьютер, называемый машиной Тьюринга (ТМ). Эта машина имеет конечное число состояний и бесконечную ленту, которая имеет дискретные ячейки, в которые можно записать и прочитать конечный набор символов. В любой момент времени TM находится в одном из своих состояний и смотрит на конкретную ячейку на ленте. В зависимости от того, что он читает из этой ячейки, он может записать новый символ в эту ячейку, переместить ленту на одну ячейку вперед или назад и перейти в другое состояние. Это называется переход состояния. Удивительно, что, тщательно конструируя состояния и переходы, вы можете создать TM, что эквивалентно любой компьютерной программе, которая может быть написана. Вот почему он используется как теоретическая модель для доказательства того, что компьютеры могут и не могут сделать.
Здесь есть два типа ТМ: детерминированные и недетерминированные. Детерминированный ТМ имеет только один переход от каждого состояния для каждого символа, который он считывает с ленты. Недетерминированный ТМ может иметь несколько таких переходов, т.е. Способен одновременно проверять несколько возможностей. Это похоже на нерестование нескольких потоков. Разница в том, что не детерминированная ТМ может порождать столько "потоков", сколько захочет, тогда как на реальном компьютере может выполняться только определенное количество потоков (равное числу ЦП). На самом деле компьютеры - это в основном детерминированные ТМ с конечными лентами. С другой стороны, недетерминированный ТМ не может быть физически реализован, за исключением, возможно, квантового компьютера.
Было доказано, что любая проблема, которая может быть решена недетерминированной ТМ, может быть решена детерминированным ТМ. Однако неясно, сколько времени это займет. Утверждение P = NP означает, что если проблема принимает полиномиальное время на недетерминированной ТМ, то можно построить детерминированный ТМ, который бы разрешил ту же проблему и в полиномиальное время. Пока никто не смог показать, что это можно сделать, но никто не смог доказать, что это тоже невозможно.
NP-полная проблема означает NP-задачу X, так что любая NP-задача Y может быть сведена к X полиномиальной редукцией. Это означает, что если кто-либо когда-нибудь придет к решению проблемы с NP-полным полиномиальным временем, это также даст решение по полиномиальному времени для любой проблемы NP. Таким образом, это доказывает, что P = NP. И наоборот, если бы кто-то доказывал, что P! = NP, то мы были бы уверены, что нет способа решить проблему NP в полиномиальное время на обычном компьютере.
Примером NP-полной проблемы является проблема нахождения присвоения правды, которая делает логическое выражение, содержащее n переменных true.
В настоящий момент на практике любая проблема, которая принимает полиномиальное время на недетерминированной ТМ, может быть выполнена только в экспоненциальном времени на детерминированной ТМ или на обычном компьютере.
Например, единственный способ решить проблему назначения правды - попробовать 2 ^ n возможности.
Интуитивно мы видим, что если проблема находится в P, то она находится в NP. Учитывая потенциальный ответ на проблему в P, мы можем проверить ответ, просто пересчитав ответ.
Менее очевидным и гораздо труднее ответить, есть ли все проблемы в NP в 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-complete. NP-полная проблема - это NP, конечно же, и имеет это интересное свойство: если оно находится в P, то каждая проблема NP, и, следовательно, P = NP. Если бы вы могли найти способ эффективно решить проблему Traveling Salesman или логические головоломки из журналов-головоломок, вы могли бы эффективно решить что-либо в 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-красочный, только если есть короткое и легко проверяемое решение.
Эквивалентное определение NP является "задачами, разрешимыми недетерминированной машиной Тьюринга в полиномиальное время". Хотя это говорит вам, откуда взялось это имя, оно не дает вам такого же интуитивного представления о проблемах 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-красочности (вместо того, чтобы наоборот).