Откуда тут внезапно взялись алгоритмы, вроде же всего лишь об исчислении предикатов говорили?
Вообще-то я говорил про теорию Пеано.
А «теория представляет алгоритмы» возникло от того, что теория состоит из утверждений (доказанных). И алгоритм «представлен» утверждениями, которые равны либо формуле с подставленными «правильными» значениями («правильными» с точки зрения результата работы данного алгоритма – типа
), либо отрицанию этой же формулы - при подставленных неправильных значениях (типа
).
Но Бог с ним – с термином «представлен». Для языка в теории алгоритмов можно не приспосабливать термин «представлен», а использовать, видимо «алгоритм распознаёт язык». Но так же, как в теории Пеано доказывается, что данный алгоритм «представлен» данной логической формулой, так же и в теории алгоритмов необходимо аналогичное доказательство того, что данный алгоритм «распознаёт» данный язык. А вовсе не уповать на то, что если определён протокол работы алгоритма, то этот алгоритм обязательно будет «распознавать» любой обсуждаемый язык. :)
mihaild писал(а):
Утверждения вида "
не могут дать
" в стандартных книгах не встречаются
Да, я слишком «сократил». Хотя, если быть точным, то я писал «Так как сама теория состоит из утверждений, то
не могут дать
». Поясняю:
не является утверждением, поэтому отдельно
внутри теории нет – а может быть только внутри некоторых утверждений. А раз нет «отдельно» ни
, ни
, то и «отдельно» они не могут следовать друг из друга. А утверждения – могут. Например, доказано утверждение вида:
из него следует (оно «даёт») утверждение
.
mihaild писал(а):
Что значит "терм внутри теории" - тоже непонятно
Мне это тоже непонятно )) Я писал «Нет отдельно терма
внутри теории Пеано - он обязательно внутри некоторого утверждения».
То есть – нет такого "терм внутри теории", я и написал, что «не понятно» в рамках теории Пеано )) А примеры утверждений (отдельных) внутри теории и термов внутри утверждений я дал.
mihaild писал(а):
Формулы отличаются от термов (даже просто синтаксически), да. Вы про это?
Именно. И о том, что теория состоит из отдельных утверждений (они являются «словами» теории как языка) – но не из отдельных термов.
все интересные нам утверждения не зависят от того, какой именно символ выбрать Это значит, что неважно, взять
или
- истинность интересных нам утверждений от этого не поменяется.
Нет, зависят – Вы сами писали, что символ не должен быть одним из символов слова. И в разбираемом мной примере этот символ «влезал» внутрь слова, так как внутри одного слова находилось другое. И совершенно неважно, какой именно символ туда «влезает» - если он не должен быть внутри слова. Получается, что происходит подмена одного слова другим и с чего тогда будет правильное распознание? У нас на ленте получается слово не из символов языка, да к тому же оно «обрывается посредине» тем символом, который означает конец «входа».
mihaild писал(а):
Примеры могут только дополнять определения, но не заменять их.
Не согласен. Пример может быть определением конкретного языка. Так и есть в моём примере с ёжиком. Да, это не общее определение – так тем проще с ним работать. А после понимания конкретного примера можно переходить к обобщениям и более абстрактным определениям. Или не понятно, что такое «грамматически корректные тексты»? Так я могу упростить это до такого уровня, например:
Если в последовательности упорядоченных символов X встречается строка
, то для языка
(условно назовём его «языком грамматически правильных текстов») словом является
и это слово не принадлежит языку
, равно как не принадлежит языку
и последовательность
, независимо от остального (помимо
) своего содержимого.
Строка
называется «исключающим внутренним словом».
Слово
отвергается вместе с содержащим его словом
(если это слово! Поясню ниже) в силу «способа выделения слова» (поясню ниже)
, который состоит в обнаружении слова
внутри
. Разумеется, способ мог бы быть и более сложным – в духе регулярных выражений, например, но это был бы другой язык.
То есть, не принадлежность языку
слова означает наличие внутри данного слова подстроки
. При этом данная подстрока
тоже является словом, не принадлежащим языку
.
А это означает, что обнаружение данной подстроки
логически эквивалентно непринадлежности всей строки языку
как слова.
А это означает, что время работы алгоритма, который распознаёт данный язык должно зависеть именно от времени обнаружения подстроки
, а не от размера слова, которое эту подстроку содержит. Иначе время работы определяется качеством реализации алгоритма, а не природой языка. Мы об этом уже говорили при обсуждении «очистки ленты» при завершении работы алгоритма.
Разница со случаем «нет выделения внутреннего слова» в том, что в «неделимом» слове должен быть обнаружен его конец. Сначала или после этого идёт анализ на наличие
- не важно.
Ведь язык - множество конечных слов. Поэтому без «внутреннего слова» необходимо наличие конца всей последовательности символов. Это и будет «способ выделения слова». А при наличии «внутреннего слова» достаточно найти только его. И неважно – внутри чего это «внутреннее слово». Если внутри слова (конечного) – то и оно отвергнуто. Если внутри не-слова (бесконечного) – тогда «внутреннее слово» не «внутреннее», а «само по себе». Такой «способ выделения слова».
Отсюда вывод для конкретного примера:
Алгоритм
распознаёт язык
, если считывающая головка после чтения слова
прекращает дальнейшее чтение «входных данных» на ленте и выдаёт
(ноль) – «слово не принадлежит языку
».
То есть, конец слова, не принадлежащего языку
, обнаруживается на «внутреннем слове». Вот в чём отличие от языка, где внутри слов нет «внутренних слов».