15.08.2024

Что такое n p: что это значит, как понять?

Содержание

NP-полная задача — Википедия. Что такое NP-полная задача

Взаимотношение между классами P, NP, NP-complete (NP-полными задачами), NP-hard (NP-трудными задачами) в случае, если P≠NP и если P=NP

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

Формальное определение

Алфавитом называется всякое конечное множество символов (например, {0,1{\displaystyle {0,1}}} или {a,b,c{\displaystyle {a,b,c}}}). Множество всех возможных слов (конечных строк, составленных из символов этого алфавита) над некоторым алфавитом Σ{\displaystyle \Sigma } обозначается Σ∗{\displaystyle \Sigma ^{*}}. {*}}, вычислимая за полиномиальное время, обладающая следующим свойством:

  • x∈L1{\displaystyle x\in L_{1}} тогда и только тогда, когда f(x)∈L2{\displaystyle f(x)\in L_{2}}. Сводимость по Карпу обозначается как L1≤pL2{\displaystyle L_{1}{\leq }_{p}L_{2}} или L1∝L2{\displaystyle L_{1}\varpropto L_{2}}.

Язык L2{\displaystyle L_{2}} называется NP-трудным, если любой язык из класса NP сводится к нему. Язык называют NP-полным, если он NP-труден, и при этом сам лежит в классе NP.

Неформально говоря, то что задача A{\displaystyle A} сводится к задаче B{\displaystyle B}, означает, что задача A{\displaystyle A} «не сложнее» задачи B{\displaystyle B} (так как, если мы можем решить B{\displaystyle B}, то можем решить и A{\displaystyle A}).
Таким образом, класс NP-трудных задач включает NP-полные задачи и задачи, которые «сложнее» их (то есть те задачи, к которым могут быть сведены NP-полные задачи). Класс NP включает NP-полные задачи и задачи, которые «легче» их (то есть те задачи, которые сводятся к NP-полным задачам).

Из определения следует, что, если будет найден алгоритм, решающий некоторую (любую) NP-полную задачу за полиномиальное время, то все NP-задачи окажутся в классе P, то есть будут решаться за полиномиальное время.

NP-полнота в сильном смысле

Задача называется NP-полной в сильном смысле, если у неё существует подзадача, которая:

  1. не является задачей с числовыми параметрами (то есть максимальное значение величин, встречающихся в этой задаче, ограничено сверху полиномом от длины входа),
  2. принадлежит классу NP,
  3. является NP-полной.

Класс таких задач называется NPCS. Если гипотеза P ≠ NP верна, то для NPCS-задачи не существует псевдополиномиального алгоритма[источник не указан 468 дней].

Гипотеза P ≠ NP

Вопрос о совпадении классов P и NP уже более 30 лет является открытой проблемой. Научное сообщество склоняется к отрицательному ответу на этот вопрос[1] — в этом случае решать NP-полные задачи за полиномиальное время не удастся.

Примеры NP-полных задач

См. также

Примечания

Литература

  • Томас Х. Кормен и др. Глава 34. NP-полнота // Алгоритмы: построение и анализ = Introduction to Algorithms. — 2-е изд. — М.: «Вильямс», 2006. — 1296 с. — ISBN 0-07-013151-1.
  • Джон Хопкрофт, Раджив Мотвани, Джеффри Ульман. Введение в теорию автоматов, языков и вычислений = Introduction to Automata Theory, Languages, and Computation. — М.: «Вильямс», 2002. — 528 с. — ISBN 0-201-44124-1.

Ссылки

«Зашквар и закат карьеры». Что говорят о слитом в Сеть интимном видео Дзюбы

Капитан сборной России и петербургского «Зенита» Артём Дзюба в очередной раз попал в грандиозный скандал. Поцелуи с телеведущей Орзул в машине, неоднозначные шутки с Азмуном в раздевалке, топтания на шарфе «Спартака» — просто цветочки. В Сеть слили видео, как нападающий занимается самоудовлетворением. Причём на фоне по телевизору вещает всё та же Орзул.

Как выяснилось, это видео годичной давности. Ведущие «Матч ТВ» на фоне обсуждают хоккейную встречу «Салавата Юлаева» с «Ак Барсом» в Давосе, который состоялся в декабре 2019-го. Но дела это не меняет, видео с Дзюбой просто взорвало Сеть.

Что говорит спортивное сообщество?

Многие спортивные журналисты не упустили возможности и высказались у себя в «Твиттере» и телеграм-каналах. Многие, да не все. Например, комментаторы и журналисты газпромовского «Матч ТВ» не проронили ни слова о мощном скандале… А вот что писали другие?

Известный журналист и эксперт Василий Конов считает, что Артём «не сделал ничего такого, чего нельзя делать».

А чего замять? Что он сделал такого, чего нельзя делать? Мне вот настолько нет дела, что даже смотреть не стал.

— Василий Конов (44+) (@VasilyKonov) November 8, 2020

Павел Занозин посоветовал всем критикующим Артёма почитать «Практическую психологию для мальчиков».

Ханжество нашего общества, конечно, зашкаливает. Почитали бы «Практическую психологию для мальчиков» Дили Еникеевой, что ли.

— Павел Занозин (@zanozin) November 8, 2020

Андрей Малосолов отметил, что вообще обсуждать интимную жизнь кого бы то ни было — это низко.

Обсуждать на весь свет интимную жизнь кого бы то ни было, даже Артемы Дзюбы — это настолько низко и позорно! Это неуважение к самому себе. Это модуляция ваших личных интимных неудач на все общество. И это значит встать в один ряд с плесенью, взломавшей чужой телефон. #дзюба

— Андрей Малосолов (@AndreiMalosolov) November 8, 2020

Журналист «Спорт-Экспресса» Максим Алланазаров не поддержал коллег, которые не увидели в этом ничего такого: «Забыли в каком обществе живёте и что такое звание капитана сборной?»

Умиляют голоса коллег о том, что все дрочат. Вы, мои прогрессивные друзья, забыли в каком обществе живете и забыли что такое звание капитана сборной? На капитана сборной смотрят дети и берут с него пример вообще то. И у нас тут не Нидерланды, чтобы такое проходило бесследно.

— Max Allanazarov (@KyKyPyKy22) November 8, 2020

Абсолютно нормально. А вот снимать на видео — нет. Я же не прошу с ним контракт разрывать, но выходить капитаном сборной он не должен.

— Max Allanazarov (@KyKyPyKy22) November 8, 2020

Дмитрий Егоров уверен, что после такого Дзюбу никто не поддержит.

Дзюба довольно долго объяснял, что люди не так себя ведут. Кидал людей, которые ему помогали. Банил и обижался на людей, которые ему ничего плохого не делали. Поэтому сейчас поддерживать его никто не будет, — написал он у себя в телеграме «Едим Спорт«.

Михаил Барзыкин считает, что случившееся для Дзюбы — «закат карьеры».

Не, я не удивлен: в наш век разврата и антиморали таких мнений будет много. Все дрочат, да. Дрочить — не грех. Но если это попало в сеть — зашквар. А для капитана сборной, на которого молится школота, — закат карьеры. Прсмотрим, как оно будет. https://t.co/hMj0Q6kEkk

— Михаил Борзыкин (@M_Borzykin) November 7, 2020

Журналист Дмитрий Клипин в своём телеграм-канале «ЭкСпорт» пишет, что Дзюбу теперь ждёт «ад».

Ничего кроме жалости подобная ситуация у меня не вызывает. Не дай бог какому-то мужику очутиться на его месте. Задумайтесь на секунду, отныне абсолютно любой поступок Дзюбы будет восприниматься через призму этого ролика. Не очко обычно губит, а к одиннадцати туз, Артём, — пишет он. — Слышите? Это тихонько хихикают Аршавин с порнозвёздами, Глушаков со своими банными девами, Н’Жье со своим феноменальным дебютом в «Динамо». И Александр Филимонов, которого после гола Шевченко прокляла вся страна. Все их проступки отныне будут являться лишь детскими шалостями по сравнению с тем адом, который ждёт капитана сборной России. Было жёстко и публично задето достоинство. Пожалуй, главное, что есть у любого мужика.

