Чому недетермінізм є корисною концепцією?


23

Автомат - це абстрактна модель цифрового комп’ютера. Цифрові комп'ютери повністю детерміновані; їх стан у будь-який час однозначно передбачуваний із вхідного та початкового стану.

Коли ми намагаємося моделювати реальні системи, то чому включати недетермінізм у теорію автоматів?


1
Можливо, це допоможе запитати, хто спочатку описав НТМ та яка їх мета / мета була на той час.
usul

2
Зауважимо, що те, що машина є детермінованою, не завжди означає наш код. Кожен, хто зробив багатозадачність / багатопоточність, може засвідчити той факт, що часи, коли відбувається перемикання завдань, часто непередбачувані в будь-яких практичних умовах, і ми мусимо розробити чіткі блокування, щоб їх поведінка виглядала детермінованою. (В основному, у державі є приховані змінні.) Комунікації викликають те саме питання. Я, чесно кажучи, не знаю, чи допомагають НДР у вирішенні цих питань - я інженер програмного забезпечення, а не інформатик, - але в реальному світі ваше приміщення є надто оптимістичним.
кешлам

Якщо ви говорите про багатопотоковість, то, мабуть, у вас є недетермінізм, принаймні, якщо ви вважаєте метал і ОС для формування машини. Цікаво, що сам код є детермінованим.
Рафаель

@ Рафаель, @keshlam Іншими словами, ми можемо сказати, що "
Grijesh Chauhan

@keshlam Я додав свою точку у своїй відповіді, @ Tanmoy прочитав оновлену мою відповідь.
Grijesh Chauhan

Відповіді:


16

Так, ви правильні комп'ютери, детерміновані автоматизовані. Недетерміновані моделі є більш корисними з теоретичної мети, колись детермінований рішення не є настільки очевидним для визначення (або, наприклад, постановки проблеми) і настільки мало важко знайти рішення. Тоді один підхід полягає в тому, що спочатку розробити недетерміновану модель, яку може бути порівняно просто спроектувати, а потім спробувати перетворити її в детерміновану. Нижче я спробував продемонструвати, що я маю на увазі на прикладі. Розглянемо регулярний вираз:

(01)*01(0 + 1)*  

Тепер припустимо, якщо вас попросять намалювати DFA для мови, створеної вище RE.

З моїм знанням проектування асоціацій, я знаю , що (1) , коли *присутній в регулярному виразі показала мені потрібно відповідне цикл в FA (2) З'єднати операції як a.bзасіб що - щось на кшталт: .(q0)─a→(q1)─b→(q2)

Отже, при моїй кулачній спробі я намалював би NFA на зразок:

рис

Думав, що це не детерміноване рішення, але виглядає дуже простою ФА, яку можна легко сконструювати, використовуючи заданий регулярний вираз. Мій вид аналогії, щоб показати схожість між вищенаведеним регулярним виразом і моїм NFA, наведено нижче:

  1. Цикл у стані q 0 повинен бути для(01)*
  2. 01(після (01)*) дає(q0)─0→(q1)─1→(q2)
  3. (0 + 1)* дає цикл самоврядування в стані q 2 для мітки 0, 1

Згідно з моєю аналогією, я вважаю, що ФА, який я накреслив вище, порівняно просто отримати з даного РЕ. На щастя, у класі кінцевих автоматів кожна недетермінована модель може бути перетворена на еквівалентну детерміновану модель. У нас є алгоритмічний метод перетворення NFA в DFA . Тож я можу легко перетворити вище NFA у DFA:

фіг.2

Інша частина, на жаль, це не завжди можливо перетворити недетерміновану модель в детерміновану, наприклад, клас для детермінованого автоматичного натискання - це підмножина класу детермінованих автоматизованих висувних автоматичних «перевіряє діаграму Венна », і ви не завжди можете конвертувати NPDA в КПК.

