Відмінності та зв’язки між рандомізованим та недетермінованим алгоритмами?


30

Які відмінності та зв’язки між рандомізованими алгоритмами та недетермінованими алгоритмами?

З Вікіпедії

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

Недетермінірованного алгоритм являє собою алгоритм , який може мати різні моделі поведінки на різних трасах, на відміну від детермінованого алгоритму. Існує кілька способів алгоритму поводитися по-різному від запуску до запуску. Паралельний алгоритм може виконуватися по- різному на різних траси з - за стан гонки. Імовірнісний алгоритм «S поведінка залежить від генератора випадкових чисел. Алгоритм, який вирішує задачу в недетермінованому поліноміальному часі, може запускатися в поліноміальний час або експоненціальний час залежно від вибору, який він робить під час виконання.

Чи однакові алгоритми та ймовірнісні алгоритми однакові?

Якщо так, то чи є рандомізовані алгоритми лише різновидом недетермінованих алгоритмів?


Я думаю, що частина плутанини виникає через те, що "недетерміновані" і "не детерміновані" звучать так, як вони повинні означати одне і те ж, але вони не: "детермінований" означає "не випадковий" і "недетермінований". Тож "випадковий" і "недетермінований" є обома способами, за якими алгоритм може бути "не детермінованим", але "недетермінований" має конкретне технічне визначення і не є просто антонімом для "детермінованих".
Джо

Відповіді:


24

Недетерміновані алгоритми дуже відрізняються від імовірнісних алгоритмів.

Імовірнісні алгоритми - це ті, що використовують кидання монет і працюють "більшу частину часу". Як приклад, рандомізовані варіанти швидкодіючої роботи працюють у часі у очікуванні (і з великою ймовірністю), але якщо вам не пощастить, можна взяти стільки, скільки Θ ( n 2 ) . Імовірнісні алгоритми практичні і використовуються, наприклад, вашим комп’ютером під час генерації ключів RSA (для перевірки того, що два фактори вашого секретного ключа є простими). Імовірнісний алгоритм, який не використовує жодних викидів монет, іноді називають "детермінованим".Θ(нжурналн)Θ(н2)

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

Чому ми дбаємо про недетерміновані алгоритми? Існує клас проблем, відомий як NP, який складається з проблем рішення, які мають ефективні недетерміновані алгоритми. Більшість людей вважає, що найважчі проблеми цього класу, так звані проблеми, не пов'язані з NP, не мають ефективних детермінованих (або навіть рандомізованих) алгоритмів; це відомо як питання P проти NP. Оскільки багато природних проблем не є повними NP, цікаво знати, чи насправді вони не вирішуються ефективно, в гіршому випадку (на практиці часто випадки, які виникають на практиці, насправді вирішуються в розумні строки).


Спасибі! (1) Я пам’ятаю проблеми НП - це ті, які можна вирішити алгоритмом на недетермінованій машині Тьюрінга в поліноміальний час. Тож "алгоритм на недетермінованій машині Тьюрінга" і "недетермінований алгоритм на детермінованій машині Тьюрінга" еквівалентні в якомусь сенсі? (2) Як ви вважаєте, пробабалістичний алгоритм та рандомізований алгоритм - це одне і те ж поняття? (3) Ви також вважаєте, що Вікіпедія каже, що паралельний алгоритм та пробабалістичний алгоритм є двома видами недетермінованих алгоритмів?
Тім

1
Я не думаю, що аромат сертифіката недетермінізму служить для з'ясування різниці при рандомізації.
Рафаель

(1) Так, двоє однакові. (2) Це два назви для одного поняття. (3) У Вікіпедії наводяться приклади інших типів алгоритмів, хоча презентація може бути оманливою. Паралельний та ймовірнісний алгоритми не є недетермінованими.
Yuval Filmus

4
@ShelbyMooreIII Недетермінізм має дуже специфічне технічне значення в теорії рекурсії та теоретичній інформатиці.
Yuval Filmus

1
Ювал, будь ласка, зауважте, що ви не вважаєте себе конструктивними чи застарілими; ми їх потім видалимо.
Рафаель

15

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

Недетермінізм означає, що деяка частина алгоритму залишається під або навіть невизначеною. Наприклад, "int i = парне число між 0 і n" не вказано. Це означає, що немає унікальної поведінки, яка вказана в цей момент.

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

