>

Звідності задач. Оракульний алгоритм  зводить задачу П1 до задачі П2, якщо для будь-якого оракула , який кожну індивідуальну задачу масової задачі П2 відображає у якийсь з її розв’язків, алгоритм  розв’язує задачу П1. Зазначимо, що якщо П2 є  задачею обчислення або розпізнавання, то означення спрощується, адже в цих випадках оракул , про який йдеться, визначений однозначно. Таким чином, оракульний алгоритм зводить задачу П до задачі обчислення функції , якщо алгоритм розв’язує задачу П. Також, оракульний алгоритм зводить задачу П до задачі розпізнавання множини , якщо алгоритм  розв’язує задачу П.

            Якщо алгоритм зводить П1 до  П2, то кажуть, що він є зведенням першої задачі до другої. Якщо існує зведення   задачі П1 до задачі П2, яке є поліноміальним алгоритмом, то кажуть, що П1 поліноміально зводиться до П2, а називають поліноміальним зведенням.

            Приклад 4.1. Нехай П1 – задача знаходження нетривіального дільника заданого натурального числа, а П2 – задача розпізнавання такої множини :

.

П1 поліноміально зводиться до П2 за допомогою алгоритму бінарного пошуку.

            Вхід: .

·         Якщо (звернення до оракула!), то видати повідомлення, що  просте і припинити роботу.

·         Інакше покласти  та . Подальша робота алгоритму розбивається на кроки. і-тий крок полягає в наступному.

·         Якщо (чергове звернення до оракула), то покласти , ,  а інакше , .

·         Якщо , то подати на вихід і припинити роботу, а інакше перейти до виконання наступного -го кроку.

Неважко зрозуміти, що описаний алгоритм або визначає, що вхід є простим числом, або знаходить його найменший простий дільник. Оцінимо час роботи цього звернення. Як легко зауважити, . Звідси випливає, що  Отже, на вході алгоритм робить не більше кроків і справді є поліноміальним.

                Поняття оракульного алгоритму без труднощів поширюється і на ймовірнісні алгоритми. Таким чином отримуємо поняття ймовірнісного поліноміального зведення однієї задачі до іншої.

            Теорема 4.2. Нехай П1, П2 і П3 є алгоритмічними задачами.

1)      Якщо П1 поліноміально зводиться до П2, а П2 до П3, то П1 поліноміально зводиться до П3 .

2)      Якщо задача П1 поліноміально зводиться до П2, яка розвязується за поліноміальний час, то П1 також розвязується за поліноміальний час.

3)      Якщо існує ймовірнісне поліноміальне зведення П1 до П2 з деякою ймовірністю помилки, і задача П2 розв’язується за поліноміальний час, то П1  розв’язується деяким поліноміальним ймовірнісним алгоритмом з такою ж ймовірністю помилки.

Доведення теореми залишається читачеві у якості нескладної вправи.

Якщо задача П1 поліноміально зводиться до П2, а П2 поліноміально зводиться до П1, то такі задачі називаються поліноміально еквівалентними.

Приклад 4.3. Нехай П1 – задача знаходження нетривіального дільника заданого натурального числа, а П2 – задача знаходження канонічного розкладу розкладу числа на прості співмножники. Ці дві задачі поліноміально еквівалентні. Зведення П1 до П2 очевидне. Продемонструємо обернене зведення, тобто опишемо алгоритм , який безкоштовно отримує розвязки задачі П1 і знаходить канонічний розклад заданого числа на множники. Отримавши на вхід , алгоритм  просить дати йому нетривіальний дільник цього числа. Якщо  отримує відповідь, що такого не існує, то подає на вихід розклад, який складається з самого числа . Якщо ж  отримує нетривіальний дільник , то далі рекурсивно викликає самого себе на входах і , і отримавши розклади на множники цих чисел, обєднує їх у розклад числа .

Поліноміальна звідність визначає відношення часткового порядку на множині класів еквівалентності алгоритмічних задач.

Hosted by uCoz