Бывший пресс-секретарь сборной России Илья Казаков предложил несколько вариантов, как Дзюбе выйти из ситуации красиво.

Людей, которые его не любят, много. И он постоянно умудряется стимулировать их. Проблема Дзюбы ведь в том, что попадается в машине с Орзул, с усами Черчесову, с Азмуном сейчас. Ситуация безвыходная? Нет, конечно. Можно сейчас отшутиться. Дать пост вроде такого: «Извините, друзья. Не смог сдержать своих чувств к «Матч ТВ». Можно сказать: «Да, дурак, не понимаю кто, как и зачем это слил» и купить на месячную зарплату вещей, еды неимущим и развозить это им самому в свободное время. Выбрать такое искупление. За то, что подставил команды. Поставил их перед необходимостью реагировать, — отмечает Казаков в канале «Foot’больные люди». — Глобально ничего дурного в поступке нет. Но оценивать как игрока надо по футбольному. За одним исключением капитанская повязка в сборной после случившегося, наверное, неуместна. Да и в «Зените» тоже.

Какой будет реакция сборной России и «Зенита»?

Уже на этой неделе наша национальная команда соберётся в Новогорске и ближайшие дни проведёт три матча (один — товарищеский, два — в Лиге наций). К произошедшему, конечно, можно относиться по-разному, но очевидно одно — это удар по имиджу национальной команды. Да, Дзюба — лидер. Да, он близок к тому, чтобы обойти Кержакова и стать лучшим бомбардиром в истории сборной. Но нужен ли такой кумир молодёжи?… Черчесов, понимая это, принял решение убрать Дзюбу из сборной.

Что касается «Зенита», то ситуация смотрится не так плачевно, как в сборной. Петербургский клуб и без того недолюбливают за большие деньги, за влияние. Плюс публичные и не менее громкие скандалы с Кокориным, наверняка, закалили нервы руководителей сине-бело-голубых. Но хочется, чтобы были официальные заявления и какие-то действия. Обычно все пресс-службы молчат…

Пока же сам Дзюба закрыл свой «Инстаграм», где у него больше миллиона подписчиков, а также скрыл комментарии. Нам остаётся лишь следить за дальнейшим. Берём попкорн и наблюдаем. Наш футбол во всей красе вернулся…

Учебник по NumPy — Визуализация примеров для быстрого изучения

Пакет NumPy является незаменимым помощником Python. Он тянет на себе анализ данных, машинное обучение и научные вычисления, а также существенно облегчает обработку векторов и матриц. Некоторые ведущие пакеты Python используют NumPy как основной элемент своей инфраструктуры. К их числу относятся scikit-learn, SciPy, pandas и tensorflow. Помимо возможности разобрать по косточкам числовые данные, умение работать с NumPy дает значительное преимущество при отладке более сложных сценариев библиотек.

Содержание

В данной статье будут рассмотрены основные способы использования NumPy на примерах, а также типы представления данных (таблицы, картинки, текст и так далее) перед их последующей подачей модели машинного обучения.

Создание массивов NumPy

Можно создать массив NumPy (он же ndarray), передав ему список Python, используя np.array(). В данном случае Python создает массив, который выглядит следующим образом:

Нередки случаи, когда необходимо, чтобы NumPy инициализировал значения массива.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!


Для этого NumPy использует такие методы, как ones(), zeros() и random.random(). Требуется просто передать им количество элементов, которые необходимо сгенерировать:

После создания массивов можно манипулировать ими довольно любопытными способами.

Арифметические операции над массивами NumPy

Создадим два массива NumPy и продемонстрируем выгоду их использования.

Массивы будут называться data и ones:

При сложении массивов складываются значения каждого ряда. Это сделать очень просто, достаточно написать data + ones:

Новичкам может прийтись по душе тот факт, что использование абстракций подобного рода не требует написания циклов for с вычислениями. Это отличная абстракция, которая позволяет оценить поставленную задачу на более высоком уровне.

Помимо сложения, здесь также можно выполнить следующие простые арифметические операции:

Довольно часто требуется выполнить какую-то арифметическую операцию между массивом и простым числом. Ее также можно назвать операцией между вектором и скалярной величиной. К примеру, предположим, в массиве указано расстояние в милях, и его нужно перевести в километры. Для этого нужно выполнить операцию data * 1.6:

Как можно увидеть в примере выше, NumPy сам понял, что умножить на указанное число нужно каждый элемент массива. Данный концепт называется трансляцией, или broadcating. Трансляция бывает весьма полезна.

Индексация массива NumPy

Массив NumPy можно разделить на части и присвоить им индексы. Принцип работы похож на то, как это происходит со списками Python.

Агрегирование в NumPy

Дополнительным преимуществом NumPy является наличие в нем функций агрегирования:

Функциями min(), max() и sum() дело не ограничивается.

К примеру:

  • mean() позволяет получить среднее арифметическое;
  • prod() выдает результат умножения всех элементов;
  • std нужно для среднеквадратического отклонения.

Это лишь небольшая часть довольно обширного списка функций агрегирования в NumPy.

Использование нескольких размерностей NumPy

Все перечисленные выше примеры касаются векторов одной размерности. Главным преимуществом NumPy является его способность использовать отмеченные операции с любым количеством размерностей.

Создание матриц NumPy на примерах

Созданные в следующей форме списки из списков Python можно передать NumPy. Он создаст матрицу, которая будет представлять данные списки:

Упомянутые ранее методы ones(), zeros() и random.random() можно использовать так долго, как того требует проект.

Достаточно только добавить им кортеж, в котором будут указаны размерности матрицы, которую мы создаем.

Арифметические операции над матрицами NumPy

Матрицы можно складывать и умножать при помощи арифметических операторов (+ - * /). Стоит, однако, помнить, что матрицы должны быть одного и того же размера. NumPy в данном случае использует операции координат:

Арифметические операции над матрицами разных размеров возможны в том случае, если размерность одной из матриц равно одному. Это значит, что в матрице только один столбец или один ряд. В таком случае для выполнения операции NumPy будет использовать правила трансляции:

dot() Скалярное произведение NumPy

Главное различие с обычными арифметическими операциями здесь в том, что при умножении матриц используется скалярное произведение. В NumPy каждая матрица может использовать метод dot(). Он применяется для проведения скалярных операций с рассматриваемыми матрицами:

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

Индексация матрицы NumPy

Операции индексации и деления незаменимы, когда дело доходит до манипуляции с матрицами:

Агрегирование матриц NumPy

Агрегирование матриц происходит точно так же, как агрегирование векторов:

Используя параметр axis, можно агрегировать не только все значения внутри матрицы, но и значения за столбцами или рядами.

Транспонирование и изменение формы матриц в numpy

Нередки случаи, когда нужно повернуть матрицу. Это может потребоваться при вычислении скалярного произведения двух матриц. Тогда возникает необходимость наличия совпадающих размерностей. У массивов NumPy есть полезное свойство под названием T, что отвечает за транспонирование матрицы.

Некоторые более сложные ситуации требуют возможности переключения между размерностями рассматриваемой матрицы. Это типично для приложений с машинным обучением, где некая модель может запросить определенную форму вывода, которая является отличной от формы начального набора данных. В таких ситуациях пригодится метод reshape() из NumPy. Здесь от вас требуется только передать новые размерности для матрицы. Для размерности вы можете передать -1, и NumPy выведет ее верное значение, опираясь на данные рассматриваемой матрицы:

Еще больше размерностей NumPy

NumPy может произвести все вышеперечисленные операции для любого количества размерностей. Структура данных, расположенных центрально, называется ndarray, или n-мерным массивом.

В большинстве случаев для указания новой размерности требуется просто добавить запятую к параметрам функции NumPy:

На заметку: Стоит иметь в виду, что при выводе 3-мерного массива NumPy результат, представленный в виде текста, выглядит иначе, нежели показано в примере выше. Порядок вывода n-мерного массива NumPy следующий — последняя ось зацикливается быстрее всего, а первая медленнее всего. Это значит, что вывод np.ones((4,3,2)) будет иметь вид:

array([[[1., 1.],
[1., 1.],
[1., 1.]],

[[1., 1.],
[1., 1.],
[1., 1.]],

[[1., 1.],
[1., 1.],
[1., 1.]],

[[1., 1.],
[1., 1.],
[1., 1.]]])



array([[[1., 1.],

        [1., 1.],

        [1., 1.]],

 

       [[1., 1.],

        [1., 1.],

        [1., 1.]],

 

       [[1., 1.],

        [1., 1.],

        [1., 1.]],

 

       [[1., 1.],

        [1., 1.],

        [1., 1.]]])

Примеры работы с NumPy

Подытожим все вышесказанное. Вот несколько примеров полезных инструментов NumPy, которые могут значительно облегчить процесс написания кода.

Математические формулы NumPy

Необходимость внедрения математических формул, которые будут работать с матрицами и векторами, является главной причиной использования NumPy. Именно поэтому NumPy пользуется большой популярностью среди представителей науки. В качестве примера рассмотрим формулу среднеквадратичной ошибки, которая является центральной для контролируемых моделей машинного обучения, что решают проблемы регрессии:

Реализовать данную формулу в NumPy довольно легко:

Главное достоинство NumPy в том, что его не заботит, если predictions и labels содержат одно или тысячи значение (до тех пор, пока они оба одного размера). Рассмотрим пример, последовательно изучив четыре операции в следующей строке кода:

У обоих векторов predictions и labels по три значения. Это значит, что в данном случае n равно трем. После выполнения указанного выше вычитания мы получим значения, которые будут выглядеть следующим образом:

Затем мы можем возвести значения вектора в квадрат:

Теперь мы вычисляем эти значения:

Таким образом мы получаем значение ошибки некого прогноза и score за качество модели.

Представление данных NumPy

Задумайтесь о всех тех типах данных, которыми вам понадобится оперировать, создавая различные модели работы (электронные таблицы, изображения, аудио и так далее). Очень многие типы могут быть представлены как n-мерные массивы:

Таблицы NumPy — примеры использования таблиц

Таблица значений является двумерной матрицей. Каждый лист таблицы может быть отдельной переменной. Для работы с таблицами в Python чаще всего используется pandas.DataFrame, что задействует NumPy и строит поверх него.

Аудио и временные ряды в NumPy

По сути аудио файл  — это одномерный массив семплов. Каждый семпл представляет собой число, которое является крошечным фрагментов аудио сигнала. Аудио CD-качества может содержать 44 100 семплов в секунду, каждый из которых является целым числом в промежутке между -32767 и 32768. Это значит, что десятисекундный WAVE-файл CD-качества можно поместить в массив NumPy длиной в 10 * 44 100 = 441 000 семплов.

Хотите извлечь первую секунду аудио? Просто загрузите файл в массив NumPy под названием audio, после чего получите audio[: 44100].

Фрагмент аудио файла выглядит следующим образом:

То же самое касается данных временных рядов, например, изменения стоимости акций со временем.

Обработка изображений в NumPy

Изображение является матрицей пикселей по размеру (высота х ширина).

Если изображение черно-белое, то есть представленное в полутонах, каждый пиксель может быть представлен как единственное число. Обычно между 0 (черный) и 255 (белый). Хотите обрезать квадрат размером 10 х 10 пикселей в верхнем левом углу картинки? Просто попросите в NumPy image[:10, :10].

Вот как выглядит фрагмент изображения:

Если изображение цветное, каждый пиксель представлен тремя числами. Здесь за основу берется цветовая модель RGB — красный (R), зеленый (G) и синий (B).

В данном случае нам понадобится третья размерность, так как каждая клетка вмещает только одно число. Таким образом, цветная картинка будет представлена массивом ndarray с размерностями: (высота х ширина х 3).

Обработка текста в NumPy на примерах

Когда дело доходит до текста, подход несколько меняется. Цифровое представление текста предполагает создание некого python словаря, то есть инвентаря всех уникальных слов, которые бы распознавались моделью, а также векторно  (embedding step). Попробуем представить в цифровой форме цитату из стихотворения арабского поэта Антара ибн Шаддада, переведенную на английский язык:

“Have the bards who preceded me left any theme unsung?” 

Перед переводом данного предложения в нужную цифровую форму модель должна будет проанализировать огромное количество текста. Здесь можно обработать небольшой набор данный, после чего использовать его для создания словаря из 71 290 слов.

Предложение может быть разбито на массив токенов, что будут словами или частями слов в зависимости от установленных общих правил:

Затем в данной таблице словаря вместо каждого слова мы ставим его id:

Однако данные id все еще не обладают достаточным количеством информации о модели как таковой. Поэтому перед передачей последовательности слов в модель токены/слова должны быть заменены их векторными представлениями. В данном случае используется 50-мерное векторное представление Word2vec.

Здесь ясно видно, что у массива NumPy есть несколько размерностей [embedding_dimension x sequence_length]. На практике все выглядит несколько иначе, однако данное визуальное представление более понятно для разъяснения общих принципов работы.

Для лучшей производительности модели глубокого обучения обычно сохраняют первую размерность для пакета. Это происходит из-за того, что тренировка модели происходит быстрее, если несколько примеров проходят тренировку параллельно. Здесь особенно полезным будет reshape(). Например, такая модель, как BERT, будет ожидать ввода в форме: [batch_size, sequence_length, embedding_size].

Теперь мы получили числовой том, с которым модель может работать и делать полезные вещи. Некоторые строки остались пустыми, однако они могут быть заполнены другими примерами, на которых модель может тренироваться или делать прогнозы.

(На заметку: Поэма, строчку из которой мы использовали в примере, увековечила своего автора в веках. Будучи незаконнорожденным сыном главы племени от рабыни, Антара ибн Шаддан мастерски владел языком поэзии. Вокруг исторической фигуры поэта сложились мифы и легенды, а его стихи стали частью классической арабской литературы).

Проблема P против NP — P versus NP problem

Нерешенная проблема в информатике

Схема классов сложности при условии, что P  ≠  NP . Существование проблем внутри NP, но вне P и NP- полных при этом предположении было установлено теоремой Ладнера .

Проблема P и NP — основная нерешенная проблема в информатике . Он спрашивает, можно ли быстро решить каждую проблему, решение которой можно быстро проверить.

Это одна из семи задач, отобранных Математическим институтом Клэя, из семи задач, удостоенных премии тысячелетия , каждая из которых имеет приз в размере 1 000 000 долларов за первое правильное решение.

Неформальный термин быстро , использованный выше, означает существование алгоритма, решающего задачу, который выполняется за полиномиальное время , так что время выполнения задачи изменяется как полиномиальная функция от размера входных данных алгоритма (в отличие от скажем, экспоненциальное время ). Общий класс вопросов, на которые некоторый алгоритм может дать ответ за полиномиальное время, называется «классом P » или просто « P ». На некоторые вопросы нет известного способа быстро найти ответ, но если ему предоставить информацию, показывающую, каков ответ, можно быстро проверить ответ. Класс вопросов, ответ на которые можно проверить за полиномиальное время, называется NP , что означает «недетерминированное полиномиальное время».

Ответ на вопрос P  =  NP определит, могут ли проблемы, которые можно проверить за полиномиальное время, также решить за полиномиальное время. Если бы оказалось, что P  ≠  NP , что широко распространено, это означало бы, что в NP есть проблемы , которые труднее вычислить, чем проверить: они не могут быть решены за полиномиальное время, но ответ можно проверить за полиномиальное время. .

Помимо того, что это важная проблема в теории вычислений, доказательство в любом случае будет иметь серьезные последствия для математики, криптографии, исследования алгоритмов, искусственного интеллекта , теории игр , обработки мультимедиа, философии , экономики и многих других областей.

пример