Існує два способи визначення правильності недетермінізму. Перший - досить простий і менш цікавий, для якого правильність означає, що "алгоритм завжди обчислює те, що я хочу, щоб він обчислив, для всіх послідовностей виборів, які мені дозволяють робити". Іноді це трапляється, якщо автор трохи псевдокоду лінивий вибрати число і каже "вибрати будь-яке парне число між 0 і n", коли "вибрати 0" зробив би алгоритм детермінованим. По суті, замінивши все недетермінізм результатом певного вибору, ви можете зробити алгоритм детермінованим.

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

Цікавим визначенням правильності для недетермінованого алгоритму є "алгоритм завжди обчислює те, що я хочу, щоб обчислити, для деяких послідовності варіантів, які мені дозволяють робити". Це означає, що можуть бути неправильні варіанти, в тому сенсі, що вони змушують алгоритм виробляти неправильну відповідь або навіть переходити в нескінченний цикл. У прикладі "вибрати будь-яке парне число між 0 і n", можливо, 4 і 16 є правильним вибором, але всі інші числа неправильні, і ці числа можуть змінюватися залежно від введення, часткових результатів і вибору, зроблених дотепер.

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

Недетермінізм - це інструмент, який настільки ж потужний, як детермінований алгоритм на основі сертифікатів, тобто алгоритм, який перевіряє властивість, задану екземпляром та сертифікатом для цього властивості. Ви можете просто недетерміновано відгадати сертифікат для одного напрямку, і ви можете дати сертифікат, який містить усі "правильні" відповіді на недетерміновані здогадки 0 та 1 вашої програми для іншого напрямку.

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

Тепер ми переходимо до рандомізованих алгоритмів. Рандомізовані алгоритми схожі на недетерміновані алгоритми, але замість того, щоб "дозволяти" вибір між 0 і 1 у певні моменти, цей вибір визначається випадковим киданням монети у той час, коли вибір повинен бути зроблений (який може відрізнятися від запуску до запуску або коли той самий вибір потрібно зробити знову пізніше під час виконання алгоритму). Це означає, що результат дорівнює 0 або 1 з однаковою ймовірністю. Коректність тепер стає або "алгоритм майже завжди обчислює те, що я хочу, щоб обчислити", або "алгоритм завжди обчислює те, що я хочу, щоб обчислити" (лише детермінована версія). У другому випадку час, необхідний алгоритму для обчислення своєї відповіді, зазвичай «майже завжди швидкий», протиставляється детермінованому «завжди швидкий».

ПZППNП


1
О(|с|)с

14

Коротше кажучи: недетермінізм означає мати декілька, однаково справедливих варіантів того, як продовжити обчислення. Рандомізація означає використання зовнішнього джерела (випадкових) бітів для керування обчисленнями.


Для того, щоб зрозуміти недетермінізм, я пропоную вам ознайомитися з кінцевими автоматами (FA). Для детермінованої FA (DFA) функція переходу є, ну, функцією. З огляду на поточний стан та наступний символ введення, наступний стан однозначно визначений.

(аб)(аc)

NFA
[ джерело ]

а(аб)(аc)а

Ключовим моментом тут є те, що прийняття визначається як "прийняти, якщо є приймальний цикл" для NFA. Цей критерій існування можна інтерпретувати як "завжди вгадуюче право", навіть не маючи фактичних здогадок.

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


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

if ( rand() > 5 )
  do_stuff();
else
  do_other_stuff();

З точки зору кінцевих автоматів, врахуйте це:

PFA
[джерело ]

{а,б,c}10 ).

Σ×ΠΠ є досить великим алфавіт , який використовується випадковим джерелом.


Одне заключне зауваження: ми можемо бачити, що недетермінізм - це суто теоретична концепція, її неможливо реалізувати! То чому ми його використовуємо?

  1. Це часто дозволяє зменшити уявлення. Ви можете знати, що є НФА, для яких найменший показник DFA є експоненціально таким же великим¹. Використання менших - лише питання спрощення конструкції автомата та технічного підтвердження.

  2. Переклад між моделями часто більш прямолінійний, якщо в цільовій моделі дозволений недетермінізм. Розглянемо, наприклад, перетворення регулярних виразів у DFA: звичайний (і простий) спосіб - перевести його в NFA і визначити цей. Я не знаю прямої конструкції.

  3. Це може викликати академічну стурбованість, але цікаво, що недетермінізм може збільшити потужність пристрою. Це не стосується кінцевих автоматів і машин Тьюрінга, що є суперечливими найпопулярнішими пристроями моделей машин, але, наприклад, детерміновані автоматичні автоматичні автоматичні автомати, машини Büchi та автоматизовані вершини дерев зверху вниз можуть приймати суворо менше мов, ніж їхні недетерміновані побратими².


  1. Дивіться це питання на прикладі cstheory.SE .
  2. Дивіться тут , тут і тут (Пропозиція 1.6.2) відповідно.

