Различия и отношения между рандомизированными и недетерминированными алгоритмами?

30

Какие различия и отношения существуют между рандомизированными алгоритмами и недетерминированными алгоритмами?

Из Википедии

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

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

Являются ли рандомизированные алгоритмы и вероятностные алгоритмы одним и тем же понятием?

Если да, являются ли рандомизированные алгоритмы просто недетерминированными алгоритмами?

Тим
источник
Я думаю, что часть путаницы возникает из-за того, что «недетерминированный» и «недетерминированный» звучат так, как будто они должны означать одно и то же, но они не понимают: «детерминированный» подразумевает «не случайный» и «не недетерминированный». Таким образом, «случайный» и «недетерминированный» - это оба способа, которыми алгоритм может быть «недетерминированным», но «недетерминированный» имеет конкретное техническое определение, а не просто антоним для «детерминированного».
Джо
3
Смотрите также В чем разница между недетерминизмом и случайностью?
Жиль "ТАК - перестань быть злым"

Ответы:

24

Недетерминированные алгоритмы очень отличаются от вероятностных алгоритмов.

Вероятностные алгоритмы, использующие броски монет и работающие «большую часть времени». Например, рандомизированные варианты быстрой сортировки работают во времени в ожидании (и с высокой вероятностью), но если вам не повезло, это может занять целых Θ ( n 2 ) . Вероятностные алгоритмы практичны и используются, например, вашим компьютером при генерации ключей RSA (чтобы проверить, что два фактора вашего секретного ключа просты). Вероятностный алгоритм, который не использует броски монет, иногда называют «детерминированным».Θ(nlogn)Θ(n2)

Недетерминированные алгоритмы - это те, которые «нуждаются в подсказке», но всегда верны: их нельзя обмануть, если дать неверный совет. В качестве примера приведем недетерминированный алгоритм, который вычисляет целое число : угадать факторизацию n и убедиться, что все факторы простые (для этого есть «быстрый в теории» детерминированный алгоритм). Этот алгоритм очень быстрый и отклоняет ложные подсказки. Большинство людей считают, что рандомизированные алгоритмы не могут быстро вычислять целые числа. Очевидно, что эта модель вычислений не является реалистичной.NN

Почему мы заботимся о недетерминированных алгоритмах? Существует класс задач, известный как NP, который состоит из задач решения, которые имеют эффективные недетерминированные алгоритмы. Большинство людей думают, что самые сложные проблемы в этом классе, так называемые NP-полные задачи, не имеют эффективных детерминированных (или даже рандомизированных) алгоритмов; это известно как вопрос P против NP. Поскольку многие естественные проблемы являются NP-полными, интересно знать, не являются ли они фактически разрешимыми эффективно, в худшем случае (на практике часто возникающие на практике случаи фактически разрешимы в разумные сроки).

Юваль Фильмус
источник
Благодарность! (1) Я помню, что проблемы NP - это те, которые могут быть решены алгоритмом на недетерминированной машине Тьюринга за полиномиальное время. Таким образом, «алгоритм на недетерминированной машине Тьюринга» и «недетерминированный алгоритм на детерминированной машине Тьюринга» в некотором смысле эквивалентны? (2) Как вы думаете, вероятностный алгоритм и рандомизированный алгоритм - это одно и то же понятие? (3) Считаете ли вы, что Википедия говорит, что параллельный алгоритм и вероятностный алгоритм - это два вида недетерминированных алгоритмов, это неправильно?
Тим
1
Я не думаю, что сертификат недетерминированности помогает прояснить разницу с рандомизацией.
Рафаэль
(1) Да, оба одинаковы. (2) Это два названия одного и того же понятия. (3) Википедия дает некоторые примеры других типов алгоритмов, хотя представление может вводить в заблуждение. Параллельные и вероятностные алгоритмы не являются недетерминированными.
Юваль Фильмус
4
@ShelbyMooreIII Недетерминизм имеет очень специфическое техническое значение в теории рекурсии и теоретической информатике.
Юваль Фильмус
1
Юваль, пожалуйста, пометьте комментарии, которые вы считаете неконструктивными или устаревшими; мы удалим их тогда.
Рафаэль
15

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

