Здравствуйте. Пусть рассматриваются проблемы принадлежности, т.е. если
- слово в некотором алфавите
, а
- некоторое множество слов в этом этом алфавите, то нужно проверить
и выдать "ДА", если
, и "НЕТ", если
. Например, пусть
- множество представлений всех выполнимых формулы алгебры логики, тогда для слова
нужно проверить, является ли оно представлением выполнимой формулы алгебры логики.
Как я читал, всякая недетерминированная МТ (алгоритм) работает в два этапа: 1) сначала она недетерминированно генерирует (угадывает) свидетельство (слово в некотором алфавите), позволяющее проверить принадлежность поданного ей на вход слова некоторому языку (т.е. делает предположение относительно принадлежности); 2) затем она, используя это свидетельство, осуществляет эту самую проверку принадлежности (т.е. проверяет сделанное предположение).
Например, недетерминированная МТ (алгоритм) для решения проблемы выполнимости булевых формул. На вход машине подаётся представление булевой формулы
от
булевых переменных, выполнимость которой нужно проверить, в виде слова в некотором алфавите (например, двоичном). Машина начинает свою работу с того, недетерминированно генерирует (угадывает) такую подстановку булевых значений
в формулу
вместо её
переменных, что формула
обращается в истинное высказывание, т.е.
. Для этого машина сначала недетерминированно угадывает подстановку вместо первой переменной, затем вместо второй и т.д. Затем машина проверяет правильность сделанного предположения: она вычисляет значение
, и если набор значений действительно удовлетворяет формуле (обращает её в истинное высказывание), то машина принимает свой вход (т.е. говорит, что поданная ей на вход формула действительно является выполнимой).
При этом мы считаем, что если формула выполнима, то недетерминированная МТ (алгоритм)
всегда верно угадывает подстановку. Теперь сам вопрос: а что, если на вход машине подаётся тождественно ложная формула (т.е. не выполнимая)? Правильно ли я понимаю, что в этом случае машина генерирует любую подстановку (всё равно, какую), вычисляет значение формулы на наборе значений из этой подстановки и, поскольку формула тождественно ложная, машина получает, что
, и поэтому она отклоняет свой вход (т.е. говорит, что поданная ей формула не является выполнимой)? И вообще, прошу разъяснить мне смысл сочетаний "недетерминированный выбор", "недетерминированное вычисление" и т.п.