Зазвичай, коли неможливо перетворити недетермінований розчин у детермінований, то за допомогою недетермінованого рішення ми визначаємо детерміновані рішення в піддомен (або, скажімо, частковий домен) замість повного домену. Або ми визначаємо рішення якимись іншими способами (наприклад, жадібним підходом), що, звичайно, не може дати вам оптимальне рішення .

Іноді недетермінізм є ефективним механізмом для точного та ефективного опису якоїсь складної проблеми / рішення, наприклад, недетерміновані машини можуть слугувати моделлю алгоритму пошуку і зворотного відстеження (читайте: Як рядковий процес в недетермінованій моделі з використанням backtrack ). Навпаки детерміновані моделі краще представляють ефективні, мінімізовані та менш зайві рішення.

Тут я також хочу процитувати з Вікіпедії Використання недетермінованого алгоритму :

У дизайні алгоритмів часто не використовуються недетерміновані алгоритми, коли проблема, розв’язана алгоритмом, по суті дозволяє отримати декілька результатів (або коли є один результат з кількома шляхами, за допомогою яких може бути виявлений результат, кожен однаково кращий). Важливо, що кожен результат, який виробляє недетермінований алгоритм, є дійсним, незалежно від того, який вибір алгоритм робить під час роботи.

Велика кількість проблем може бути концептуалізована за допомогою недетермінованих алгоритмів, включаючи найвідоміше невирішене питання в теорії обчислень, P vs NP.

Як також згадував @keshlam у своєму коментарі : "Недетермінізм" на практиці використовується для позначення будь-якої непередбачуваності в результаті якогось процесу. Наприклад, одночасні програми демонструють недетерміновану поведінку - два виконання однієї програми з одним і тим же входом можуть давати різні результати (якщо не застосовується механізм контролю сумісності). Детальніше про це читайте у "Корисність недетермінізму" .

Я б також запропонував вам прочитати наступні посилання:
1. Яка різниця між недетермінізмом та випадковістю?
2. 9.2.2 Недетерміновані проти ймовірнісні моделі: (a). Недетермінований: Я поняття не маю, що робитиме природа. (б). Імовірнісний: Я спостерігав за природою та збирав статистику.
3. Недетерміноване програмування


@Grijest: велике спасибі за таку величезну деталізацію. Одне лише плутанина: "Навпаки детерміновані моделі краще представляють ефективні, мінімізовані та менш зайві рішення". - Але я думаю, що детерміновані моделі є менш ефективними, ніж недетерміновані. (Тому проблеми НП складніші за П. Чи не так?)
tanmoy

@tan Власне використання слова "ефективний" - це неправильно, і так, ви вірні, що недетерміновані моделі є більш здатними, ніж детерміновані. Клас задач, що охоплюються детермінованими моделями, є підмножиною недетермінованої моделі.
Grijesh Chauhan

тож у якому контексті детерміновані моделі "ефективніші", ніж недетерміновані (Як ви вже згадували)?
tanmoy

@tan Припустимо, якщо ви хочете виконати подальшу операцію (наприклад, хочете перетворити FA на RE або пояснити доказ накачування лемми чи інше ..), то детермінована модель дасть кращі результати (тому я сказав, що ефективні).
Grijesh Chauhan

@tan Ти розумієш неоднозначні граматики?
Grijesh Chauhan

9

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

І хоча недетерміновані мови програмування не є основними, вони мають славну історію, можливо, починаючи з GCL Dijkstra . Оскільки машини набирають все більше ядер (незалежних процесорів), деяка форма недетермінізму проникає у все програмування.


Я думаю, що перша частина вашої відповіді фактично неправильна. Як ви вважаєте, чому автомати виникли першими? І DFA, і NFA були визначені через 10+ років після визначення Тьюрінга ТМ. Дивіться дискусію з питань теорії
Артем Казнатчеєв

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