Недетерминизм означает, что некоторая часть алгоритма оставлена ​​или даже не указана. Например, «int i = четное число от 0 до n» не указано. Это означает, что не существует уникального поведения, указанного на этом этапе.

Чтобы это различие было полезным, вам нужна (обычная) концепция «правильности» для (детерминированных) алгоритмов, которая неофициально заключается в том, что «алгоритм всегда вычисляет то, что я хочу, чтобы он вычислял». Тогда становится интересно подумать о том, что будет означать корректность для недетерминированных алгоритмов, которые должны учитывать варианты, возможные в недостаточно определенных инструкциях.

Существует два способа определения правильности недетерминизма. Первый довольно прост и менее интересен, для чего правильность означает «алгоритм всегда вычисляет то, что я хочу, чтобы он вычислял, для всех последовательностей выборов, которые мне разрешено делать». Это иногда происходит, если автор части псевдокода слишком ленив, чтобы выбрать число, и говорит «выберите любое четное число от 0 до n», когда «выбор 0» сделал бы алгоритм детерминированным. По сути, заменяя весь недетерминизм результатом какого-либо выбора, вы можете сделать алгоритм детерминированным.

Это также «недетерминизм», упомянутый во втором абзаце. Это также недетерминизм в параллельных алгоритмах: в этих алгоритмах вы не совсем уверены, как точно выглядит выполнение, но вы знаете, что оно всегда будет работать, независимо от того, что происходит точно (в противном случае ваш параллельный алгоритм был бы неверным).

Интересное определение корректности для недетерминированного алгоритма - «алгоритм всегда вычисляет то, что я хочу, чтобы он вычислял, для некоторой последовательности выборов, которые мне разрешено делать». Это означает, что могут быть неправильные варианты в том смысле, что они заставляют алгоритм давать неправильный ответ или даже идти бесконечным циклом. В примере «выберите любое четное число от 0 до n», возможно, 4 и 16 - правильный выбор, но все другие числа неправильные, и эти числа могут варьироваться в зависимости от ввода, частичных результатов и сделанных на данный момент выборов.

При использовании в компьютерных науках недетерминизм обычно ограничивается недетерминированным выбором либо 0, либо 1. Однако, если вы выбираете много таких битов недетерминированным образом, вы можете генерировать длинные недетерминированные числа или другие объекты, а также делать недетерминированные выборы, так что это вряд ли (если когда-либо) ограничивает его применимость - если применимость ограничена, недетерминизм был слишком силен в первую очередь.

Недетерминизм - это такой же мощный инструмент, как и детерминированный алгоритм на основе сертификатов, то есть алгоритм, который проверяет свойство, данное экземпляру, и сертификат для этого свойства. Вы можете просто недетерминированно угадать сертификат для одного направления, и вы можете дать сертификат, который содержит все «правильные» ответы для недетерминированных догадок 0 и 1 вашей программы для другого направления.

Если мы добавим время бега в микс, то все станет еще интереснее. Время выполнения недетерминированного алгоритма обычно принимается за минимальное значение для всех (правильных) выборов. Тем не менее, другие варианты могут привести к значительно худшему времени выполнения (которое может быть асимптотически хуже или даже произвольно хуже, чем минимум), или даже к бесконечному циклу. Вот почему мы берем минимум: нас не волнуют эти странные случаи.

Теперь перейдем к рандомизированным алгоритмам. Рандомизированные алгоритмы похожи на недетерминированные алгоритмы, но вместо того, чтобы «разрешать» выбор между 0 и 1 в определенных точках, этот выбор определяется случайным броском монеты в тот момент, когда выбор должен быть сделан (который может отличаться от запуска к бегу или когда тот же выбор должен быть сделан снова позже во время выполнения алгоритма). Это означает, что результат равен 0 или 1 с равной вероятностью. Корректность теперь становится либо «алгоритм почти всегда вычисляет то, что я хочу вычислить», либо «алгоритм всегда вычисляет то, что я хочу вычислить» (только детерминированная версия). Во втором случае время, необходимое алгоритму для вычисления своего ответа, обычно «почти всегда быстрое», в отличие от детерминированного «всегда быстрого».