Рассмотрим судоку , игру, в которой игроку дается частично заполненная сетка чисел и он пытается заполнить сетку, следуя определенным правилам. Имеется ли хотя бы одно легальное решение при неполной сетке судоку любого размера? Любое предлагаемое решение легко проверить, и время проверки решения растет медленно (полиномиально) по мере увеличения сетки. Однако для всех известных алгоритмов поиска решений для сложных примеров требуется время, которое экспоненциально растет по мере увеличения сетки. Итак, судоку находится в NP (быстро проверяется), но не похоже на P (быстро решается). Тысячи других проблем кажутся похожими в том смысле, что их быстро проверить, но медленно решить. Исследователи показали, что многие проблемы в NP обладают дополнительным свойством, заключающимся в том , что быстрое решение любой из них может быть использовано для построения быстрого решения любой другой проблемы в NP , свойство, называемое NP- полнотой . Десятилетия поисков не привели к быстрому решению ни одной из этих проблем, поэтому большинство ученых подозревают, что ни одна из этих проблем не может быть решена быстро. Однако это никогда не было доказано.

История

Точная постановка проблемы P по сравнению с NP была введена в 1971 году Стивеном Куком в его основополагающей статье «Сложность процедур доказательства теорем» (и независимо Леонидом Левиным в 1973 году) и многими рассматривается как наиболее важная открытая проблема в информатика .

Хотя проблема P и NP была формально определена в 1971 году, ранее были намеки на проблемы, сложность доказательства и возможные последствия. В 1955 году математик Джон Нэш написал письмо в АНБ , в котором предположил, что для взлома достаточно сложного кода потребуется время, экспоненциально зависящее от длины ключа. Если бы это было доказано (а Нэш был достаточно скептически настроен), это означало бы то, что сейчас называется P  ≠  NP , поскольку предложенный ключ можно легко проверить за полиномиальное время. Еще одно упоминание о возникшей проблеме произошла в 1956 письме , написанном Курта Гёделя на Джона фон Неймана . Гёдель спросил, может ли доказательство теорем (теперь известное как co-NP- полное ) быть решено за квадратичное или линейное время , и указал на одно из наиболее важных следствий: если так, то открытие математических доказательств можно автоматизировать.

Контекст

Связь между классами сложности P и NP изучается в теории сложности вычислений , той части теории вычислений, которая связана с ресурсами, необходимыми во время вычислений для решения данной проблемы. Наиболее распространенные ресурсы — это время (сколько шагов требуется для решения проблемы) и пространство (сколько памяти требуется для решения проблемы).

В таком анализе требуется модель компьютера, для которого необходимо проанализировать время. Обычно такие модели предполагают, что компьютер является детерминированным (учитывая текущее состояние компьютера и любые входные данные, существует только одно возможное действие, которое компьютер может предпринять) и последовательным (он выполняет действия одно за другим).

В этой теории класс P состоит из всех тех задач принятия решений (определенных ниже ), которые могут быть решены на детерминированной последовательной машине за время, полиномиальное по размеру входных данных; класс NP состоит из всех тех задач принятия решений, положительные решения которых могут быть проверены за полиномиальное время при наличии правильной информации или, что эквивалентно, чье решение может быть найдено за полиномиальное время на недетерминированной машине. Ясно, что PNP . Возможно, самый большой открытый вопрос в теоретической информатике касается взаимоотношений между этими двумя классами:

Является ли P равняться NP ?

С 2002 года Уильям Гасарх провел три опроса исследователей по этому и смежным вопросам. Уверенность в том, что P  ≠  NP растет — в 2019 году 88% верили в P  ≠  NP , по сравнению с 83% в 2012 году и 61% в 2002 году. Если ограничиться только экспертами, ответы 2019 года стали на 99% верными P  ≠  NP .

NP-полнота

Диаграмма Эйлера для P , NP , NP -полного и NP -сложного множества задач (исключая пустой язык и его дополнение, которые принадлежат P, но не являются NP- полными)

Чтобы ответить на вопрос P = NP , очень полезна концепция NP- полноты. NP- полные проблемы — это набор проблем, к каждой из которых любая другая NP- задача может быть сведена за полиномиальное время и решение которой может быть проверено за полиномиальное время. То есть любую NP- задачу можно трансформировать в любую из NP- полных задач. Неформально NP- полная проблема — это NP- проблема, которая по крайней мере такая же «жесткая», как и любая другая проблема в NP .

NP- трудные задачи — это те, по крайней мере, такие же сложные, как NP- задачи, т. Е. Все NP- задачи могут быть сведены (за полиномиальное время) к ним. NP- трудные задачи не обязательно должны быть в NP , т.Е.Они не должны иметь решения, проверяемые за полиномиальное время.

Например, проблема булевой выполнимости является NP- полной по теореме Кука – Левина , поэтому любой экземпляр любой проблемы в NP можно механически преобразовать в пример проблемы булевой выполнимости за полиномиальное время. Проблема булевой выполнимости — одна из многих таких NP- полных проблем. Если любая NP -полная задача находится в P , то из этого следует, что P = NP . Однако было показано, что многие важные задачи являются NP- полными, и ни один быстрый алгоритм ни для одной из них не известен.

На основе одного определения не очевидно, что существуют NP- полные проблемы; однако тривиальная и надуманная NP- полная проблема может быть сформулирована следующим образом: при описании машины Тьюринга M, гарантированно останавливающейся за полиномиальное время, существует ли вход полиномиального размера, который M примет? Это в NP, потому что (при наличии ввода) просто проверить, принимает ли M ввод, моделируя M ; он является NP- полным, потому что верификатор для любого конкретного случая проблемы в NP может быть закодирован как машина M с полиномиальным временем, которая принимает решение для проверки в качестве входных данных. Тогда вопрос о том, является ли экземпляр экземпляром «да» или «нет», определяется тем, существует ли допустимый ввод.

Первой естественной проблемой, которая оказалась NP- полной, была проблема булевой выполнимости, также известная как SAT. Как отмечалось выше, это теорема Кука – Левина; его доказательство того, что выполнимость является NP- полной, содержит технические подробности о машинах Тьюринга, поскольку они связаны с определением NP . Однако после того, как эта проблема была доказана как NP- полнота, доказательство редукцией предоставило более простой способ показать, что многие другие задачи также являются NP- полными, включая игру Судоку, обсуждавшуюся ранее. В этом случае доказательство показывает, что решение судоку за полиномиальное время также можно использовать для завершения латинских квадратов за полиномиальное время. Это, в свою очередь, дает решение проблемы разбиения трехчастных графов на треугольники, которые затем можно использовать для поиска решений для особого случая SAT, известного как 3-SAT, который затем обеспечивает решение для общей логической выполнимости. Таким образом, решение судоку за полиномиальное время с помощью ряда механических преобразований приводит к полиномиальному решению выполнимости, которое, в свою очередь, может быть использовано для решения любой другой NP- задачи за полиномиальное время. Используя подобные преобразования, можно свести друг к другу обширный класс, казалось бы, не связанных между собой проблем, и в некотором смысле они являются «одной и той же проблемой».

Более серьезные проблемы

Хотя неизвестно, является ли P = NP , проблемы за пределами P известны. Так же, как класс P определяется в терминах полиномиального времени выполнения, класс EXPTIME представляет собой набор всех задач решения, которые имеют экспоненциальное время выполнения. Другими словами, любая проблема в EXPTIME решается детерминированной машиной Тьюринга за время O (2 p ( n ) ), где p ( n ) — полиномиальная функция от n . Проблема решения является EXPTIME -полной, если она находится в EXPTIME , и каждая проблема в EXPTIME имеет полиномиальное сокращение «многие-один» . Известно, что ряд проблем завершается EXPTIME . Поскольку можно показать, что PEXPTIME , эти проблемы выходят за рамки P и, следовательно, требуют более чем полиномиального времени. Фактически, согласно теореме о временной иерархии , они не могут быть решены за значительно меньшее, чем экспоненциальное время. Примеры включают поиск идеальной стратегии для шахматных позиций на доске N × N и аналогичные задачи для других настольных игр.

Проблема определения истинности утверждения в арифметике Пресбургера требует еще больше времени. Фишер и Рабин доказали в 1974 году, что каждый алгоритм, определяющий истинность утверждений Пресбургера длины n, имеет время выполнения, по крайней мере, для некоторой константы c . Следовательно, известно, что проблема требует большего, чем экспоненциальное время выполнения. {cn}}}