так, але коли люди кажуть, що автомати, вони не мають на увазі ТМ, але мають на увазі автомати з обмеженим станом та їх прямі розширення (КПК, NPDA тощо). Дивіться питання, з яким я пов’язаний для історії там, і ви побачите, що і ТМ, і архітектура фон Неймана були розроблені незалежно від того, що ми називаємо теорією автоматів.
Артем Казнатчеєв

4
@ArtemKaznatcheev, DFA / NFA, PDA, LBA, TM - всі автомати. Як і перетворювачі (FA з виходом, PDA з виходом).
фонбранд

1
Останній абзац невірний. Prolog передує GCL, і навіть досі є навколо та досить мейнстрімом. Пролог, звичайно, не був розроблений у вакуумі, спираючись на попередні недетерміновані мови програмування, такі як PLANNER. Мабуть, кредит припадає на Голомба та Баумерта "Backtrack Programming" з 1965 року.
Псевдонім

7

NFA можуть бути використані на практиці, ознайомтеся з цією відповіддю на stackexchange. Причина полягає в тому, що конструкція силового блоку може бути змодельована на ходу, так би мовити. Щоб імітувати NFA на детермінованому комп'ютері, ми просто відстежуємо можливі стани, в яких може бути NFA. Як правило, це число було б невеликим, і тому моделювання було б швидким. Це набагато практичніше, ніж виконання фактичної конструкції електроживлення: отриманий автомат може бути дуже великим, хоча на практиці більшість наборів рідко буде досягнуто.

Недетермінізм також важливий для складності обчислень, де він використовується для визначення класу NP. (NP класу також має інші, еквівалентні визначення, наприклад, із використанням свідків.)


розуміючи Вашу відповідь, але не змогли зрозуміти її належним чином. Чи можете Ви, будь ласка, пояснити той факт, як побудувати пристрій електроустановки можна легко, використовуючи недетермінізм?
танмой

"Недетермінізм також важливий для складності обчислень, де він використовується для визначення класу NP". - що підтверджує важливість недетермінізму лише в тому випадку, якщо ми припустимо, що НП - корисна концепція, яка є лише в тому випадку, якщо корисний недетермінізм.
Рафаель

@Raphael NP-повнота є важливою концепцією незалежно від вашої позиції щодо недетермінізму.
Yuval Filmus

2
@Tanmoy Якщо у вас недетермінізм, вам не потрібна побудова живлення, але, на жаль, реальні комп'ютери детерміновані. Тим не менш, може бути простіше моделювати NFA безпосередньо, а не перетворювати його спочатку в DFA. Ознайомтеся з відповіддю, до якого я посилаюся, для отримання більш детальної інформації
Yuval Filmus

4

Ви правильно стверджуєте, що автомати є моделями, тому дві частини використання можуть мати недетермінізм:

  1. Використання в моделюванні реальних проблем.

    Крім того, недетерміновані автомати можуть забезпечити більш компактне представлення мов. Наприклад, добре відомо, що є NFA, мінімальний еквівалентний коефіцієнт DFA експоненціально більший.

  2. Використання в теорії.

    Використання недетермінізму може спростити докази, див., Наприклад, перетворення регулярних виразів у кінцеві автомати.


4

(Це переформулювання деяких інших відповідей, але я все-таки опублікую його :)

Ви пишете: Автомат - це абстрактна модель цифрового комп’ютера.

Я не погоджуюсь! Автоматична модель, як ми визначаємо обчислення, а не лише те, як комп'ютери виконують її. Недетермінізм - це саме різниця. Наші технічні характеристики часто не детерміновані.

Наприклад, візьміть сортування злиття . Об'єднання сортування - це сортування, розбиваючи елементи, які будуть відсортовані на дві половини приблизно однакового розміру, сортування кожної половини за допомогою сортування злиття та об'єднання відсортованих результатів. Це повністю визначає ідею сортування злиття, але воно не є детермінованим: воно не визначає порядок сортування половинок (для нас все це може бути одночасно), а також не визначає точний спосіб визначити розкол. Ці деталі потрібно буде заповнити, щоб дійти до детермінованої послідовної версії сортування злиття, яка може бути реалізована однопотоковою комп'ютерною програмою, але я б сказав, що вони є частиною певного способу здійснення сортування злиття, а не ідея злиття сортувати себе.