пZппNп

Алекс тен Бринк
источник
1
О(|s|)s
14

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


Чтобы понять недетерминизм, я предлагаю вам взглянуть на конечные автоматы (ФА). Для детерминированного FA (DFA), функция перехода, ну, в общем, функция. Учитывая текущее состояние и следующий входной символ, следующее состояние определяется однозначно.

(aб)*(aс)*

NFA
[ источник ]

a(aб)*(aс)*a

Ключевым моментом здесь является то, что принятие определяется как «принять, если есть прогон принятия» для NFA. Этот критерий существования можно интерпретировать как «всегда правильно угадывать», хотя в действительности угадывания нет.

Обратите внимание, что здесь нет нигде вероятностей. Если бы вы переводили недетерминизм в языки программирования, у вас были бы операторы, которые могут вызывать переходы к другим другим операторам при одном и том же состоянии . Такого не существует, разве что в эзотерических языках программирования, предназначенных для того, чтобы поразить вас.


Рандомизация совсем другая. Если мы разобьем его, у автомата / программы не будет нескольких вариантов продолжения выполнения. Как только случайные биты получены, следующий оператор определен однозначно:

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

В терминах конечных автоматов рассмотрим это:

PFA
[ источник ]

{a,б,с}*10

Σ×ΠΠ


И последнее замечание: мы видим, что недетерминизм - это чисто теоретическая концепция, она не может быть реализована! Так почему мы используем это?

  1. Это часто позволяет меньшие представления. Возможно, вы знаете, что существуют NFA, для которых наименьший DFA экспоненциально велик¹. Использование меньших - это просто вопрос упрощения дизайна автоматов и технических доказательств.

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

  3. Это может быть академической проблемой, но интересно, что недетерминизм может увеличить мощность устройства. Это не относится к конечным автоматам и машинам Тьюринга, которые, вероятно, являются наиболее популярными моделями устройств, но, например, детерминированные pushdown-автоматы, автоматы Büchi и нисходящие древовидные автоматы могут принимать строго меньше языков, чем их недетерминированные братья и сестры2.


  1. Посмотрите этот вопрос на cstheory.SE для примера.
  2. Смотрите здесь , здесь и здесь (предложение 1.6.2) соответственно.
Рафаэль
источник
Итак, поскольку в программировании мы не можем создать несколько «если еще» с одним и тем же условием, поэтому ли вероятность / вес иногда включается в условие?
кейт
@kate Я не знаю, что ты имеешь в виду под этим. Языки программирования - чёрт, компьютеры! - по своей сути детерминистичны. Мы можем создать иллюзию случайности, используя PRNG и действительно случайные (что бы это ни значило) входные данные.
Рафаэль
14

Вы должны знать, что здесь есть два разных определения недетерминизма.

  1. Как определяет это википедия, в значительной степени «не детерминизм», то есть любой алгоритм, который не всегда имеет одинаковое поведение на одних и тех же входах. Рандомизированные алгоритмы являются частным случаем «недетерминированных» алгоритмов, потому что они соответствуют определению, которое я только что дал.

  2. Недетерминированные модели вычислений (например, недетерминированные машины Тьюринга) являются теоретическими моделями вычислений. У них может быть несколько возможных путей выполнения, и они «принимают», если любой из этих путей принимает. Вы должны отметить, что они не настоящие. Невозможно физически запустить алгоритм, который является недетерминированным в этом смысле, хотя вы можете смоделировать его с помощью рандомизированного или детерминированного.

В CS недетерминизм обычно означает (2), поэтому приведенное вами определение Википедии (а именно (1)) вводит в заблуждение. Большинство ответов, приведенных до сих пор, объясняют (2), а не (1).