Также возможно рассмотреть другие вопросы, помимо проблем с решением. Один из таких классов, состоящий из задач подсчета, называется #P : в то время как проблема NP спрашивает «Есть ли решения?», Соответствующая задача #P спрашивает: «Сколько существует решений?» Ясно, что проблема #P должна быть по крайней мере такой же сложной, как соответствующая проблема NP , поскольку счетчик решений немедленно сообщает, существует ли хотя бы одно решение, если счетчик больше нуля. Удивительно, но некоторые задачи #P , которые считаются сложными, соответствуют простым (например, линейному времени) P- задачам. Для этих проблем очень легко определить, существуют ли решения, но трудно сказать, сколько. Многие из этих проблем являются #P -полными и, следовательно, являются одними из самых сложных проблем в #P , поскольку решение любой из них за полиномиальное время позволило бы решить все другие проблемы #P за полиномиальное время .

Не известно, что проблемы в NP находятся в P или NP-полных

В 1975 году Ричард Э. Ладнер показал, что если PNP, то в NP существуют задачи , которые не являются ни P, ни NP- полными. Такие проблемы называются NP -посредственными проблемами. Проблема изоморфизма графов , то дискретное логарифмирование и целочисленная задача факторизации является примеры проблем , как полагают, Н.П. -intermediate. Это одни из очень немногих проблем NP, о которых не известно, что они находятся в P или являются NP- полными.

Проблема изоморфизма графов является вычислительной задачей определения , является ли две конечными графами являются изоморфными . Важная нерешенная проблема в теории сложности , является ли проблема изоморфизма графов в P , NP -полных, или НП -intermediate. Ответ неизвестен, но считается, что проблема как минимум не NP- неполная. Если изоморфизм графов является NP- полным, иерархия полиномиального времени схлопывается до второго уровня. Поскольку широко распространено мнение, что иерархия полиномов не коллапсирует до какого-либо конечного уровня, считается, что изоморфизм графов не является NP- полным. Лучший алгоритм для этой проблемы, созданный Ласло Бабаем и Юджином Люксом , имеет время выполнения 2 O ( √ n log n ) для графов с n вершинами.

Проблема целочисленной факторизации — это вычислительная проблема определения факторизации на простые множители данного целого числа. Сформулированная как проблема решения, это проблема определения того, имеет ли вход множитель меньше k . Эффективный алгоритм целочисленной факторизации не известен, и этот факт лежит в основе нескольких современных криптографических систем, таких как алгоритм RSA . Проблема целочисленной факторизации находится в NP и co-NP (и даже в UP и co-UP ). Если проблема NP- полная, иерархия полиномиального времени схлопнется до своего первого уровня (т.е. NP = co-NP ). {\ frac {2} {3}} \ right) \ right)}

факторизовать n- битное целое число. Однако самый известный квантовый алгоритм для этой проблемы, алгоритм Шора , действительно работает за полиномиальное время, хотя это не указывает на то, где находится проблема по отношению к классам неквантовой сложности .

P означает «легкий»?

График показывает зависимость времени (в среднем 100 экземпляров в мс при использовании Pentium III 933 МГц) от размера задачи для задач с рюкзаком для современного специализированного алгоритма. Квадратичная аппроксимация предполагает, что эмпирическая алгоритмическая сложность для примеров с 50–10 000 переменных составляет O ((log ( n )) 2 ).

Все вышеприведенное обсуждение предполагает, что P означает «легко», а «не в P » означает «сложно», предположение, известное как тезис Кобхэма . Это распространенное и достаточно точное предположение в теории сложности; однако у него есть некоторые предостережения.

Во-первых, на практике это не всегда так. Теоретический полиномиальный алгоритм может иметь чрезвычайно большие постоянные коэффициенты или показатели, что делает его непрактичным. Например, задача о решении ли граф G содержит H как минор , где Н является фиксированным, может быть решена в рабочее время O ( п 2 ), где п есть число вершин в G . Тем не менее, большое обозначение вывода скрывает константу, зависящую от сверхэкспоненциально H . Константа больше , чем (используя стрелку вверх обозначение Кнута ), и где ч есть число вершин в H .
2↑↑(3+2↑↑(час/2)){\ displaystyle 2 \ uparrow \ uparrow (3 + 2 \ uparrow \ uparrow (h / 2))}

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

Наконец, есть типы вычислений, которые не соответствуют модели машины Тьюринга, на которой определены P и NP , например квантовые вычисления и рандомизированные алгоритмы .

Причины полагать, что P ≠ NP или P = NP

Согласно опросам, большинство компьютерных ученых считают, что P  ≠  NP . Основная причина этого убеждения состоит в том, что после десятилетий изучения этих проблем никто не смог найти алгоритм с полиномиальным временем для любой из более чем 3000 важных известных NP- полных проблем (см. Список NP- полных проблем ). Эти алгоритмы искали задолго до того, как была даже определена концепция NP- полноты ( 21 NP- полная задача Карпа , среди первых обнаруженных, были всеми хорошо известными существующими проблемами в то время, когда они были показаны как NP- полные). Кроме того, результат P = NP будет означать множество других поразительных результатов, которые в настоящее время считаются ложными, например NP = co-NP и P = PH .

Также интуитивно утверждается, что существование проблем, которые трудно решить, но решения которых легко проверить, соответствует реальному опыту.

Если бы P = NP , то мир был бы совершенно другим местом, чем мы обычно предполагаем. Не было бы особой ценности в «творческих скачках», никакого фундаментального разрыва между решением проблемы и признанием решения, когда оно найдено.

С другой стороны, некоторые исследователи полагают, что верить PNP слишком самоуверенно и что исследователи также должны изучить доказательства того, что P = NP . Например, в 2002 году были сделаны такие заявления:

Главный аргумент в пользу P  ≠  NP — полное отсутствие принципиального прогресса в области исчерпывающего поиска. Это, на мой взгляд, очень слабый аргумент. Пространство алгоритмов очень велико, и мы находимся только в начале его освоения. […] Резолюция Великой теоремы Ферма также показывает, что очень простые вопросы могут быть решены только очень глубокими теориями.

Привязанность к спекуляциям — не лучший способ планирования исследования. Всегда нужно пробовать оба направления каждой проблемы. Предрассудки привели к тому, что знаменитые математики не смогли решить известные задачи, решение которых противоречило их ожиданиям, даже несмотря на то, что они разработали все необходимые методы.

Последствия решения

Одна из причин, по которой проблема привлекает так много внимания, — это последствия ответа. Любое из направлений решения могло бы значительно продвинуть теорию и, возможно, также имело бы огромные практические последствия.

P = NP

Доказательство того, что P = NP, может иметь потрясающие практические последствия, если доказательство приведет к эффективным методам решения некоторых важных проблем в NP . Также возможно, что доказательство не приведет напрямую к эффективным методам, возможно, если доказательство неконструктивно или размер ограничивающего полинома слишком велик, чтобы быть эффективным на практике. Последствия, как положительные, так и отрицательные, возникают, поскольку различные NP- полные задачи являются фундаментальными во многих областях.

Криптография, например, решает определенные проблемы. Конструктивное и эффективное решение такой NP- полной проблемы, как 3-SAT, сломало бы большинство существующих криптосистем, включая:

  • Существующие реализации криптографии с открытым ключом , основа для многих современных приложений безопасности, таких как безопасные финансовые транзакции через Интернет.
  • Симметричные шифры, такие как AES или 3DES , используемые для шифрования данных связи.
  • Криптографическое хеширование , лежащее в основе криптовалют блокчейна, таких как биткойны , и используется для аутентификации обновлений программного обеспечения. Для этих приложений проблема поиска прообраза, хеширующего заданное значение, должна быть сложной, чтобы быть полезной, и в идеале должна требовать экспоненциального времени. Однако, если P = NP , то поиск прообраза M может быть выполнен за полиномиальное время путем сокращения до SAT.

Их необходимо будет изменить или заменить теоретически безопасными решениями, которые по своей природе не основаны на неэквивалентности PNP .

