P, NP и не только

Preview:

Citation preview

P, NP и не только

Антон КарпуткинDept. of Computer Engineering, TUT

О чем я хочу рассказать

• Что такое «легко» и что такое «сложно»• P, NP и другие классы• Сложные проблемы из разных областей

P&NP for dummies

• P – есть быстрый алгоритм• NP – перебор– Правильный ответ можно быстро проверить• SHA-256:

74722f1e2386c9d0806b92b7e02533f0e5d869c0e23e0f4c123021de48bbca0e• DevClub

• Более сложные классы– Перебор, проверить нельзя

P&NP for dummies

???

История

• 40-е годы – появился компьютер• 50-е годы – ух ты, он сам считает• 60-е годы – что-то как-то долго считает• 70-е годы –почему он так долго считает??

=> теория сложности вычислений

O-нотация

• Основные параметры– Скорость– Память

• – размер входных данных• •

• • •

Полином – легко!

• Алгоритм считается эффективным, если он выполняется за время – – легко???

• Большинство известных полиномиальных алгоритмов имеет небольшую степень– Primality test -

Экспонента – сложно!

• Растет быстрее любого полинома

Вообще не решается!

• Невычислимые функции– Задача останова– Проблема эквивалентности алгоритмов– Десятая проблема Гильберта– Десятая проблема Дильберта

Алгоритмы

• Машина Тьюринга– Детерминированная– Недетерминированная

• Проблема разрешимости– Ответ: да или нет

Классы сложности

• Интересные классы– P– NP, coNP– BPP

• K-сложная проблема Π – любая проблема из K сводится к Π за полиномиальное время

• K-полная проблема Π – Π K-сложна и Π принадлежит K

P

• Время и память – • Сортировка – • Поиск – • Решение системы линейных уравнений – • Проверка числа на простоту

NP

• Время и память на недетерминированной машине –

• Детерминированная машина– Перебор– Проверить ответ

SAT

• Булева функция

• Выполнимость булевой функции (SAT)– Существует ли , ?• Да – SAT• Нет – , UNSAT

coNP

• UNSAT

– Ответ «Нет» быстро не проверить => UNSAT NP• NP = coNP?

BPP

• ?• Рандомизированные алгоритмы• Сложность • Вероятность правильного ответа • P=BPP?

Классы сложности

Сложные проблемы

Задача коммивояжера

• N городов.• M дорог. • Объехать все города и вернутся в начало• Найти кратчайший путь

Линейное программирование

• Часто применяется в экономике• WWII – секретный метод оптимизации

распределения ресурсов

Линейное программирование𝐴1

𝐴2

𝐴3

𝐵1

𝐵2

𝐶11𝑥11

𝐶22𝑥22

- Склад => Завод

𝑥1 𝑗+𝑥2 𝑗+…+𝑥𝑚𝑗≥ 𝐴 𝑗

𝑥𝑖 1+𝑥 𝑖2+…+𝑥𝑖𝑛≤𝐵𝑖

- стоимость перевозок

Найти

𝐶23 𝑥23

Линейное программирование

• – целые и дробные– Simplex – EXP– 1979 – Хачиян, – 1984 – Кармаркар,

• – целые: NP-сложная

Задача о рюкзаке

• 1 рюкзак, N предметов• Вес , стоимость • Рюкзак выдерживает вес W• Найти при

Разложение на множители

• 74037563479561712828046796097429573142593188889231289084936232638972765034 02826627689199641962511784399589433050212758537011896809828673317327310893 0900552505116877063299072396380786710086096962537934650563796359

• 90912135295978188784406583026004374858926083103283587204285121689604115286 40933367824950788367956756806141

• 81438592591100452657278091262844293358778990021676278832009141724293243601 33004116702003240828777970252499

Криптосистемы с открытым ключом

• RSA

– – большие простые числа• Дискретный логарифм– Найти если – a^x % p == b % p– Diffie-Hellman, ElGamal

• Лучший алгоритм:

ATPG

• Генерация тестов– Дигитальная микросхема – Неисправность: – Найти , такие что

• Тест: один вектор – много ошибок

• Диагностика: один вектор – мало ошибок

Формальная верификация

• Проверка эквивалентности– Высокоуровневое описание устойства – Сгенерированная микросхема – Доказать (UNSAT)

• FDIV: -$500M• Валидация компилятора– Подмножество C

Формальная верификация

• Проверка модели– Программа/описание устойства – Свойство

• Никогда не случится (safety)• Когда-нибудь случится (liveness)• Постоянно повторяется (fairness)

– Доказать • MS Research

– Constraint solver Z3– SAGE: Whitebox fuzz testing– Null reference, деление на 0, переполнение буфера...– Область применения: драйвера, парсеры

Минимизация микросхем

• Дана булева функция • Найти ее выражение используя

наименьшее число операций AND, OR, XOR и т.д.

• -полная

Автоматическое планирование

• Первое применение SAT к реальным проблемам (начало 90-х)

• Множество состояний и переходов (действий)

• Начальное состояние, цель• Найти последовательность действий (план)

ведущую из начального состояния к цели

Automated Theorem Proving

• Аксиомы + правила вывода = теоремы• Не UNSAT => ATP• Гипотеза Роббинса– Известна с 30-х годов– Доказана компьютером в 1996

P?NP

• P=NP– Многие другие классы = P– Эффективные методы в различных областях– Криптология

• P≠NP– Status quo

• Скорее всего P≠NP• Решать NP-полные задачи можно и нужно• $1000000

Заключение

• Бессмыслица — искать решение, если оно и так есть. Речь идёт о том, как поступать с

задачей, которая решения не имеет«Понедельник начинается в субботу»

Q&A

Recommended