Отже, оскільки в програмуванні ми не можемо скласти кілька "якщо ще" з однаковою умовою, чи саме тому ймовірність / вага іноді включаються в умову?
kate

@kate Я не знаю, що ти маєш на увазі під цим. Мови програмування - чорт, комп'ютери! - за своєю суттю детерміновані. Ми можемо створити ілюзію випадковості за допомогою PRNG та trule випадкових (що б це не означало) входів.
Рафаель

14

Ви повинні знати, що тут кидаються два різних визначення недетермінізму.

  1. Як визначає вікіпедія, це майже "не детермінізм", тобто будь-який алгоритм, який не завжди має однакову поведінку на одних і тих же входах. Рандомізовані алгоритми - це особливий випадок "не детермінованих" алгоритмів, тому що вони відповідають визначенню, як я щойно дав його.

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

У CS зазвичай недетермінізм означає (2), тому визначення Вікіпедії, яке ви дали (яке є (1)), вводить в оману. Більшість наданих відповідей поки що пояснюють (2), а не (1).


Згідно 1) рандомізований Quicksort є детермінованим алгоритмом; Я не впевнений, що це корисна термінологія. Я думаю, що 1) можна було б описати як перегляд "чорної скриньки", а 2) фактично перевіряє алгоритм / машину під рукою. Можливо, CS - це приблизно 2); Я призначив би точку зору 1) інженерії програмного забезпечення (модульної).
Рафаель

@Raphael, Добре, я повинен зафіксувати (1), щоб сказати, "мати однакову поведінку на одних і тих же входах". Домовились про перевагу (2) над (1).
usul

"Поведінка" неоднозначна, саме в чорному відношенні. :)
Рафаель

Звичайно, але, я думаю, я бачу важливу відмінність між формальною, точно визначеною недетермінованою машиною Тюрінга (2) та невиразним / неоднозначним "не детермінізмом" (1), що може включати випадковість (тоді як НТМ не має). Отже, це все, що я хотів сказати….
usul

Немає нічого «нереального» щодо запуску недетермінованого алгоритму, це просто означає, що під час запуску потрібно робити вибір, для якого результат не визначається алгоритмом. Єдина відмінність між 1 і 2 полягає в тому, що в 1 ви не сказали, коли алгоритм вважається "успішним", тоді як в 2 алгоритм повинен бути таким, який завжди говорить "так" або "ні" в кінці Пробіг, і у вас є проблема рішення, і ви визначаєте відповідь алгоритму на проблему як "так", якщо і лише тоді, коли будь-який з можливих варіантів виконує відповідь "так". Отже, 2 - лише окремий випадок 1.
reinierpost

1

Переглянувши це завдяки деяким пов’язаним дослідженням, яке я роблю, незгоду між собою та деякими іншими, хто відповів, можна перетворити на цілісне розуміння, в якому ми всі мали правильність. Але прийнята в ІМО термінологія з інформатики "обмежений недетермінізм" є невірним оксимороном (про що я говорив раніше).

Їх ключовим моментом є розмежування обмеженого та необмеженого недетермінізму. [1]

Недетерміновані машини Тьюрінга (також "NTMs") обмежували недетермінізм, оскільки кожен перехід стану має обмежений характер кількість можливостей, тобто кількість програм (також "конфігурацій") є кінцевим. Стрічка залишається необмеженою, тому доказ припинення залишається невирішеним. Але для будь-якого даного вводу, який зупиняється, вихід є детермінованим і обмеженим у часі―, тобто для будь-якого введення результат є детермінованим або не закінчується. Також NTM виконують всі можливі конфігурації паралельно, тому вони виконують експоненціально швидше, ніж емуляція NTM на детермінованих машинах Тьюрінга (також "DTMs"). [2]

Насправді не існує жодного недетермінованого зв’язку між входами та результатами в NTM, оскільки результат завжди однаковий для будь-якого вхідного чи початкового стану, що очевидно, тому що вони можуть бути імітовані DTM без будь-якої додаткової випадковості. [2] Невизначене не є антитезою детермінованих, тому що не припинення - це також детермінований результат. Детерміновані машини завжди мають однаковий результат для даного входу, навіть коли цей результат не припиняється. Локалізований недетермінізм NTM є в кожному переході стану алгоритму виконання. Априорно не можна визначити, який шлях дерева може закінчуватися, забезпечуючи вихідний стан. Але невизначеність - це недетермінізм. Таким чином, термін "обмежений недетермінізм" призначений для опису локалізованої невизначеності всередині державної машини, але не взаємозв'язку входів до результатів, звідси поняття "обмеженого". Я все ще думаю, що термін "обмежений недетермінізм" є оксимороном, і його можна було б більш точно описати як "паралельний перехід стану" машина Тюрінга.