С другой стороны, есть колоссальные положительные последствия, которые могут возникнуть в результате решения многих математически трудноразрешимых в настоящее время проблем. Например, многие задачи исследования операций являются NP- полными, например, некоторые типы целочисленного программирования и задача коммивояжера . Эффективные решения этих проблем будут иметь огромное значение для логистики. Многие другие важные проблемы, такие как некоторые проблемы предсказания структуры белка , также являются NP- полными; если бы эти проблемы можно было эффективно решить, это могло бы стимулировать значительный прогресс в науках о жизни и биотехнологии.

Но такие изменения могут бледнеть по значению по сравнению с революцией, которую эффективный метод решения NP- полных задач вызвал бы в самой математике. Гёдель в своих ранних размышлениях о вычислительной сложности отметил, что механический метод, который может решить любую проблему, произведет революцию в математике:

Если бы действительно существовала машина с φ (n) ∼ k ⋅ n (или даже ∼ k ⋅ n 2 ), это имело бы чрезвычайно важные последствия. А именно, это, очевидно, означало бы, что, несмотря на неразрешимость Entscheidungsproblem , умственную работу математика над вопросами типа «да или нет» можно было бы полностью заменить машиной. В конце концов, нужно было бы просто выбрать натуральное число n настолько большим, что когда машина не выдаст результат, не было смысла больше думать о проблеме.

Точно так же Стивен Кук говорит

… это изменило бы математику, позволив компьютеру найти формальное доказательство любой теоремы, имеющее доказательство разумной длины, поскольку формальные доказательства можно легко распознать за полиномиальное время. Примеры задач могут включать все призовые задачи CMI .

Математики-исследователи проводят свою карьеру, пытаясь доказать теоремы, и на поиск некоторых доказательств после того, как были сформулированы проблемы, потребовались десятилетия или даже столетия — например, на доказательство Великой теоремы Ферма потребовалось более трех столетий. Метод, который гарантированно найдет доказательства теорем, если таковые существуют «разумного» размера, по существу положил бы конец этой борьбе.

Дональд Кнут заявил, что он пришел к убеждению, что P = NP , но сдержан в отношении влияния возможного доказательства:

[…] Я не верю, что равенство P = NP окажется полезным, даже если оно будет доказано, потому что такое доказательство почти наверняка будет неконструктивным.

P ≠ NP

Доказательство, которое показало, что PNP не будет обладать практическими вычислительными преимуществами доказательства того, что P = NP , но, тем не менее, представляет собой очень значительный прогресс в теории сложности вычислений и послужит руководством для будущих исследований. Это позволило бы формально показать, что многие общие проблемы не могут быть решены эффективно, так что внимание исследователей может быть сосредоточено на частичных решениях или решениях других проблем. Из-за широко распространенной веры в PNP , большая часть этих исследований уже имеет место.

Кроме того, PNP по- прежнему оставляет открытой среднюю сложность сложных задач в NP . Например, возможно, что SAT требует экспоненциального времени в худшем случае, но что почти все случайно выбранные его экземпляры эффективно разрешимы. Рассел Импальяццо описал пять гипотетических «миров», которые могут возникнуть в результате различных возможных решений вопроса о сложности среднего случая. Они варьируются от «Algorithmica», где P = NP и проблемы, подобные SAT, могут быть эффективно решены во всех случаях, до «Cryptomania», где PNP и создание сложных экземпляров проблем вне P легко, с тремя промежуточными возможностями, отражающими различные возможные распределения сложности по экземплярам NP- трудных задач. «Мир», где PNP, но все проблемы в NP решаемы в среднем случае, в статье называется «эвристикой». На семинаре Принстонского университета в 2009 году был изучен статус пяти миров.

Результаты о сложности доказательства

Хотя сама проблема P = NP остается открытой, несмотря на приз в миллион долларов и огромное количество специализированных исследований, усилия по решению проблемы привели к появлению нескольких новых методов. В частности, некоторые из наиболее плодотворных исследований, связанных с проблемой P = NP , показали, что существующие методы доказательства недостаточно эффективны, чтобы ответить на этот вопрос, что предполагает необходимость новых технических подходов.

В качестве дополнительного доказательства сложности проблемы практически все известные методы доказательства в теории вычислительной сложности попадают в одну из следующих классификаций, каждая из которых, как известно, недостаточна для доказательства того, что PNP :

КлассификацияОпределение
Релятивизирующие доказательстваПредставьте себе мир, в котором каждому алгоритму разрешено делать запросы к некоторой фиксированной подпрограмме, называемой оракулом (черный ящик, который может отвечать на фиксированный набор вопросов за постоянное время, например черный ящик, который решает любую заданную задачу коммивояжера за 1 шаг) , и время работы оракула не засчитывается во время работы алгоритма. Большинство доказательств (особенно классических) применимы единообразно в мире с оракулами, независимо от того, что делает оракул. Эти доказательства называются релятивизирующими . В 1975 году Бейкер, Гилл и Соловей показали, что P = NP для некоторых оракулов, а PNP для других оракулов. Поскольку релятивизирующие доказательства могут доказать только утверждения, которые единообразно истинны по отношению ко всем возможным оракулам, это показало, что релятивизирующие методы не могут разрешить P = NP .
Естественные доказательстваВ 1993 году Александр Разборов и Стивен Рудич определили общий класс методов доказательства для нижних оценок сложности схем, которые называются естественными доказательствами . В то время все ранее известные нижние границы схемы были естественными, и сложность схемы считалась очень многообещающим подходом для решения P = NP . Тем не менее, Разборы и Рудич показали , что если односторонние функции существуют, то нет доказательств естественного метод может отличить P и NP . Хотя формально существование односторонних функций никогда не было доказано, большинство математиков полагают, что они существуют, и доказательство их существования было бы гораздо более сильным утверждением, чем PNP . Таким образом, маловероятно, что одни только естественные доказательства могут разрешить P = NP .
Алгебризация доказательствПосле результата Бейкера-Гилла-Соловея новые нерелятивизирующие методы доказательства были успешно использованы для доказательства того, что IP = PSPACE . Однако в 2008 году Скотт Ааронсон и Ави Вигдерсон показали, что основной технический инструмент, используемый в доказательстве IP = PSPACE , известный как арифметизация , также недостаточен для решения P = NP .

Эти препятствия — еще одна причина, по которой NP- полные задачи полезны: если алгоритм с полиномиальным временем может быть продемонстрирован для NP- полной задачи, это решит проблему P = NP способом, не исключенным приведенными выше результатами.

Эти препятствия также побудили некоторых компьютерных специалистов предположить, что проблема P и NP может быть независимой от стандартных систем аксиом, таких как ZFC (в них нельзя доказать или опровергнуть). Интерпретация результата независимости может заключаться в том, что либо не существует алгоритма с полиномиальным временем для любой NP- полной задачи, и такое доказательство не может быть построено в (например) ZFC, либо что могут существовать алгоритмы с полиномиальным временем для NP- полных задач, но в ZFC невозможно доказать, что такие алгоритмы верны. Однако, если можно показать, используя известные в настоящее время методы, что проблема не может быть решена даже при гораздо более слабых предположениях, расширяющих аксиомы Пеано (PA) для целочисленной арифметики, тогда обязательно будет существовать почти — полиномиальные алгоритмы для каждой задачи в NP . Следовательно, если кто-то считает (как и большинство теоретиков сложности), что не все проблемы в NP имеют эффективные алгоритмы, из этого следует, что доказательства независимости с использованием этих методов невозможны. Кроме того, этот результат подразумевает, что доказать независимость от PA или ZFC с помощью известных в настоящее время методов не проще, чем доказать существование эффективных алгоритмов для всех проблем в NP .

Заявленные решения

Хотя проблема P и NP обычно считается нерешенной, многие любители и некоторые профессиональные исследователи заявляют о своих решениях. Герхард Дж. Вёгингер ведет список, который по состоянию на 2018 г. содержит 62 предполагаемых доказательства P = NP , 50 доказательств P  ≠  NP , 2 доказательства недоказуемости проблемы и одно доказательство неразрешимости. Некоторые попытки решить проблему P и NP получили краткое внимание средств массовой информации, хотя с тех пор эти попытки были опровергнуты.