Те саме стосується алгоритмів загалом - наприклад, рецепти кулінарної книги. Деякі люди визначають алгоритми як детерміновані, в цьому випадку це більш загальне і, на мою думку, більш природне поняття «алгоритм» потребує іншої назви.

Ідея роботи з недетермінованими специфікаціями була сформована методом програмування Дейкстри, який починається із специфікацій, які дають лише попередні та постумови, які повинні відповідати програмі, і систематично розробляє з них детерміновану імперативну програму. Дійкстра, певно, сказав би: сортування - це проблема, взаємозв'язок між до- і пост-умовами, які ми намагаємося встановити; злиття сорту- це підхід до цього, десь на півдорозі між специфікацією проблеми та детермінованим рішенням; конкретний, детермінований алгоритм сортування злиття є конкретним детермінованим рішенням. Але той самий загальний підхід може бути використаний для розробки паралельних програм, в яких кінцева програма все ще є недетермінованою. Такі програми можуть, наприклад, запускатися в розподілених обчислювальних середовищах.


2

Ви праві, ми НЕ МОЖЕ побудувати недетерміновану машину. Тому метою є не використання концепції для побудови кращих машин. Швидше, недетермінізм - корисна концепція при спробі зрозуміти обчислення. Наприклад, тепер ми знаємо, що з точки зору обчислюваності недетермінізм не є чимось більш потужним, ніж детермінізм. Це означає, що ми можемо імітувати недетерміновану машину, використовуючи детерміновану. Однак, з точки зору складності, недетермінізм дозволяє нам, наприклад, міркувати та намагатися зрозуміти співвідношення між труднощами пошуку ефективного рішення проблеми та складністю перевірки рішення (що є відомою проблемою P проти NP) . І так далі. Тому основна причина вивчення недетермінізму - теоретична.


Контекст-без детермінованої Контекст-вільний?
альт

@alto Що з цим?
бабу

@babou Я намагався зазначити, що "недетермінізм - це не щось більш потужне, ніж детермінізм", - це помилкове твердження. NPDA є більш потужними, ніж КПК.
альт

1
@alto: ні, ви неправильно розумієте заяву. З точки зору обчислюваності, вони повністю еквівалентні, оскільки клас проблем (або мови, якщо ви віддаєте перевагу), які ви можете вирішити НЕЗАЛЕЖНО, скільки потрібні обчислювальні ресурси, однаковий. І дійсно, ви МОЖЕТЕ моделювати недетерміновану машину з детермінованою. Знову ж таки, потрібний час та простір НЕ ПОДАЄТЬСЯ в контексті обчислення.
Массімо Кафаро

1
@MassimoCafaro Теоретично не можу погодитися. На практиці, здається, я вважаю за краще міркувати про семантику.
альт

2

Винахід машини Тьюрінга було в 1936 році Тьюрінгом. FSM-подібні моделі були введені двома нейрофізіологами McCulloch та Pitts як модель для нейробіологічної активності в 1943 році зі сторінки історії Стенфордської ЦС :

Захоплююча історія того, як кінцеві автомати стали галуззю інформатики, ілюструє його широке коло застосувань. До перших, хто розглядав поняття машини з кінцевим станом, входила команда біологів, психологів, математиків, інженерів та деякі перші комп'ютерні вчені. У всіх їх спільний інтерес: моделювати процес мислення людини, чи то в мозку, чи в комп’ютері. Уоррен МакКаллох та Уолтер Піттс, два нейрофізіологи, вперше представили опис кінцевих автоматів у 1943 р. Їхній документ під назвою "Логічний обчислення, що має значення нервової активності" зробив вагомий внесок у вивчення теорії нейронних мереж, теорії автомати, теорія обчислень та кібернетика. Пізніше двоє вчених-комп’ютерів - Г. Г. Мелі та Е. Ф. Мур, узагальнив теорію на значно потужніші машини в окремих роботах, опублікованих у 1955-56. Машини з кінцевим станом, машина Мелі та машина Мура названі на знак визнання їх роботи.

