p, np и не только
TRANSCRIPT
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