усул
источник
Согласно 1) рандомизированная быстрая сортировка является детерминированным алгоритмом; Я не уверен, что это полезная терминология. Я думаю, 1) можно описать как представление «черного ящика», в то время как 2) фактически проверяет алгоритм / машину под рукой. Возможно, CS это все о 2); Я бы назначил точку зрения 1) для (модульной) разработки программного обеспечения.
Рафаэль
@ Рафаэль, Хороший вопрос, я должен исправить (1), чтобы сказать "иметь одинаковое поведение на тех же входах". Договорились о предпочтении (2) над (1).
usul
«Поведение» неоднозначно, именно так, как в «черном ящике». :)
Рафаэль
Конечно, но, я думаю, я рассматриваю важное различие как между формальным, точно определенным недетерминированным механизмом Тьюринга (2), так и неопределенным / неоднозначным «недетерминизмом» (1), который может включать случайность (тогда как NTM этого не делает). Вот и все, что я хотел сказать ....
усул
Нет ничего «нереального» в запуске недетерминированного алгоритма, это просто означает, что во время работы необходимо делать выбор, для которого результат не определяется алгоритмом. Единственная разница между 1 и 2 состоит в том, что в 1 вы не сказали, когда алгоритм считается «успешным», тогда как в 2 алгоритм должен быть такого типа, который всегда говорит «да» или «нет» в конце прогон, и у вас есть решение проблемы, и вы определяете ответ алгоритма на проблему как «да», если и только если любой из его возможных прогонов отвечает «да». Так что 2 - это особый случай 1.
reinierpost
1

Пересматривая это из-за некоторых связанных с этим исследований, разногласия между мной и некоторыми другими, которые ответили, могут быть ассимилированы в целостное понимание, в котором мы все были правы. Но ИМО, принятая в компьютерной науке терминология «ограниченный недетерминизм», является неправильным оксюмороном (о чем я говорил раньше).

Их ключевой момент заключается в различении ограниченного и неограниченного недетерминизма. [1]

Недетерминированные машины Тьюринга (иначе говоря, «NTM») имеют ограниченный недетерминизм в том, что каждый переход состояния имеет ограниченное количество возможностей, то есть число программ (или «конфигураций») конечно. Лента остается неограниченной, поэтому доказательство прекращения остается неразрешимым. Но для любого заданного ввода, который останавливается, вывод является детерминированным и ограниченным во времени, то есть для любого ввода результат является детерминированным или не завершается. Кроме того, NTM выполняют все возможные конфигурации параллельно, поэтому они выполняются экспоненциально быстрее, чем эмуляция NTM на детерминированных машинах Тьюринга (или «DTM»). [2]

На самом деле нет никаких недетерминированных отношений между входами и результатами в NTM, потому что результат всегда одинаков для любого входа или исходного состояния, что очевидно, потому что они могут быть эмулированы DTM без какой-либо дополнительной случайности. Неразрешимый не является противоположностью детерминистическому, потому что не остановка - также детерминированный результат. Детерминированные машины всегда имеют один и тот же результат для данного ввода, даже когда этот результат не останавливается. Локализованный недетерминизм 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_DTMs

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

Шелби Мур III
источник
1
Я не понимаю, как это ответить на вопрос.
adrianN
1
@adrianN ответ излагает объяснение того, что на самом деле является недетерминизмом. А затем объясняет, как связаны рандомизированные алгоритмы. Вопрос просит связать два. Бинго. На вопрос ответил.
Шелби Мур III
0

Помимо всех ответов, объясняющих разницу, у меня есть пример, который может помочь вам получить то, что они хотят сказать.
Рассмотрим бросок монеты, вы получите либо H, либо Т . Если жеребьевка является случайной, то весьма вероятно , что из 1000 бросков монеты, 500 будет H , и это весьма маловероятно , что 999 из них будет H . Но если бросок монеты недетерминирован, мы не можем сказать, что получение 999 Н было бы крайне маловероятным.

Priyanshu
источник
Я думаю, что ваш пост служит комментарием, кроме того, он не пытается решить главный вопрос: рандомизированные и недетерминированные алгоритмы, и, кроме того, он тянет нас назад к другому типу недетерминизма.
Зло
-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).

,