Враховуючи, що для будь-якого заданого вхідного чи початкового стану необмежений недетермінізм (він же "індетермінізм") має необмежену кількість можливих станів. Безмежний недетермінізм передбачає не просто кількість можливих конфігурацій програм, а деякий необмежений зовнішній стан, який не є частиною вхідного або початкового стану, наприклад, безмежні затримки. Таким чином, результати можуть відрізнятися від повторних виконань для одного і того ж вводу або початкової умови; таким чином, це не є детермінованим співвідношенням між результатами та результатами. [3]

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

[1] https://en.wikipedia.org/w/index.php?title=Unbounded_nondeterminism&oldid=710628370#Nondeterministic_automata

[2] https://en.wikipedia.org/w/index.php?title=Non-deterministic_Turing_machine&oldid=754212081#Equivalence_with_DTM

[3] Хьюїтт, Мейєр та Шиперський: Модель актора (все, що ти хотів знати ...) . Перейти до позначки 17:44 хвилини.


1
Я не бачу, як це відповідає на питання.
adrianN

1
@adrianN у відповіді викладається пояснення того, що насправді є недетермінізмом. А потім пояснює, як співвідносяться рандомізовані алгоритми. Питання просить співвідносити ці два. Бінго. На питання відповів.
Шелбі Мур III

0

Крім усіх відповідей, які пояснюють різницю, у мене є приклад, який може допомогти вам отримати те, що вони хочуть сказати.
Подумайте про викидання монети, ви отримаєте H або T . Якщо жеребкування є випадковою, то досить імовірно , що з 1000 кидків монети, 500 буде H , і це дуже малоймовірно , що 999 з них буде H . Але якщо викидання монети не є детермінованим, ми не можемо сказати, що отримати 999 H було б малоймовірним.


Я думаю, що ваш пост слугує коментарем, окрім того, він не намагається вирішити основне питання, рандомізоване проти недетермінованих алгоритмів, і, крім того, повертає нас до різного роду недетермінізму.
Зло

-6

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

Підмножина складність полягає в тому, щоб зменшити проблеми в одному наборі до іншого. Таким чином, RP ⊆ NP не виключає можливості рандомізованих алгоритмів, які також є недетермінованими, оскільки, безумовно, супермножина містить підмножину. Підмножина означає, що кожен алгоритм RP (або будь-який алгоритм, повний RP) може бути зведений до деякого алгоритму NP (або будь-якого алгоритму, повного NP). P - це підмножина RP, оскільки кожна проблема в P може бути зведена до проблеми в RP, де кількість неконтрольованої ентропії дорівнює 0.

Тангенціально це аналогічно тому, як кожна проблема в NC (паралельних обчисленнях) може бути зведена до задачі в P шляхом імітації паралельних обчислень в редукції до серійної задачі в P, але ще не доведено, що зворотна правда, тобто що кожна проблема в P може бути зведена до проблеми в NC, а також не доведена неправда, тобто неправдоподібний доказ того, що P-повна проблема не зводиться до проблеми в NC. Можливо, є проблеми, які за своєю суттю є послідовними і не можуть бути обчислені паралельно, але довести, що довести P ≠ NC видається неправдоподібним (з причин, занадто дотичних для обговорення у цій відповіді).

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

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

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

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

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

Додаючи кілька найкращих коментарів, щоб додати роз’яснення моєї точки зору про єдине чітке розмежування між рандомізованим та недетермінованим.

Це дійсно досить елегантно і легко помітити відмінність, як тільки ви все перестанете каламутити, намагаючись описати це з оперативної точки зору, а не з видатної точки зору ентропії.

@reinierpost всі плутають різницю між рандомізованим та недетермінованим. Це призводить до помилок вашого коментаря. Алгоритм реагує на взаємодію вхідної (змінної) ентропії та її вихідного коду (інваріантної) внутрішньої ентропії. Недетермінізм - безмежна ентропія. Інваріантна ентропія може бути навіть внутрішньо необмеженою, наприклад розширенням цифр π . Рандомізована деяка частина ентропії не пов'язана з входом, як визначено (тобто вона може надходити від системного виклику до /dev/randomабо модельованої випадковості, наприклад, NFA або PRNG).