Логические характеристики

Проблема P = NP может быть переформулирована в терминах выразимых определенных классов логических утверждений в результате работы над описательной сложностью .

Рассмотрим все языки конечных структур с фиксированной сигнатурой, включая отношение линейного порядка . Тогда все такие языки в P могут быть выражены в логике первого порядка с добавлением подходящего комбинатора с наименьшей фиксированной точкой . Фактически, это в сочетании с порядком позволяет определять рекурсивные функции. До тех пор пока подпись содержит , по меньшей мере , один предикат или функцию в дополнение к отношению к лучшему порядке, так что объем пространства , занимаемого для хранения таких конечных структур на самом деле многочлен от числа элементов в структуре, это точно характеризует Р .

Точно так же NP — это набор языков, выражаемых в экзистенциальной логике второго порядка, то есть логика второго порядка, ограниченная исключением универсальной квантификации по отношениям, функциям и подмножествам. Языки в полиномиальной иерархии , PH , соответствуют всем логике второго порядка. Таким образом, вопрос «является ли P правильным подмножеством NP » можно переформулировать следующим образом: «способна ли экзистенциальная логика второго порядка описывать языки (конечных линейно упорядоченных структур с нетривиальной сигнатурой), которые логика первого порядка с наименьшей фиксированной точкой не может?» . Слово «экзистенциальный» можно даже исключить из предыдущей характеристики, поскольку P = NP тогда и только тогда, когда P = PH (поскольку первое установило бы, что NP = co-NP , что, в свою очередь, подразумевает, что NP = PH ).

Алгоритмы с полиномиальным временем

Известно, что ни один алгоритм для любой NP- полной задачи не работает за полиномиальное время. Однако существуют алгоритмы, известные для NP- полных проблем , которые обладают тем свойством, что если P = NP , то алгоритм выполняется за полиномиальное время при приеме экземпляров (хотя и с огромными константами, что делает алгоритм непрактичным). Однако эти алгоритмы не квалифицируются как полиномиальное время, потому что их время работы при отклонении экземпляров не полиномиально. Следующий алгоритм, принадлежащий Левину (без какой-либо ссылки), является таким примером ниже. Он правильно принимает NP- полный язык SUBSET-SUM . Он выполняется за полиномиальное время на входах, которые находятся в SUBSET-SUM, если и только если P = NP :

// Algorithm that accepts the NP-complete language SUBSET-SUM.
//
// this is a polynomial-time algorithm if and only if P = NP.
//
// "Polynomial-time" means it returns "yes" in polynomial time when
// the answer should be "yes", and runs forever when it is "no".
//
// Input: S = a finite set of integers
// Output: "yes" if any subset of S adds up to 0.
// Runs forever with no output otherwise.
// Note: "Program number M" is the program obtained by
// writing the integer M in binary, then
// considering that string of bits to be a
// program. Every possible program can be
// generated this way, though most do nothing
// because of syntax errors.
FOR K = 1...∞
  FOR M = 1...K
    Run program number M for K steps with input S
    IF the program outputs a list of distinct integers
      AND the integers are all in S
      AND the integers sum to 0
    THEN
      OUTPUT "yes" and HALT

Если и только если P = NP , то это алгоритм с полиномиальным временем, принимающий NP- полный язык. «Принятие» означает, что он дает ответы «да» за полиномиальное время, но может работать бесконечно, если ответ «нет» (также известный как полуалгоритм ).

Этот алгоритм крайне непрактичен, даже если P = NP . Если самая короткая программа, которая может решить SUBSET-SUM за полиномиальное время, имеет длину b бит, вышеупомянутый алгоритм сначала попробует как минимум 2 b — 1 другую программу.

Формальные определения

P и NP

