Клас складності BPP

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

В теорії алгоритмів класом складності BPP (від англ. bounded-error, probabilistic, polynomial) називається клас предикатів, які швидко (за поліноміальний час) обчислюються і дають відповідь з високою достовірністю (причому, жертвуючи часом, можна домогтися як завгодно високої точності відповіді). Задачі, які розв'язуються ймовірнісними методами і лежать в BPP, виникають на практиці дуже часто.

Формальне визначення[ред. | ред. код]

Класом BPP називається клас предикатів P(x), обчислюваних на імовірнісних машинах Тюрінга[en] (звичайних машинах Тюрінга зі стрічкою випадкових чисел) за поліноміальний час з помилкою не більше ⅓. Це означає, що, обчислюючи значення предиката, імовірнісна машина Тюрінга дасть відповідь за час, що дорівнює O(nk), де n — довжина x, причому якщо правильна відповідь 1, то машина видає 1 з імовірністю принаймні ⅔, і навпаки. Множина слів, на яких P(x) повертає 1, називається мовою, розпізнаваною предикатом P(x).

Число ⅓ у визначенні вибрано довільно: якщо замість нього вибрати будь-яке число p, строго менше від ½, то вийде той самий клас. Це правильно, оскільки, якщо є машина Тюрінга, що розпізнає мову з імовірністю помилки p за час O(nk), то точність можна як завгодно добре поліпшити за рахунок відносно невеликого приросту часу. Якщо ми запустимо машину n разів поспіль, а за результат візьмемо результат більшості запусків, то ймовірність помилки впаде до , а час дорівнюватиме O(nk+1). Тут n запусків машини розглядаються як схема Бернуллі з n випробувань та ймовірністю успіху 1-p, а формула, що виражає помилку, — ймовірність невдачі не менш ніж у половині випадків. Якщо тепер запустити машину n2 разів підряд, то час зросте до O(nk+2), а ймовірність помилки впаде до . Таким чином, із зростанням показника многочлена, оцінює час, точність зростає експоненціально, і можна досягти будь-якого потрібного значення.

Алгоритми Монте-Карло[ред. | ред. код]

Ймовірнісний алгоритм приймає мову за стандартом Монте-Карло, якщо ймовірність помилки алгоритму не перевершує . Тобто , де  — предикат належності слова мові . Таким чином, клас BPP утворюють предикати такі що для них існує поліноміальний імовірнісний алгоритм, який приймає їх мову за стандартом Монте-Карло. Такі алгоритми називають алгоритмами Монте-Карло.

Відносини з іншими класами[ред. | ред. код]

Сам BPP замкнутий відносно доповнення. Клас P включений у BPP, оскільки він дає відповідь за поліноміальний час з нульовою помилкою. BPP включений у клас поліноміальної ієрархії і, як наслідок, включений у PH і PSPACE. Крім того, відоме включення BPP в клас P/Poly.

Квантовим аналогом класу BPP (іншими словами, розширенням класу BPP на квантові комп'ютери) є клас BQP.

Інші властивості[ред. | ред. код]

До 2002 року однією з найвідоміших задач, що лежать у класі BPP, була задача розпізнавання простоти числа, для якої існувало кілька різних поліноміальних імовірнісних алгоритмів, таких як тест Міллера-Рабіна, але жодного детермінованого. Однак, у 2002 році детермінований поліноміальний алгоритм знайшли індійські математики Аґравал[en], Каял[en] і Саксена[en], які таким чином довели, що задача розпізнавання простоти числа лежить у класі P. Запропонований ними алгоритм AKS (названий за першими буквами їхніх прізвищ) розпізнає простоту числа довжини n за час O(n4).

Посилання[ред. | ред. код]