Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Детерминированный алгоритм, который выполняет f ( n ) шагов, всегда завершается за f ( n ) шагов и всегда возвращает тот же результат. Недетерминированный алгоритм с уровнями f ( n ) может не возвращать одинаковый результат при разных прогонах. Недетерминированный алгоритм может никогда не закончиться из-за потенциально бесконечного размера дерева с фиксированной высотой.

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

Это понятие было введено Робертом В. Флойдом в 1967 году [1].

Используйте [ редактировать ]

Часто в теории вычислений термин «алгоритм» относится к детерминированному алгоритму . Недетерминированный алгоритм отличается от своего более известного детерминированного аналога своей способностью достигать результатов, используя различные пути. Если детерминированный алгоритм представляет единственный путь от входа к результату, недетерминированный алгоритм представляет один путь, ведущий ко многим путям, некоторые из которых могут приводить к одному и тому же выходу, а некоторые - к уникальным выходам. Это свойство математически зафиксировано в «недетерминированных» моделях вычислений, таких как недетерминированный конечный автомат . В некоторых сценариях все возможные пути могут выполняться одновременно.

При проектировании алгоритмов часто используются недетерминированные алгоритмы, когда проблема, решаемая алгоритмом, по своей сути допускает несколько результатов (или когда существует один результат с несколькими путями, по которым результат может быть обнаружен, каждый в равной степени предпочтительнее). Важно отметить, что каждый результат недетерминированного алгоритма действителен, независимо от того, какой выбор алгоритм делает во время работы.

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

Большое количество проблем можно концептуализировать с помощью недетерминированных алгоритмов, включая самый известный нерешенный вопрос в теории вычислений, P vs NP .

Реализация недетерминированных алгоритмов с детерминированными [ править ]

Один из способов имитировать алгоритм недетерминированной N используя алгоритм детерминированного D является обработкой множеств состояний N как состояния D . Это означает, что D одновременно отслеживает все возможные пути выполнения N (см. Конструкцию powerset для этого метода, используемого для конечных автоматов ).

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

См. Также [ править ]

Ссылки [ править ]

  1. ^ Роберт W.Floyd (октябрь 1967). «Недетерминированные алгоритмы». Журнал ACM . 14 (4): 636–644. DOI : 10.1145 / 321420.321422 .

Дальнейшее чтение [ править ]