Цитата:
Я не говорил того, что множество всех "кодовых строк" (для всех подмножеств натурального ряда) перечислимо.
Я тоже не говорил, что
- это множество
всех кодовых строк.
Стоп. Я здесь тормознул, вовремя не сообразил, и поэтому эскалация взаимного непонимания продолжается. Вот эта фраза
в вашей заготовке для меня ОДНОЗНАЧНО означает, что
есть некоторое подмножество такого множества:
0,1, 10, 11, 100, 101, 110, 111, 100 . . . 101010110001010101 . . . .
То есть. Множества
конечных слов в алфавите 0,1. Но я с самого начала говорил о бесконечных характеристических последовательностях. Коль вы перешли от бесконечных к конечным цепочкам, то мы тут совсем друг друга перестали понимать.
Цитата:
Ладно, давайте в более подробном варианте:
"
будем говорить, что множество кодовых строк перечислимых множеств натуральных чисел перечислимо, если [ваше окончание формулировки]."
(Я пытаюсь от вас услышать определение перечислимости для множества, состоящего из
бесконечных цепочек.)
Да я понимаю, что нужно для начала разобраться с базой. Но вы не туда вообще пошли.
Блин, неужели все так сильно запущено (у меня, разумеется)?
Я прошелся по вашим ответам выше еще раз и пытаясь понять где корень непонимания. Вот правильная догадка с вашей стороны, которую я ЗЛОСТНО "пропустил мимо ушей":
Но если вы намекаете на то, что "кодовую последовательность" всегда можно отождествить с конечной цепочкой, являющейся записью алгоритма, перечисляющего соответствующее множество чисел,
Да, все верно на самом деле. Я не намекаю, я утверждаю. Я говорю, что любая такая бесконечная последовательность - это перечисляющий алгоритм.
Именно
перечисляющий. Не какой-то там вообще алгоритм.
Что такое перечисляющий алгоритм?
Это специальным образом зацикленный алгоритм. Внутри его вычисляется вполне "обычная" программа, которая, получая на вход
, выдает
если данная вычислимая функция определена на этом
. Когда это происходит,
можно выдать, как очередной член перечисления.
Цитата:
то тогда в чем проблема - перечисление всех "кодовых цепочек" в таком случае равносильно перечислению всех алгоритмов.
Вот об этом и был вопрос. Как это надо делать?
Просто так перечислить все подряд алгоритмы?
Прекрасно!
Давайте пробовать!
Когда мы перечисляем в лексикографическом порядке описания всех возможных машин Тьюринга, мы перечисляем все программы вычисляющие некий натуральный
от некоторого натурального
.
Это не совсем то что нам нужно. Но ладно. Пускай алфавит ленты 0 и 1.
Что дальше?
Конечно, мы можем "тупо" взять все "обычные" машины Тьюринга, тупо подать каждой на вход пустой
и смотреть что получится. Одни поработают и остановятся. Некоторые зациклятся и будут бесконечно что-то выдавать на ленту. Но это вообще говоря будет промежуточная суета. Для любой произвольно взятой машины, пока она не перешла в конечное состояние, никакая последовательность на ленте не может интерпретироваться нами как
результат вычислений. Даже если алфавит ленты те самые 0 и 1, любая строчка на ленте не о чем не говорит. Как отделить промежуточные данные от результата?
Никак!
В чем засада?
Перечисляющие алгоритмы тоже зациклены, но они специальным образом зациклены и мы знаем, что там есть такой этап вычислений (состояние машины), что очередной член перечисляемого множества (если это перечисление некого множества) уже готов. Вычислен. Его нужно допечатать к уже частично готовому результату.
Например, мы перечисляем простые числа и уже перечислили первые 7 членов этого множества.
2, 3, 5, 7, 11, 13, 17
мы подали на вход некому внутреннему "простому" алгоритму число 8 и ждем пока этот внутренний алгоритм остановится. Смотрим ответ. 19. Допечатываем в конец:
2, 3, 5, 7, 11, 13, 17, 19
и так бесконечное число раз.
Вот это то, что нам надо!
Простейший случай, конечно. Но суть такая.
Получаем перечисление некого множества. Потенциально бесконечный объект. Но вполне конструктивный. Потому что есть конечный алгоритм его строящий. Притом зацикленный.
Но не все зацикленные алгоритмы что-то там перечисляют. Они вообще могут на своей ленте сначала напечатать длиннющее слово, а потом стереть чуть ли не до конца, и так может происходить хаотично и бесконечно.
Вот как теперь все-таки перечислить все перечисляющие алгоритмы?
Оставьте пока в покое эти бинарные бесконечные цепочки. Не до их пока! Давайте разберемся с более простым случаем. Промежуточным.
Я вам предлагаю еще раз такую простую задачу:
Как перечислить все алгоритмы, которые перечисляют все перечислимые подмножества натурального ряда?Эта задача точно имеет решение. Даже такой тупица как я знает ответ. Вы его знаете?
Я вас опять загрузил "кашей"?
Неужели я несу настолько уж несусветную чушь?
"Ни одной знакомой буквы"?
Или у меня слишком много букв?
Ваше желание получить внятную и лаконичную формулировку изначальной задачи я понимаю и считаю более чем законным. В ближайшее время я постараюсь такую формулировку все-таки родить.