Недетерминирани алгоритми и клас NP

Да се ​​въведе сложен и примерен

абстрахирайки понятието за недетерминиран алгоритъм, помислете за една проста схема за решаване на проблема на пътуващия продавач в следната настройка: има ли дадена крайна графика с дадени дължини на дъги хамилтонов контур с дължина, която не надвишава стойността IN.

Ако броят на върховете в графиката е н, тогава броят на всички хамилтонови

очевидно контурите няма да надвишават (n-1)!.

Тривиален изчерпателен алгоритъм за търсене се състои от

2 ° Изберете редовни хамилтонови офиси γ.

3 ° Изчислете дължината му L (γ) .

4 ° Ако, тогава УСПЕХ ? "ВЯРНО"; отидете на 6 °>.

5 ° Ако изброяването на всички хамилтонови контури не е завършено,

6 ° Изходна променлива стойност УСПЕХ.

Като се вземе предвид асимптотичното представяне на факториала

лесно е да се види, че тривиалният алгоритъм не е полиномиален по сложност. Това е типичен пример за т.нар

За да се изгради теория за сложността на решаването на дискретни задачи, беше предложено недетерминиран оператор на отгатване

отделни елементи от изброени множества - осъществими решения,

и се счита; че такъв оператор прави избор от всички възможни решения наведнъж. Тази абстракция отговаря на обичайното

идеята за паралелизиране на алгоритми.

Ако х - е краен набор от възможни решения на някакъв проблем, а след това недетерминираният оператор ИЗБЕРЕТЕ (X) извършва

избор х ? ИЗБЕРЕТЕ (X) всички едновременно xÎX, така че последващи действия

алгоритмична проверка на някакво свойство (предикат) P (x) позволява да се направи извод за неговата осъществимост или невъзможност

на целия комплект наведнъж х. Можем да кажем, че ако елемент със свойства, които ни интересуват в набора х присъства, тогава неопределеният оператор непременно ще „познае“ този елемент. Типично

пример за недетерминиран алгоритъм е:

ако P (x) след това напишете ("УСПЕХ")

еlse writeе ("FAILURE");

Такива алгоритми съдържат два основни елемента;

недетерминиран избор и проверка на свойство. Сложността на недетерминиран алгоритъм се определя само от сложността на проверката на свойството P (x), сложността на изброяването се елиминира от недетерминирания оператор по избор, което е абстракция, която е трудна за възприемане, но най-важна за теорията на сложността

Обикновено модел на недетерминирана алгоритмична система е недетерминирана машина на Тюринг (ЛЕПЕЩО) [един]. но

ще използваме модел, който е по-близо до реалния ход

изчисления на съвременен еднопроцесорен компютър:

алгоритмичен език с добавен недетерминиран

оператор ИЗБИРАМ (). Такъв език ще се нарича N-АЛГОЛ и го считайте за разширение на някакъв алгоритмичен език. високо ниво, условно наречено АЛГОЛ. Програма на езика N-АЛГОЛ ще звънна N-програма. Изпълнение на недетерминиран оператор ИЗБИРАМ () се брои за една елементарна стъпка.