не історик CS, але підозрює, що модель МакКаллоха-Піттса не включала недетермінізм, а модель Мелі - Мура , природно узагальнюючи / абстрагуючи формально-теоретичну концепцію. зауважте, що DFA та NFA мають однакову репрезентативну силу, тому, якщо хочеться моделювати реальні системи, є вибір будь-якої. одна основна відмінність полягає в тому, що NFA може бути набагато меншим, ніж еквівалентний DFA (так, наприклад, існує природний елемент стиснення даних / інформації). Є також природні аспекти / аналоги паралелізму в дослідженні NFA.


3
Гей, я бачив, що ви маєте профіль і схожий на те, що хтось навмисно голосує вашими відповідями (там, де у вас є лише дві голоси) ... Ця відповідь не помилкова , у відповідь додається корисна інформація. +1
Гріеш Чаухан

0

Перш за все, я хотів би сказати подяку всім людям, які відповіли на питання. Усі відповіді важливі та додайте корисну інформацію. Але, як це хитке запитання для початківців, і потрібен достатній час, щоб добре його зрозуміти, я Я б спробував підсумувати те, що я отримав з усіх відповідей та з деяких книг:

Насправді у мене була плутанина, що стосувалася механізму недетермінованої моделі. Я завжди замислювався над недетермінованою машиною, оскільки це немеханічна машина, якої в реальному світі не існує. Я завжди порівнював Automata з нашими сучасними комп’ютерами, що має повністю детермінований характер. Фактично я не правильно розумів недетерміновану модель. Тепер я думаю, що я досить добре розумію недетерміновану модель: недетермінова машина - це машина, яка завжди слідує тому шляху виконання, який призводить до прийняття рядка (Без зворотного відстеження). Але як це можливо в реальному житті? : Абсолютно неможливо в даний час комп'ютер бути таким розумним, щоб передбачити майбутнє. То чому взагалі недетермінізм ?. Відповідь на це запитання досить складний. Що я зробив із цього питання, це: Теорія автоматів існувала тоді, коли комп'ютерів не існувало (Перша теорія, потім практична). Це суто теоретичний предмет і поняття недетермінізму з'явилося інтуїтивно. Мотивом теми "Теорія автоматів" було не стосунки з практичними комп'ютерами. Але коли практично приходить комп'ютер, то використовуючи теорію автоматичних даних, ми можемо точно визначити практичні комп’ютери: які обмеження сучасних комп'ютерів. Яка алгоритмічна проблема є дуже складною для комп'ютерів і настільки непрактичною (Тут роль недерермінізму дуже важлива, завдяки якій ми можна виділити два класи складності P і NP). Які рішення цих непрактичних завдань, за допомогою яких можна виконати порівняно швидше.etc. Це корисність недетермінізму. Це суто теоретичний предмет і поняття недетермінізму з'явилося інтуїтивно. Мотивом теми "Теорія автоматів" було не стосунки з практичними комп'ютерами. Але коли практично приходить комп'ютер, то використовуючи теорію автоматичних даних, ми можемо точно визначити практичні комп’ютери: які обмеження сучасних комп'ютерів. Яка алгоритмічна проблема є дуже складною для комп'ютерів і настільки непрактичною (Тут роль недерермінізму дуже важлива, завдяки якій ми можна виділити два класи складності P і NP). Які рішення цих непрактичних завдань, за допомогою яких можна виконати порівняно швидше.etc. Це корисність недетермінізму. Це суто теоретичний предмет і поняття недетермінізму з'явилося інтуїтивно. Мотивом теми "Теорія автоматів" було не стосунки з практичними комп'ютерами. Але коли практично приходить комп'ютер, то використовуючи теорію автоматичних даних, ми можемо точно визначити практичні комп’ютери: які обмеження сучасних комп'ютерів. Яка алгоритмічна проблема є дуже складною для комп'ютерів і настільки непрактичною (Тут роль недерермінізму дуже важлива, завдяки якій ми можна виділити два класи складності P і NP). Які рішення цих непрактичних завдань, за допомогою яких можна виконати порівняно швидше.etc. Це корисність недетермінізму. Але коли практично приходить комп'ютер, то використовуючи теорію автоматичних даних, ми можемо точно визначити практичні комп’ютери: які обмеження сучасних комп'ютерів. Яка алгоритмічна проблема є дуже складною для комп'ютерів і настільки непрактичною (Тут роль недерермінізму дуже важлива, завдяки якій ми можна виділити два класи складності P і NP). Які рішення цих непрактичних завдань, за допомогою яких можна виконати порівняно швидше.etc. Це корисність недетермінізму. Але коли практично приходить комп'ютер, то використовуючи теорію автоматичних даних, ми можемо точно визначити практичні комп’ютери: які обмеження сучасних комп'ютерів. Яка алгоритмічна проблема є дуже складною для комп'ютерів і настільки непрактичною (Тут роль недерермінізму дуже важлива, завдяки якій ми можна виділити два класи складності P і NP). Які рішення цих непрактичних завдань, за допомогою яких можна виконати порівняно швидше.etc. Це корисність недетермінізму. Що є рішенням цих непрактичних проблем, за допомогою яких це можна виконати порівняно швидше.etc. Це корисність недетермінізму. Що є рішенням цих непрактичних проблем, за допомогою яких це можна виконати порівняно швидше.etc. Це корисність недетермінізму.

