Я имею в виду этот [забавный] вопрос. Почему недетерминированный конечный автомат называется недетерминированным, в то время как мы определяем переходы для входных данных. Что ж, несмотря на то, что существуют множественные и эпсилон- переходы, они определены, что означает, что машина является детерминированной для этих переходов. Что означает, что это детерминировано.
finite-automata
nondeterminism
Madhusoodan P
источник
источник
Ответы:
«Детерминистический» означает «если вы поместите систему в одну и ту же ситуацию дважды, она гарантированно сделает один и тот же выбор оба раза».
«Недетерминированный» означает «недетерминированный» или, другими словами, «если вы дважды ставите систему в одну и ту же ситуацию, она может или не может сделать один и тот же выбор оба раза».
Недетерминированный конечный автомат (NFA) может иметь несколько переходов из состояния. Это означает, что есть несколько вариантов того, что он может сделать в этой ситуации. Не обязательно всегда выбирать один и тот же; на одном входе он может выбрать первый переход, а на другом - тот же переход.
Здесь вы можете думать о «ситуации» как о «состоянии, в котором находится NFA, вместе с тем, какой символ читается после ввода». Даже если оба они одинаковы, NFA может иметь несколько совпадающих переходов, которые можно вывести из этого состояния, и он может произвольно выбирать, какой из них выбрать. Напротив, у DFA есть только один соответствующий переход, который может быть выполнен в этой ситуации, поэтому у него нет выбора - он всегда будет следовать одному и тому же переходу, когда он находится в этой ситуации.
источник
Возьмите этот автомат, например, это NFA, и он принимает строку . Чтобы быть более педантичным, он принимает строки, заканчивающиеся на 10 .0110 10
Чтобы увидеть, что нам просто нужно проверить, достигает ли он состояния принятия.
Теперь у красной линии была другая возможность, то есть, читая вторую я мог остаться в q 0 и затем остаться в1 Q0 при чтении последней 0 . Автоматы не имеют памяти, поэтому нет никакого способа «сохранить» состояние и проверить позже, заканчивается ли моя строка на 10 , похоже, что этот NFA делает предположение, заканчивается ли строка на 10, прежде чем перейти в приемлемое состояние. Здесь недетерминизм делает много выборов и всегда делает правильные.Q0 0 10 10
Построить NFA легче, чем построить DFA, хорошо то, что оба они эквивалентны .
источник
Функция перехода NFA определяет разрешенные переходы в любой момент времени. Может быть более одного варианта, и NFA выбирает переход недетерминированно с целью в конечном итоге достичь принимающего состояния.
Возможно, вам следует подождать, пока вы не узнаете о недетерминированных машинах Тьюринга. Недетерминизм означает одно и то же в обоих случаях.
источник
Начните с конечного автомата. У него есть состояния и состояния принятия и переходы.
Теперь дайте ему более одного правила перехода каждого состояния и скажите, что он принимает, если существует набор правил перехода выбранных после того факта, которые приводят к состоянию принятия с учетом входной строки.
Как только у вас есть входная строка, есть фиксированный набор конкретных переходов и состояний, через которые он проходит (по одному), чтобы принять эту строку. Но какие переходы он выбирает, выбираются только в конце строки . Во время чтения строки путь к ней не определяется.
Это недетерминированный. После того, как вы решите всю проблему, он выбирает путь по графику, а не по мере чтения ввода.
Теперь мы формализуем это иначе, чем этот мысленный эксперимент, но это дает вам мотивацию, почему он получил это имя.
Это объясняет, как он получил имя в первую очередь. Да, вы можете смоделировать NDFA полностью детерминированным способом, но имена являются липкими . После того, как вы назвали что-то, Боб, вам придется переименовать его в другое, поскольку никто не знает, о чем вы говорите, когда называете это Алисой.
источник
Из википедии лучший способ подумать об этом - начать с детерминированных конечных автоматов (DFA). Для DFA каждый переход однозначно определяется текущим состоянием и обрабатываемым символом ввода. Недетерминированные конечные автоматы (NFA) - это просто то, что вы получаете, когда вы ослабляете это правило детерминизма, чтобы позволить переходам не быть однозначно определенными. Это то, что вы получаете, когда удаляете правило детерминированного из DFA.
источник
NFA и DFA оба используются (среди прочего) для распознавания определенных строк.
Недетерминированный конечный автомат работает так, как будто он влиял на его решения - он может «выбирать» следовать по пути или нет.
На изображении выше, когда мы имеем дело со строкой «00111», обратите внимание, что при обнаружении первой «1» есть два возможных способа следовать. Можно остаться на «р» или перейти к «д». Если бы автоматы должны были перейти к «q», он не принял бы строку (поскольку из «q» нет ребер). Но строка может быть принята этими автоматами, перейдя к «q» только с последней 1, оставаясь при этом «p» для всего остального (и это то, что происходит).
NFA заставляет это выглядеть так, будто автоматы «знали», что впереди, и выбирают соответственно.
Конечно нет. DFA и NFA эквивалентны по мощности (вы можете уменьшить NFA до DFA и сделать DFA (возможно) более простым с использованием NFA), но NFA полезен, потому что он позволяет определять те же языки, что и DFA, сохраняя при этом графики короче и читабельнее.
Там нет ничего случайного. Недетерминированная часть подчеркивает тот факт, что есть некоторый «выбор», но правда состоит в том, что автоматы не принимают никаких решений.
источник
Ну, вот сочетание некоторого содержания из книги [Введение в формальные языки и автоматы Питера Линца 4E] и моего понимания.
Рассмотрим игровую программу, в которой машина должна принять решение для следующего хода [например, крестики-нолики]. Поскольку возможны несколько ходов, мы детерминистически выбираем каждый ход, оцениваем ход и выбираем лучший. Несмотря на то, что процесс отбора был детерминированным и было много возможных ходов, последний сделанный ход был единичным и был выбран как лучший ход, скрывая все проверенные вычисления ходов от оппонента. [Здесь мы предполагаем, что процесс оценки каждого возможного хода был скрыт от оппонента].
Следовательно, был сделан только один выбор, и у противника создается иллюзия, что ход был недетерминированным.
Что ж, если вы еще не уверены, спросив, что лучшим ходом был продукт некоторых детерминированных вычислений, то вы должны рассмотреть машину, которая совершает совершенно случайные движения (может быть, машина проигрывает, но это NFA).
источник