Концептуально говоря, проблема решения — это проблема, которая принимает на входе некоторую строку w в алфавите Σ и выводит «да» или «нет». Если существует алгоритм (скажем, машина Тьюринга или компьютерная программа с неограниченной памятью), который может дать правильный ответ для любой входной строки длины n не более чем за cn k шагов, где k и c — константы, независимые от входной строки , то мы говорим , что проблема может быть решена за полиномиальное время и мы помещаем его в классе P . {k})} ; а также

  • язык над разрешим на детерминированной машине Тьюринга за полиномиальное время.Lрзнак равно{Икс#y:(Икс,y)∈р}{\ Displaystyle L_ {R} = \ {x \ #y: (x, y) \ in R \}}Σ∪{#}{\ Displaystyle \ Sigma \ чашка \ {\ # \}}
  • Тьюринг машин , которая решает , L R называется верификатором для L и у такие , что ( х , у ) ∈ R называется сертификатом членства в х в л .

    В общем, верификатор не обязательно должен быть полиномиальным. Однако, чтобы L был в NP , должен быть верификатор, работающий за полиномиальное время.

    пример

    Позволять

    CОMпОSяТEзнак равно{Икс∈N∣Иксзнак равнопq для целых чисел п,q>1}{\ displaystyle \ mathrm {КОМПОЗИТ} = \ left \ {x \ in \ mathbb {N} \ mid x = pq {\ text {для целых чисел}} p, q> 1 \ right \}}
    рзнак равно{(Икс,y)∈N×N∣1<y≤Икс а также y разделяет Икс}.{\ displaystyle R = \ left \ {(x, y) \ in \ mathbb {N} \ times \ mathbb {N} \ mid 1 <y \ leq {\ sqrt {x}} {\ text {and}} y {\ text {divides}} x \ right \}.}

    Очевидно, что вопрос о том, дано ли х представляет собой композит эквивалентен вопрос о том , х является членом композита. Можно показать, что COMPOSITE ∈ NP , проверив, что он удовлетворяет приведенному выше определению (если мы отождествляем натуральные числа с их двоичными представлениями).

    КОМПОЗИТ также находится в P , факт, продемонстрированный изобретением теста простоты AKS .

    NP-полнота

    Есть много эквивалентных способов описания NP- полноты.

    Пусть L — язык над конечным алфавитом Σ.

    L является NP -полным тогда и только тогда, когда выполняются следующие два условия:

    1. LNP ; а также
    2. любое L ‘ в NP полиномиально сводится к L (записывается как ), где тогда и только тогда, когда выполняются следующие два условия:
      L′≤пL{\ Displaystyle L ‘\ leq _ {p} L}L′≤пL{\ Displaystyle L ‘\ leq _ {p} L}

      1. Там существует F  : Σ * → Σ *, что для всех ш в Е * мы имеем: ; а также(ш∈L′⇔ж(ш)∈L){\ Displaystyle (ш \ в L ‘\ Leftrightarrow f (ш) \ в L)}
      2. существует машина Тьюринга с полиномиальным временем, которая останавливается с f ( w ) на своей ленте на любом входе w .

    В качестве альтернативы, если LNP и существует другая NP- полная задача, которая может быть за полиномиально сведена к L , то L является NP- полной задачей. Это обычный способ доказать, что некоторая новая проблема является NP- полной.

    Популярная культура

    Фильм « Коммивояжер » режиссера Тимоти Ланзона — это история о четырех математиках, нанятых правительством США для решения задачи P и NP .

    В шестом эпизоде седьмого сезона Симпсонов « Дом ужасов VI » уравнение P = NP видно вскоре после того, как Гомер случайно наткнулся на «третье измерение».

    Во втором эпизоде сезона 2 Elementary , «Решите для X» вращается вокруг Шерлока и Ватсона , расследующие убийства математиков , которые пытались решить P против NP .

    Смотрите также

    Заметки

    Ссылки

    дальнейшее чтение

    внешняя ссылка

    Что означает N.P.O. стоять за?

    NPO Nothing By Mouth)

    Медицина »Физиология — и не только…

    NPO

    Некоммерческая организация

    Сообщество »Некоммерческие организации

    Оцените:
    NPO

    Национальное правительство США

    »

    Оцените:
    NPO

    EnPro Industries, Inc.

    Бизнес »Символы NYSE

    Оцените:
    NPO

    New Pacific Order

    Computing» Gaming — и многое другое …

    Оцените это:
    NPO

    Национальная организация производительности

    Правительственная

    Оцените это:
    Оцените:
    NPO

    Постановление о сохранении соседства

    Правительственные »Юридические и юридические

    NPO

    Next Planet Over

    Правительственные »NASA

    Оцените:
    NPO

    Nangapinodes

    Оцените:
    NPO

    Никастро Пископо Огрин, адвокаты

    Бизнес »Компании и фирмы — и многое другое…

    Оцените:
    NPO

    Nu Phunk Operation

    Разное »Funnies

    NPO

    Natalie Portman Obsessives

    Разное »Приколы

    Оцените это:
    NPO Оценить:
    NPO

    Оптимизация производительности сети

    Вычислительная техника »Телеком

    Оценить:
    Оцените:
    NPO

    Nil Per Os

    Разное» Несекретные — и многое другое…

    Оцените:
    NPO

    Производственный офис NNSA

    Разное »Несекретный

    NPO

    Ничего не указано Устно

    Разное »Несекретный

    Оценить:
    NPO

    Разное

    Оцените это:
    NPO

    Северная Организация врачей

    Медицина »Физиология

    Оцените это:

    Оцените:
    NPO

    Nederlandse Publieke Omroep

    Разное» Несекретное

    NPO

    Национальный программный офис

    Разное »Несекретный

    Оценить его:
    NPO Оцените:
    NPO

    Никогда точно не создано

    Разное »Несекретно

    495343014654958537105079227968925892354201995611212

    60864034418159813629774771309960518707211349999998372978049951059731732816096318595024459455346

    26425223082533446850352619311881710100031378387528865875332083814206171776691473035982534

    7554687311595628638823537875937519577818577805321712268066130 019278766111959092164201989

    Пи — важная часть многих математических формул.Большинство студентов, изучающих геометрию, впервые сталкиваются с числом пи, когда изучают круги и узнают, что площадь круга равна пи, умноженному на квадрат длины радиуса. Эта формула — A = πr 2 — иногда описывается как «площадь равна pi r в квадрате», что является основой старого анекдота о том, что пироги круглые, а не квадратные.

    Возможно, вы заметили в уравнении выше и в во многих других местах пи представлен (и получил свое название от) греческой буквой пи (π). Греческая буква π была впервые использована для обозначения пи Уильямом Джонсом в 1706 году, потому что π было сокращением греческого слова для обозначения периметра. : «περίμετρος.«

    Биномиальное распределение

    4.3 Биномиальное распределение

    Цели обучения

    1. Изучить понятие биномиальной случайной величины.
    2. Чтобы научиться распознавать случайную величину как биномиальную случайную величину.

    Эксперимент по трехкратному подбрасыванию честной монеты и эксперимент по наблюдению за половой принадлежностью в соответствии с порядком рождения детей в случайно выбранной семье из трех детей совершенно разные, но случайные величины, которые подсчитывают количество орлов при подбрасывании монеты и количество мальчиков в семье (при условии, что оба пола равновероятны) — одна и та же случайная величина с распределением вероятностей

    х0123P (х) 0.1250.3750.3750.125

    Гистограмма, которая графически иллюстрирует это распределение вероятностей, представлена ​​на Рисунке 4.4 «Распределение вероятностей для трех монет и трех детей». Общим для этих двух экспериментов является то, что мы проводим три идентичных и независимых испытания одного и того же действия, каждое испытание имеет только два результата (орел или решка, мальчик или девочка), и вероятность успеха одинакова, 0,5, на каждое испытание. Генерируемая случайная величина называется биномиальной случайной величиной — случайной величиной, которая подсчитывает успехи в фиксированном количестве независимых, идентичных испытаний эксперимента с успехом / неудачей. с параметрами n = 3 и p = 0,5. Это всего лишь один случай из общей ситуации.

    Рисунок 4.4 Распределение вероятностей для трех монет и трех детей

    Определение

    Предположим, случайный эксперимент имеет следующие характеристики.

    1. Есть n идентичных и независимых испытаний общей процедуры.
    2. Для каждого испытания существует ровно два возможных исхода, один из которых называется «успех», а другой «неудача».
    3. Вероятность успеха в одном испытании равна p .

    Тогда дискретная случайная величина X , которая подсчитывает количество успехов в испытаниях n , является биномиальной случайной величиной с параметрами n и p .Мы также говорим, что X имеет биномиальное распределение с параметрами n и p .

    Следующие четыре примера иллюстрируют определение. Обратите внимание, что в каждом случае «успех» — это результат, который учитывается, а не результат, который мы предпочитаем или считаем лучшим в каком-то смысле.

    1. Случайная выборка из 125 студентов была выбрана из крупного колледжа, в котором доля студентов-женщин составляет 57%.Предположим, что X обозначает количество студенток в выборке. В этой ситуации имеется n = 125 идентичных и независимых испытаний общей процедуры, в которых учащийся выбирается случайным образом; для каждого испытания есть ровно два возможных исхода: «успех» (что мы считаем, чтобы студентка была женщиной) и «неудача»; и, наконец, вероятность успеха в любом испытании равна p = 0,57. X — биномиальная случайная величина с параметрами n = 125 и p = 0.57.
    2. Тест с несколькими вариантами ответов состоит из 15 вопросов, каждый из которых имеет пять вариантов. Неподготовленный учащийся, сдающий тест, отвечает на каждый вопрос случайным образом, выбирая произвольный ответ из пяти предложенных. Предположим, X обозначает количество ответов, которые ученик получает правильно. X — биномиальная случайная величина с параметрами n = 15 и p = 1 ∕ 5 = 0,20.
    3. При опросе 1000 зарегистрированных избирателей каждого избирателя спрашивают, намерен ли он голосовать за кандидата Королеву Титанию на предстоящих выборах.Предположим, X обозначает количество избирателей в опросе, которые намереваются проголосовать за Королеву Титанию. X — это биномиальная случайная величина с n = 1000 и p , равными истинной доле избирателей (опрошенных или нет), которые намереваются голосовать за Королеву Титании.
    4. Экспериментальный препарат был дан 30 пациентам с определенным заболеванием. Предположим, что X обозначает количество пациентов, у которых развиваются серьезные побочные эффекты. X — это биномиальная случайная величина с n = 30 и p , равными истинной вероятности того, что у пациента с основным заболеванием возникнут серьезные побочные эффекты при применении этого лекарства.

    Формула вероятности для биномиальной случайной величины

    Часто наиболее сложным аспектом работы с проблемой, связанной с биномиальной случайной величиной, является признание того, что рассматриваемая случайная величина имеет биномиальное распределение. Как только это известно, вероятности можно вычислить по следующей формуле.

    Если X — биномиальная случайная величина с параметрами n и p , то

    Р (х) = п! Х! (П-х)! Pxqn-х

    , где q = 1 − p и где для любого счетного числа м , м! (читать « м факториал») определяется как

    0! = 1, 1! = 1, 2! = 1 · 2, 3! = 1 · 2 · 3

    и в целом

    м! = 1 · 2 · · · (м − 1) · м

    Пример 7

    Семнадцать процентов жертв финансового мошенничества лично знают виновного в мошенничестве.

    1. Используйте формулу для построения распределения вероятностей для числа X людей в случайной выборке из пяти жертв финансового мошенничества, которые лично знали преступника.
    2. Следователь ежедневно рассматривает пять дел о финансовых махинациях. Найдите наиболее частое количество случаев каждый день, когда жертва знала преступника.
    3. Следователь ежедневно рассматривает пять дел о финансовых махинациях.Найдите среднее количество случаев в день, когда жертва знала преступника.

    Решение:

    1. Случайная величина X является биномиальной с параметрами n = 5 и p = 0,17; q = 1 − p = 0,83. Возможные значения X : 0, 1, 2, 3, 4 и 5.

      Р (0) = 5! 0! 5! (0,17) 0 (0,83) 5 = 1 · 2 · 3 · 4 · 5 (1) · (1 · 2 · 3 · 4 · 5) 1 · (0,393

      43) = 0,393

      43≈0,3939
      P (1) = 5! 1! 4! (0.

      Добавить комментарий

      Ваш адрес email не будет опубликован. Обязательные поля помечены *