Будь ласка, виправте мене, якщо є щось не так.


Неправильно сказати, що недетермінований апарат - це машина, яка завжди слідує шляху виконання, який призводить до прийняття рядка . Це не робить! Недетермінова машина - це машина, робота якої дозволяє зробити певний безпрецедентний (= недетермінований) вибір під час виконання. У таких машинах немає нічого нереального, наприклад, вони можуть попросити оточення зробити цей вибір. Потім ці машини застосовуються до завдань, для яких встановлено, що певний вибір призведе до стану прийняття.
reinierpost

@reinierpost: Отже, ви говорите, що недетерміновані машини існують у реальному житті.
tanmoy

Так. Ось приклад: припустимо, ви керуєте автомобілем, і не приймаєте жодних рішень щодо маршруту, яким слід керуватися. Наприклад, ви можете безцільно їздити навколо, або ви можете приймати свої вказівки від навігатора або навігаційного пристрою. Автомобіль і ви - недетермінова система, щоб керувати місцями. Ви рухаєтесь через трафік і постійно стикаєтеся з вибором, в якому напрямку рухатися. Для вас і автомобіля ці варіанти є недетермінованими: ви не вирішуєте, в якому напрямку рухатися, але, враховуючи це рішення, ви будете його виконувати.
reinierpost

@reinierpost: Чи існує який-небудь недетермінований комп'ютер? Моя відповідь - НІ. тому що, якщо вона існує, то проблеми НП мали б складну багаточлен. чи не так?
танмо

Будь комп'ютери детерміновані чи недетерміновані, залежить від того, як ви на них дивитесь. Коли комп'ютер зупиняється і чекає, коли користувач щось зробить, і його наступні дії залежатимуть від того, що робить користувач, ви можете сказати, що це недетермінований вибір. Ні, це не означає, що P = NP.
reinierpost

0

недетермінізм корисний тим, що допомагає зрозуміти детермінізм, а не навпаки. Можна сказати, недетермінізм є більшою ідеєю. Детермінована машина для твердіння - це особливий випадок недетермінованої. - Недетермінізм може допомогти нам зрозуміти, чому на сьогоднішніх платформах деякі проблеми важко усунути. Існує ряд обчислювальних проблем, які не мають ефективного рішення на детермінованій обчислювальній платформі, але ми розуміємо, що на недетермінованих можуть бути ефективні рішення. ... стан, кодування, недетермінізм, всі вони пов'язані http://people.cs.umass.edu/~rsnbrg/teach-eatcs.pdf