.

Формальне визначення @Raphael недетермінованого кінцевого автомати (NFA) - це кінцева ентропія введення (дані: 5-кортеж). Таким чином, кожна NFA може працювати на детермінованій машині Тьюрінга, тобто не вимагає недетермінованої машини Тьюрінга. Таким чином, NFA не входять до класу недетермінованих проблем. Поняття "недетермінізм" в NFA полягає в тому, що його детермінізм (хоча він чітко присутній, оскільки кожен NFA може бути перетворений в DFA) не розширюється явно - не те саме, що недетермінізм обчислень

.

@ Рафаель заявлений "недетермінізм" у НФА - це насправді випадковість, це сенс мого визначення різниці між випадковістю та недетермінізмом. Моє визначення полягає в тому, що випадковість - це частина ентропії, яка не перебуває під контролем, знаннями (або бажаним невиразним розширенням у випадку NFA) введення в програму чи функцію. Тоді як справжній недетермінізм - це неможливість пізнати ентропію в будь-якому випадку, оскільки вона не є необмеженою. Саме це відрізняло рандомізовану від недетермінізму. Отже, NFA має бути прикладом першого, а не останнього, як ви заявляли.

.

@ Рафаель, як я вже пояснив, поняття недетермінізму в НФА поєднує недетерміновану з кінцевою ентропією. Таким чином, недетермінізм - це локальне поняття не розширювати детермінізм як форму стиснення чи зручності, тому ми не вважаємо, що НФА не є детермінованими, скоріше вони мають вигляд випадковості до оракула, який не бажає обчислювати детерміновану експансію. Але це все міраж, оскільки це називається детерміновано розгорнутим bcz, ентропія не є необмеженою, тобто кінцевою.

Словники - це інструменти. Навчіться ними користуватися.

випадковий прикметник

Статистика. або характеризує процес вибору, в якому кожен елемент набору має рівну ймовірність вибору.

буття або відношення до набору або до елемента множини, кожен з елементів якого має рівну ймовірність виникнення

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

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

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

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

Отже, це говорить нам про те, що детерміновані алгоритми повинні повністю визначатися станом вхідної функції, тобто ми повинні бути в змозі довести, що функція припиняється (або не припиняється) і що не можна визначити. Незважаючи на заплутану спробу Вікіпедії описати недетерміновану, єдиною антитезою до детермінованих, як визначено у Вікіпедії, є алгоритми, стан вхідних даних (ентропія) не визначений. І єдиний спосіб, коли вхідний стан може бути неправильно визначений, - це коли він не є обмеженим (таким чином, його не можна детерміновано попередньо проаналізувати). Саме це відрізняє недетерміновану машину Тьюрінга (і багато реальних програм, які написані загальними мовами Тюрінга, такими як C, Java, Javascript, ML та ін.) Від детермінованих ТМ та мов програмування, таких як HTML, формули електронних таблиць, Кок, Епіграма,

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

Вікіпедія та інші намагаються поєднати рандомізацію з недетермінізмом, але який сенс мати ці два поняття, якщо ви їх красномовно не розрізняєте?

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

Включення випадкової ентропії в стан алгоритму не обов'язково робить її невизначеною. Наприклад, PRNG може мати необхідний безперечний статистичний розподіл, але також бути повністю детермінованим.

Поєднання ортогональних понять - це те, що у людей низький рівень IQ. Я очікую кращого від цього від цієї громади!


4
Це не те, що недетермінізм означає в інформатиці. Недетерміновані алгоритми не є "непередбачуваними".
Девід Річербі

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

3
@ShelbyMooreIII Ви повністю не зрозуміли, що означає недетермінізм у інформатиці. Це не має нічого спільного з ентропією. Це не означає, що ви думаєте, що це означає: саме тому ви вважаєте, що всі інші відповіді неправильні. Можливо, ім'я було погано вибране, але це не в курсі. Він має особливе значення в інформатиці, яке відрізняється від значення, яке воно має в інших науках. Ви намагаєтеся використовувати неправильне визначення, і саме тому вам все здається абсолютно неправильним.
Девід Річербі

4
"Використання терміна" недетермінізм ", коли йдеться про теорію складності обчислювальної техніки [...], явно все стосується ентропії" - ні, це не так.
Рафаель

3
Ми можемо погодитися з цим: будь ласка, перестаньте намагатися нас "навчити", це нікому не допомагає.
Рафаель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.