@ Рафаэль формальное определение недетерминированного конечного автомата (NFA) является конечной входной энтропии (данные: 5-кортеж). Таким образом, каждый NFA может работать на детерминированной машине Тьюринга, т.е. не требует недетерминированной машины, полной по Тьюрингу. Таким образом, НФА не относятся к классу недетерминированных проблем. Понятие «недетерминизм» в NFA заключается в том, что его детерминизм (хотя он явно присутствует, поскольку каждый NFA может быть преобразован в DFA) явно не расширен - не то же самое, что недетерминизм вычислений

,

@ Рафаэль, заявленный «недетерминизм» в NFAs - это действительно случайность, смысл моего определения различия между случайностью и недетерминизмом. Мое определение состоит в том, что случайность - это когда некоторая энтропия, которая не находится под контролем, знание (или желаемое неявное расширение в случае NFA) входных данных для программы или функции. Принимая во внимание, что истинный недетерминизм - это неспособность знать энтропию в любом случае, потому что она не ограничена. Именно это и отличает рандомизированное от недетерминизма. Так что NFA должен быть примером первого, а не последнего, как вы утверждали.

,

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

Словари являются инструментами. Научитесь использовать их.

случайное прилагательное

Статистика. или характеризующий процесс выбора, в котором каждый элемент набора имеет равную вероятность выбора.

быть или относиться к набору или к элементу набора, каждый из элементов которого имеет равную вероятность появления

Таким образом, рандомизация требует только того, чтобы некоторая часть входной энтропии была равновероятной, что согласуется с моим определением, что часть входной энтропии не контролируется вызывающей функцией. Обратите внимание, что рандомизация не требует, чтобы входная энтропия была неразрешимой по отношению к завершению.

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

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

Детерминированные алгоритмы могут быть определены в терминах конечного автомата: состояние описывает, что машина делает в определенный момент времени. Конечные автоматы дискретно переходят из одного состояния в другое. Сразу после того, как мы введем ввод, машина находится в исходном состоянии или в начальном состоянии. Если машина является детерминированной, это означает, что с этого момента ее текущее состояние определяет, каким будет ее следующее состояние; его прохождение через множество состояний предопределено. Обратите внимание, что машина может быть детерминированной и все равно никогда не останавливаться и не заканчивать работу, и, следовательно, не может дать результат.

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

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

Википедия и другие пытаются отождествить рандомизацию с недетерминизмом, но какой смысл иметь эти два понятия, если вы не собираетесь их красноречиво различать?

Ясно, детерминизм о способности определять. Ясно, что рандомизация заключается в том, чтобы сделать некоторую энтропию равновероятной.

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

Смешение ортогональных понятий - это то, что люди с низким IQ Я ожидаю лучшего, чем это от этого сообщества!

Шелби Мур III
источник
4
Это не то, что недетерминизм означает в компьютерной науке. Недетерминированные алгоритмы не являются «непредсказуемыми».
Дэвид Ричерби
4
Я отвечу не имеет ничего общего с тем, как недетерминизм определяется в автоматах, соответственно. теория вычислимости. Шелби, ты должен прекратить разгораться и взять учебник. Если вы не понимаете другие ответы, я не думаю, что мы можем помочь вам в комментарии.
Рафаэль
3
@ShelbyMooreIII Вы совершенно не поняли, что означает недетерминизм в компьютерной науке. Это не имеет ничего общего с энтропией. Это не означает, что вы думаете, это означает: именно поэтому вы думаете, что все остальные ответы неверны. Возможно, название было выбрано неправильно, но это не относится к делу. Это имеет особое значение в информатике, которое отличается от значения, которое оно имеет в других науках. Вы пытаетесь использовать неправильное определение, и поэтому все кажется вам совершенно неправильным.
Дэвид Ричерби
4
«Использование термина« недетерминизм », когда речь идет о теории вычислительной сложности, [...] явно относится к энтропии» - нет, это не так.
Рафаэль
3
Мы можем согласиться с этим: пожалуйста, прекратите пытаться «научить» нас, это никому не поможет.
Рафаэль