Недетермінована машина ТюрінгаВ теоретичній інформатиці недетермінована машина Тюрінга — машина Тюрінга, функція переходу якої являє собою недетермінований скінченний автомат. ОписДетермінована машина Тюрінга має функцію переходу, яка по комбінації поточного стану і символу на стрічці визначає три речі: символ, що буде записаний на стрічці, напрямок зміщення головки по стрічці і новий стан скінченного автомату. Наприклад, X на стрічці в стані 3 однозначно визначає перехід в стан 4, запис на стрічку символу Y і переміщення головки на одну позицію вліво. У випадку з недетермінованою машиною Тюрінга, комбінація поточного стану автомата і символу на стрічці може допускати кілька переходів. Наприклад, X на стрічці і стан 3 допускає як стан 4 із записом на стрічку символу Y та зміщенням головки вправо, так і стан 5 з записом на стрічку символу Z і зміщенням головки вліво. Як НМТ «дізнається», який з можливих шляхів приведе в потрібний стан? Є два способи це уявити.
Тобто на відміну від ДМТ, яка має єдиний «шлях обчислень», НМТ має «дерево обчислень» (у загальному випадку - експоненціальне число шляхів). ВизначенняБільш формально, недетермінована машина Тюрінга - це шістка об'єктів , де
Еквівалентність з ДМТІнтуїтивно здається, що НМТ більш потужні, ніж ДМТ, бо вони виконують кілька обчислень відразу. ДМТ може моделювати будь-який перехід НМТ, роблячи багаторазові копії стану, якщо зустрічається неоднозначність. Очевидно, що це моделювання вимагає значно більше часу. Наскільки більше - невідомо. В окремому випадку обмеження за часом у вигляді полінома від довжини входу це питання являє собою класичну задачу «P = NP» (див. класи складності P і NP). Клас алгоритмів, виконуваних за поліноміальний час на недетермінованих машинах Тюрінга, називається класом NP. ПрикладРозглянемо задачу перевірки того що дане b-розрядне ціле число N (2b-1≤N<2b) є складовим. Тоді b — довжина вхідних даних, стосовно якого розглядається час обчислення. Відповідь «ТАК» — число складене і «НІ» — просте. Недетермінований алгоритм для цього завдання може бути таким:
(Алгоритм написаний не безпосередньо у вигляді визначення машини Тьюринга.) Під час обчислення цього алгоритму визначальною частиною є час виконання ділення, яке може бути виконано за O(b2) кроків, що являє собою поліноміальний час. Таким чином завдання знаходиться в класі NP. Для реалізації такого часу обчислення, потрібно вдало вибирати число m, або виконувати обчислення по всіх можливих шляхах (для всіх можливих m) одночасно на безлічі копій машини. Якщо моделювати цей алгоритм на детермінованій машині Тюрінга, пробуючи по черзі всі можливі варіанти, потрібно перевірити N-2=O(2b) гілок. Таким чином загальний час обчислень буде O(b22b) кроків, що є вже експоненціальне час, яке істотно більше ніж поліноміальний час. Таким чином цей алгоритм не потрапляє в клас P. (Проте, можуть бути застосовані інші, більш швидкі алгоритми для цього завдання, які працюють за поліноміальний час, і таким чином завдання потрапляє в клас P.) Див. такожІнші абстрактні виконавці та формальні системи обчислень:
Джерела
|