У детермінованій машині Тьюрінга набір правил передбачає максимум одну дію, яку слід виконати для будь-якої даної ситуації. Навпаки, недетермінований апарат Тьюрінга (NTM) може мати набір правил, які прописують більше, ніж одну дію для даної ситуації. http://en.wikipedia.org/wiki/Non-deterministic_Turing_machine Якщо ви можете створити програмне поле, яке може керувати переходами стану настільки добре, що воно може обробляти більше ніж одну дію, ви можете отримати продуктивність поза детермінованими машинами.


Я не впевнений, що нібито посилання на реальність взагалі корисні. Цілком зрозуміло, що ми не можемо побудувати недетерміновану машину (хоча б сьогодні), тому це цілком теоретична конструкція.
Рафаель

Ми можемо побудувати недетерміновану машину, дозволяючи недетермінованим рішенням приймати щось зовнішнє для машини.
reinierpost

@ reinierpost, що ще важливіше, ми можемо будувати недетерміновані машини як детерміновані, не несучи експоненціальних накладних витрат. див. теорему Савича. en.wikipedia.org/wiki/Savitch's_theorem
Том

@ Рафаель, важливі деякі посилання на реальний світ. Чому кешування працює? Тому що події в реальному світі, що в кінцевому рахунку є джерелом усіх даних, трапляються за нормальним розподілом. дивись місцевість: тимчасовий: trablescope.blogspot.co.at/2009/11/…
Том

@ reinierpost, і що щось зовнішнє - це те, що Тьюрінг називав машиною оракул. Я думаю, ви можете подумати, що це як дані, що виходять із кешу, чи щось на зразок мульти-стрічкового апарату або навіть ввімкнення в пам'ять випадкового доступу.
Том

0

Чому недетермінізм є корисною концепцією?

Детермінізм має сильну тенденцію до розбиття симетрії. Ця тенденція ще сильніша для послідовного детермінізму, але поняття ациклічного спрямованого графа та топологічного порядку такого графа дозволяє ігнорувати різницю між детермінізмом та послідовним детермінізмом. Недетермінізм - це надмножина детермінізму, що дозволяє зберегти більше симетрій. При проектуванні рішення задачі, починаючи з недетермінованого рішення, можна зберегти корисні симетрії, і що зберігає опис рішення невеликим і компактним. Розрив симетрії може бути потім делегований на більш пізній етап під час реалізації, перетворюючи при цьому недетермінований розчин у детермінований.

Часто недетермінізм означає, що поняття часткової функції замінюється поняттям відношення. У такому випадку недетермінована машина може запускатись як вперед, так і назад у часі, тоді як це взагалі неможливо для детермінованої машини. Якщо ми працюємо з тотальними функціями для детермінізму та багатозначними загальними функціями для недетермінантного, натомість симетрія вже не така приємна, але вона все одно може бути змушена працювати.


Чи можете ви навести конкретний приклад? Мені важко зрозуміти, що ти маєш на увазі під "симетрією" тут.
Рафаель

@Raphael Як щодо реверсування (01) * 01 (0 + 1) * до (0 + 1) * 10 (10) * таким чином, щоб він розпізнавав зворотний рядок вводу, і застосувати цю симетрію до недетермінованої машини шляхом перевернення всіх стрілка та розміщення стану початку та кінця? Я не впевнений, чи є значно більш цікаві приклади для машин з кінцевим станом, але я можу спробувати запропонувати цікавий приклад для КПК.
Томас Клімпель

Про свою відповідь на подібне запитання я писав у публікації в блозі про оборотність бінарних відносин, субстохастичні матриці та часткові функції .
Томас Клімпель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.