Недавно я услышал это:
«Недетерминированная машина - это не то же самое, что вероятностная машина. В общих чертах, недетерминированная машина - это вероятностная машина, в которой вероятности переходов неизвестны».
Я чувствую, как будто я понимаю, но я действительно не понимаю. Может ли кто-нибудь объяснить мне это (в контексте машин или вообще)?
Изменить 1:
Просто чтобы уточнить, цитата была в контексте конечного автомата, но вопрос имеет значение для машин Тьюринга также, как другие ответили.
Также я слышу, как люди говорят: «... тогда я выбираю объект x из множества недетерминированно». Раньше я думал, что они имеют в виду - «случайно». Отсюда и путаница.
Ответы:
Важно понимать, что ученые-компьютерщики используют термин «недетерминированный» иначе, чем он обычно используется в других науках. Недетерминированный TM на самом деле является детерминированным в физическом смысле, то есть NTM всегда дает один и тот же ответ на заданном входе: он либо всегда принимает, либо всегда отклоняет. Вероятностный TM принимает или отклоняет входные данные с определенной вероятностью, поэтому при одном запуске он может принять, а при другом - отклонить.
Эта последняя часть определения может быть изменена для получения других связанных типов машин Тьюринга. Если вас интересуют проблемы, которые имеют уникальное решение, вы можете попросить ТМ принять только одну ветку. Если вас интересует поведение большинства, вы можете определить, что ТМ принимает, если принимает более половины ветвей. И если вы случайным образом (в соответствии с некоторым распределением вероятностей) выбираете одну из возможных ветвей и принимаете или отклоняете в зависимости от того, что делает эта ветвь, то у вас есть вероятностный TM.
источник
В контексте машин Тьюринга «недетерминированный» действительно означает «параллельный». Рандомизированный алгоритм может случайным образом исследовать ветви дерева вычислений недетерминированной машины Тьюринга, но недетерминированная машина Тьюринга может исследовать их одновременно, что и дает ему силу.
В других контекстах (я не могу сказать из вашей цитаты, если вы говорите о машинах Тьюринга), рандомизированный алгоритм может намеренно использовать случайность, тогда как алгоритм, который вы хотите быть детерминированным, может в конечном итоге демонстрировать недетерминизм из-за ошибки ...
В ответ на ваше редактирование, когда люди говорят «выберите элемент из набора недетерминированно», возможно, они могут просто означать «случайно». Однако также возможно, что они означают «волшебным образом выбрать -правильный элемент из набора». Обычный способ просмотра недетерминированных машин Тьюринга состоит в том, что они сначала магически «угадывают» решение, а затем проверяют его правильность. Конечно, вы можете рассматривать эту магическую догадку как результат проверки всех возможностей параллельно.
источник
Существует несколько различных контекстов, в которых «детерминированный», «случайный» и «недетерминированный» означают три разные вещи. В тех случаях, когда есть несколько участников, таких как безопасность и параллелизм, интуиция часто выглядит примерно так:
детерминированный означает «я могу выбирать»
недетерминированный означает «кто-то другой может выбирать»
случайный означает «никто не может выбирать»
Несколько примеров:
[одновременный, случайный] Рассмотрим сетевой протокол, такой как Ethernet , где несколько узлов могут отправлять сообщения в любое время. Если два узла отправляют сообщение с очень близкими интервалами, возникает коллизия: сообщения перекрываются и не читаются. Если происходит коллизия, оба узла должны попытаться отправить сообщения снова позже. Представьте, что вы пишете спецификацию Ethernet. Как указать задержку между попытками? (Задержки должны быть другими, иначе снова будет столкновение!)
детерминированный: определите алгоритм, который должны использовать оба узла. Это не сделано для Ethernet, потому что для получения разных результатов алгоритм должен был бы предоставить привилегию одному узлу по сравнению с другим (для любого данного содержимого сообщения), и Ethernet избегает этого.
недетерминированный: пусть решает каждый реализатор. Это не хорошо, потому что разработчики на обоих узлах могут выбрать один и тот же алгоритм.
случайный: каждый узел должен выбрать случайное значение задержки (с указанным распределением). Вот как это работает. Существует небольшая вероятность того, что два узла выберут одну и ту же задержку и произойдет еще одно столкновение, но вероятность успеха асимптотически возрастает до 1 по мере увеличения числа повторных попыток.
[параллелизм, недетерминированный] Вы пишете параллельный алгоритм. В конкретной ситуации может возникнуть тупик. Как вы можете предотвратить возникновение тупика? Это зависит от того, какое планирование имеет ваша среда параллелизма.
детерминистический: планировщик всегда переключается между потоками в определенных четко определенных точках, например, только когда код дает явный результат. Тогда вы просто организуете, чтобы потоки не уступали в плохие времена.
random: планировщик гарантированно переключает потоки в случайном порядке. Тогда жизнеспособной стратегией может быть обнаружение тупика, если он возникает, и перезапуск алгоритма с самого начала.
недетерминированный (большинство планировщиков такие): вы не знаете, когда планировщик будет переключаться между потоками. Таким образом, вы действительно должны избежать тупика. Если вы попытались обнаружить и перезапустить, как в случайном случае, вы рискуете, что планировщик будет планировать ваши потоки точно так же снова и снова.
[security, random] Вы пишете приложение с запросом пароля. Как вы моделируете злоумышленника?
детерминированный: злоумышленник всегда использует одни и те же пароли. Это не полезная модель атакующего - атакующие не предсказуемы по определению.
недетерминированный: злоумышленник как-то знает ваш пароль и вводит его. Это показывает ограничение паролей: они должны храниться в секрете. Если ваш пароль является секретным, этот злоумышленник нереально.
случайный: злоумышленник выбирает пароли случайным образом. В данном случае это реалистичная модель атакующего. Вы можете узнать, сколько времени потребуется злоумышленнику, чтобы угадать ваш пароль, в зависимости от того, какое случайное распределение он использует. Хороший пароль - это пароль, который занимает много времени для любого реалистичного распространения.
[безопасность, недетерминированная] Вы пишете приложение и беспокоитесь о том, что оно может иметь дыру в безопасности. Как вы моделируете злоумышленника?
детерминированный: злоумышленник знает все, что вы знаете. Опять же, это не полезная модель атакующего.
random: злоумышленник выбрасывает случайный мусор и надеется, что ваша программа потерпит крах. Иногда это может быть полезно ( размытость ), но злоумышленник может быть умнее этого.
недетерминированный: если есть дыра, злоумышленник обнаружит ее в конце концов. Таким образом, вам лучше укрепить свое приложение (повысить требования к интеллекту для атакующего; обратите внимание, что, поскольку это требование к интеллекту, а не к вычислительным требованиям, до тех пор, пока не появится ИИ, это считается недетерминированным) или, лучше, доказать, что нет дыра в безопасности и, следовательно, такого злоумышленника не существует.
источник
Пример, чтобы прояснить ситуацию:
Скажем, вам нужно выбрать дверь, чтобы открыть ее среди 10000 дверей (скажем, за одной из дверей есть приз). Выбор случайным образом означает, что вы выберете одну из 10000 дверей и войдете в нее. Если за одной дверью есть приз, скорее всего, вы его не найдете. Недетерминированная машина будет входить во все 10000 дверей одновременно. Если где-нибудь есть приз, то недетерминированный автомат найдет его.
источник
Определение недетерминированной машины Тьюринга : машина Тьюринга, которая имеет более одного следующего состояния для некоторых комбинаций содержимого текущей ячейки и текущего состояния. Ввод принимается, если любая последовательность перемещения приводит к принятию.
Определение вероятностной машины Тьюринга : недетерминированная машина Тьюринга (ТМ), которая случайным образом выбирает между доступными переходами в каждой точке в соответствии с некоторым распределением вероятности.
Вероятностная машина Тьюринга - это недетерминированная машина Тьюринга, которая может совершать ошибки.
PPT я нашел полезным.
источник
Я предпочитаю следующее определение:
Не существует такого понятия, как вероятностная машина Тьюринга! Существуют только детерминированные машины (на каждом шаге одно возможное последующее состояние) и недетерминированные машины (на каждом шаге постоянное число возможных последующих состояний).
Недетерминизм работает следующим образом: Рассмотрим недетерминированный механизм, который останавливается на каждом входе (возможно, если проблема разрешима), где каждое возможное вычисление использует одинаковое количество шагов, и где каждый шаг имеет ровно 2 возможных последующих состояния ( и то и другое не является ограничением). Как и в определении NP, недетерминированная машина принимает входные данные, если существует хотя бы одно возможное принимающее вычисление, и отклоняет входные данные, если все вычисления отклоняют.
Случайность вступает в игру следующим образом: Вы можете произвольно выбрать один путь вычислений с такой недетерминированной машины, как указано выше. Вы принимаете, если и только если этот случайный путь вычислений принимает. Этот рандомизированный подход «решает» вашу проблему, если с подавляющей вероятностью этот ответ правильный.
Таким образом, разница между недетерминизмом и случайностью заключается в том, ищете ли вы просто наличие правильного ответа «да» (и надежных ответов «нет»), или же вы заинтересованы в решении вашей проблемы «большую часть времени» .
источник
Для простоты: недетерминированная машина может оптимально выбрать результат каждого броска монеты (если вам нравится аналогия с вероятностной машиной). Вы также можете представить, что он выполняет вычисления для каждого результата подбрасывания монеты параллельно.
источник
Шаг назад во время отладки как мотив для недетерминизма
Понятие недетерминированной машины возникает, когда вы хотите шагнуть назад (во времени) через программу во время отладки. В типичном компьютере каждый шаг изменяет только ограниченный объем памяти. Если вы всегда сохраняете эту информацию для предыдущих 10000 шагов, то вы можете приятно шагать вперед и назад в программе, и эта возможность не ограничивается игрушечными программами. Если вы попытаетесь устранить асимметрию между шагами вперед и назад, то в конечном итоге вы получите понятие недетерминированной машины.
Сходства и различия между недетерминизмом и случайностью
Хотя вероятностные машины разделяют некоторые характеристики с недетерминированными машинами, эта симметрия между шагами вперед и назад не разделяется. Чтобы увидеть это, давайте смоделируем шаги или переходы детерминированной машины с помощью (полной или частичной) функций, переходы недетерминированной машины с помощью (конечных) отношений и переходы вероятностной машины с помощью (суб) стохастических матриц . Например, вот соответствующие определения для конечных автоматов
Есть много разных приемлемых условий приемки
Переходы являются только одной частью машины, также важны начальное и конечное состояния, возможные условия вывода и приемки. Тем не менее, существует очень мало неэквивалентных условий приемки для детерминированных машин, ряд разумных условий приемки для недетерминированных машин (NP, coNP, #P, ...) и множество возможных условий приемки для вероятностных машин. Следовательно, этот ответ фокусируется в первую очередь на переходах.
Обратимость нетривиальна для вероятностных машин
Обратимость сложна даже для недетерминированных машин
Эти соображения также имеют смысл для автоматов
Этот пост предполагает, что одной из причин недетерминизма является устранение этой асимметрии между шагами вперед и назад. Эта симметрия недетерминизма ограничена конечными автоматами? Вот соответствующие симметричные определения для автоматов
Диаграмманная проверка реверса для (не) опережающих операций ввода и стека
Вот схема опережающей операции ввода, обращение которой будет выглядеть плохо
Для операции стека существует три случая , и . Операция стека изменяется на следующим образом(s,t)∈Γ{0,1}×Γ{0,1} (s,t)=(a,ϵ) (s,t)=(ϵ,a) (s,t)=(a,b) (a,ϵ) (ϵ,a)
Операция стека обращается к следующим образом(a,b) (b,a)
Обобщенная операция стека будет обращена к(ab,cde)∈Γ∗×Γ∗ (cde,ab)
Обратимость для машин Тьюринга
Машина с более чем одним стеком эквивалентна машине Тьюринга, и операции со стеком могут быть легко изменены. Мотивация в начале также предполагает, что разворот (машины Тьюринга) не должен быть трудным. Машина Тьюринга с типичным набором команд не так хороша для реверсирования, потому что символ под головкой может влиять на то, будет ли лента двигаться влево или вправо. Но если набор команд изменяется соответствующим образом (без уменьшения вычислительной мощности машины), то обращение снова почти тривиально.
Обращение также может быть построено без изменения набора команд, но оно не является каноническим и немного некрасивым. Может показаться, что существование разворота так же трудно решить, как и многие другие вопросы, относящиеся к машинам Тьюринга, но разворот - это локальная конструкция, и сложные вопросы часто имеют глобальный характер, поэтому пессимизм здесь, вероятно, будет неоправданным.
Стремление переключиться на эквивалентные наборы инструкций (проще обратить вспять) показывает, что эти вопросы менее очевидны, чем они появляются на первый взгляд. Более тонкий переход произошел в этом посте раньше, когда суммарные функции и стохастические матрицы были заменены частичными функциями и субстохастическими матрицами. Это переключение не является строго необходимым, но в противном случае изменение выглядит ужасно. Переход к субстохастическим матрицам фактически стал тем моментом, когда стало очевидно, что обратимость не так уж и тривиальна, и что нужно записывать детали (как сделано выше) вместо того, чтобы просто смотреть на перспективу высокого уровня (как представлено в мотивации на начало). Вопросы, поднятые Ниль де Бодрап, также способствовали осознанию того, что перспектива высокого уровня слегка шаткая.
Вывод
Недетерминированные машины допускают конечное число детерминированных переходов на каждом шаге. Для вероятностных машин эти переходы дополнительно имеют вероятность. Этот пост передает другой взгляд на недетерминизм и случайность. Игнорируя глобальные условия принятия, вместо этого основное внимание уделяется локальной обратимости (как локальной симметрии). Поскольку случайность сохраняет некоторые локальные симметрии, которые не сохраняются детерминизмом, эта перспектива выявляет нетривиальные различия между недетерминированными и вероятностными машинами.
источник
В контексте теории машин Тьюринга ( ТМ ) и теории автоматов недетерминированная машина - это та, в которой любое воплощение машины, которая принимает ее, прекрасно. В этом смысле это все равно, что запускать несколько детерминированных машин параллельно и получать выходные данные любых экземпляров, которые принимают входные данные . Фактически существует (детерминированный) алгоритм для преобразования любого недетерминированного автомата (с состояниями) в эквивалентный детерминированный (сn 2n состояния (экспоненциальный), учитывая классы эквивалентности состояний, независимо от того, включает ли алгоритм, реализованный в машине, рандомизацию или вероятности (см. ниже).
Но если алгоритм, реализованный в машине, включает в себя рандомизацию или вероятности (свойственные алгоритму), то это рандомизированная (или вероятностная) машина.
В общем, всегда возможно удалить недетерминизм из машины и построить детерминированный эквивалент (см. Алгоритм выше), но этого нельзя сделать (в общем), чтобы удалить рандомизацию (в контексте вышеупомянутого), потому что это свойственный реализованному алгоритму .
Обратите внимание, что в свете вышесказанного и детерминированная машина, и недетерминированная машина могут быть вероятностными, если алгоритм (задействованный) использует рандомизацию (или вероятности) таким образом.
Подводя итог, можно сказать, что недетерминизм в автоматах (в данном контексте) относится к классам подобных автоматов, в то время как рандомизация или вероятностные машины относятся к (внутреннему применению рандомизации в) реальных алгоритмов, реализуемых этими автоматами.
источник