Может ли алгоритм быть недетерминированным или неоднозначным? - PullRequest
0 голосов
/ 04 октября 2019

CLSR говорит, что алгоритм - это «четко определенная процедура». Что именно означает «четко определенный». Означает ли это, что оно не должно быть двусмысленным или недетерминированным. Если да, что может означать, что алгоритм является неоднозначным или недетерминированным.

1 Ответ

0 голосов
/ 04 октября 2019

«Хорошо определенная процедура» просто означает, что она должна содержать серию шагов, которые касаются каждого возможного варианта ввода.
например, в дереве решений вы должны учитывать все случаи, пока не дойдете до листа. Возьмем пример алгоритма, который находит максимум в списке:
Что делать, когда вы встречаете только целые числа? Как вы их сравниваете? Что произойдет, если вы попытаетесь сравнить два элемента в массиве, которые не одного типа? Есть ли ограничения на значения, которые могут принимать элементы в массиве? Как насчет размера массива?
Таким образом, вы можете найти множество других вопросов в этом направлении. Алгоритмы должны быть в состоянии ответить на все из них и, как таковые, «четко определены».
недетерминированные алгоритмы на самом деле очень большая область в CS. Посмотрите на эту ссылку в Википедии, чтобы найти больше примеров Недетерминированные алгоритмы . Эти алгоритмы могут генерировать разные выходные данные для одного и того же ввода в последующих запусках. Например что-то, что использует бросок монеты, чтобы напечатать «Головки» или «Хвосты». Таким образом, в зависимости от вашего случайного числа, выходной сигнал будет меняться при нескольких запусках.
Сравните это с детерминированными алгоритмами , которые выдают одинаковые выходные данные для одного и того же ввода каждый раз

...