Недетерминированный алгоритм - Nondeterministic algorithm
В Информатика, а недетерминированный алгоритм является алгоритм которые даже для одного и того же входа могут демонстрировать разное поведение при разных прогонах, в отличие от детерминированный алгоритм. Есть несколько способов, которыми алгоритм может вести себя по-разному от запуска к запуску. А параллельный алгоритм может работать по-разному на разных запусках из-за состояние гонки. А вероятностный алгоритм поведение зависит от генератор случайных чисел. Алгоритм, решающий задачу в недетерминированное полиномиальное время может выполняться с полиномиальным или экспоненциальным временем в зависимости от выбора, который он делает во время выполнения. Недетерминированные алгоритмы часто используются для поиска приближения к решению, когда точное решение было бы слишком дорого получить с помощью детерминированного.
Это понятие было введено Роберт В. Флойд в 1967 г.[1]
Использовать
Часто в вычислительная теория, термин «алгоритм» относится к детерминированный алгоритм. Недетерминированный алгоритм отличается от своего более известного детерминированного аналога своей способностью достигать результатов, используя различные пути. Если детерминированный алгоритм представляет единственный путь от входа к результату, недетерминированный алгоритм представляет один путь, ведущий ко многим путям, некоторые из которых могут приводить к одному и тому же выходу, а некоторые - к уникальным выходам. Это свойство математически отражено в "недетерминированных" модели вычислений такой как недетерминированный конечный автомат. В некоторых сценариях все возможные пути могут выполняться одновременно.
При проектировании алгоритмов часто используются недетерминированные алгоритмы, когда проблема, решаемая алгоритмом, по своей сути допускает несколько результатов (или когда существует один результат с несколькими путями, по которым результат может быть обнаружен, каждый в равной степени предпочтительнее). Важно отметить, что каждый результат недетерминированного алгоритма действителен, независимо от того, какой выбор алгоритм делает во время работы.
В теория сложности вычислений, недетерминированные алгоритмы - это алгоритмы, которые на каждом возможном шаге могут допускать множественные продолжения (представьте человека, идущего по тропинке в лесу, и каждый раз, когда он шагает дальше, он должен выбрать, на какую развилку дороги он хочет пойти). Эти алгоритмы не приводят к решению для каждого возможного вычислительного пути; однако они гарантированно придут к правильному решению для некоторого пути (т.е. человек, идущий через лес, может найти свою хижину, только если он выберет некоторую комбинацию «правильных» путей). Выбор можно интерпретировать как догадки в поиск обработать.
Большое количество проблем можно концептуализировать с помощью недетерминированных алгоритмов, в том числе самый известный нерешенный вопрос в теории вычислений, P против NP.
Реализация недетерминированных алгоритмов с детерминированными
Один из способов моделирования недетерминированного алгоритма N с использованием детерминированного алгоритма D лечить наборы состояний N как состояния D. Это значит, что D одновременно отслеживает все возможные пути выполнения N (увидеть конструкция электростанции для этой техники используется для конечные автоматы ).
Другой рандомизация, который заключается в том, что все варианты выбора определяются генератор случайных чисел. Результат называется вероятностный детерминированный алгоритм.
Смотрите также
использованная литература
- ^ Роберт Флойд (октябрь 1967). «Недетерминированные алгоритмы». Журнал ACM. 14 (4): 636–644. Дои:10.1145/321420.321422.
дальнейшее чтение
- Кормен, Томас Х. (2009). Введение в алгоритмы (3-е изд.). MIT Press. ISBN 978-0-262-03384-8.
- «Недетерминированный алгоритм». Национальный институт стандартов и технологий. Получено 7 июля, 2013.
- «Недетерминированные алгоритмы». Компьютерные науки Нью-Йоркского университета. Получено 7 июля, 2013.