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