По[i262] аналогии с числовыми можно рассмотреть функции над словами — словарные функции. Пусть задан алфавит A={a1,a2..., ap}, где ai (i=1,2,...,p) — буквы. Несколько букв, записанных рядом (конкатенация) образуют слово в алфавите A. Слово, не содержащее ни одной буквы называется пустым(∅.) Пусть wi(i=1,2,...) — слова в алфавите A. В качестве простейших (элементарных) функций можно выбрать такие: 1) аналог функции обнуления o(w)= ∅; 2) аналог функции следования si(w)=wai; 3) аналог функции проектирования где (1≤m≤n;n=1,2,...). По аналогии вводятся операции подстановки, рекурсии и минимизации.
Вместо этого можно ввести алфавитную нумерацию следующим образом. Пустое слово ∅ имеет номер 0. Однобуквенное слово ai, то есть символ алфавита, имеет номер i для =1,2,...,p. Номер слова по определению то есть слову соответствует натуральное число, записанное в p-ичной системе счисления. Таким образом, все результаты, полученные для числовых функций могут быть перенесены на словарные.
Другими словами, это можно определить так. Пусть дан алфавит А = {a1, a2, …, ar[i263] }, где r – число букв или символов алфавита. Например, для латиницы это - r=26. На множестве букв алфавита согласно правилам соответствующей грамматики можно сформировать множество слов конечной длины A*={α1, α2, …, β1, β2,[i264] …, ε}, где ε -пустое слово. Согласно правилам алгоритма Маркова это могут быть слова αi и βi. [i265] Тогда алфавитная нумерация определяется как: h(ε)=0 и h(ai1,ai2,...,ais [i266])=is+is-1 [i267] r+is-2+r2[i268] +.. i1[i269] +[i270] rs-1 [i271]. Поскольку при фиксированном r каждое положительное число n однозначно представимо в виде:
n= is+is-1 ⋅r+is-2⋅r2+.. i1⋅rs-1, где 1 ≤ i ≤ r – порядковый номер символа в алфавите А, нижний индекс которого указывает его место в слове αi или βi[i272]. Например, для нормального алгоритма Маркова произведения двух чисел алфавит содержит пять символов Vт={|, ⋅, #, (,)}, а протокол правила α1[i273]:= ⋅| | → β1[i274]:= (⋅|, α2[i275]:= ⋅|# → β2[i276]:= (#, α3[i277]:= |(→ β3[i278]:= (|), α4[i279]:=)(→ β4[i280]:= (), α5[i281]:=)| → β5[i282]:= |), α6[i283]:= (| → β6[i284]:= (, α7[i285]:= () → β7[i286]:=), α8:=) → β8:= |, α9:= |# → β9[i287]:= •|#.
Номера некоторых слов: α1:= ⋅| |: n = 1+1⋅5+2⋅52 = 56, β1:= (⋅|: n = 1+2⋅5+4⋅52 =111, α2:= ⋅|#: n = 3+1⋅5+2⋅52 = 58, β2:= (#: n = 3+4⋅5 = 23, α3:= |(: n = 4+1⋅5 = 9, β3:= (|): n = 5+1⋅5+4⋅52 = 110, α4:=)(: n = 4+5⋅5 = 29.
β4:= (): n = 5+4⋅5 =25 и т.д.
β4:= (): n = 5+4*5 =25 и т.д.
[i288] Следовательно, цифровой код протокола есть (56→111, 58→23, 9→110, 29→25, 26→10, 21→4, 25→5, 5→1, 8→8). Далее нужно найти номер для набора двух чисел команды. Так может быть сформирована упорядоченная последовательность номеров команд, моделирующая заданный алгоритм.
Нумерация машин Тьюринга
Для успешного использования левой и правой полу-[i289] лент машины Тьюринга была предложена система кодирования символов трех алфавитов.
Таблица 1.
Согласно этой системе (таблицуотформатировать надо) символы «сдвига головки» были представлены кодами 101[i290], 102[i291], 103[i292], символы «внешней памяти» - кодами с числом нулей равном (2⋅[i293] i + 4), символы «внутренней памяти» – кодами с числом нулей (2⋅[i294] i + 5).Символ # интерпретируются как пробел между числами или словами.
Тогда любой команде (i) машины Тьюринга, имеющей вид qm[i295] as[i296] →ql[i297] au[i298] D может быть сопоставлен код: код (i)= код(qm[i299])код(as[i300])код(ql[i301])код(an[i302])код(D), в котором коды всех символов приписаны друг к другу без каких-либо пробелов. Разделителем слов или чисел являются 1, так как код любого символа начинается с 1, а их различие определяется количеством нулей в коде. На левой полуленте записывают протокол машины Тьюринга, а на правой – ее текущую конфигурацию. В процессе вычисления заданной функции на правой полуленте определяется левая часть команды qm[i303] as[i304], где qm[i305] текущее состояние управляющего устройства, as[i306] – символ на информационной ленте под считывающей головкой. Затем на левой полуленте находится соответствующая команда qm[i307] as[i308] →ql[i309] au[i310] D. После этого машина Тьюринга записывает в обозреваемую ячейку символ au[i311], переводит управляющее устройство в состояние ql[i312] и перемещает головку не более как на одну ячейку вправо или влево.
Например, для машины Т1 протокол будет записан на левой полу ленте так: код(Т1)=10510610910410110910610910410110910410111041021011104107106103. [i313]
Указанное кодирование является алгоритмической процедурой. Каждые пять групп единиц и нулей представляют одну команду. Следовательно, любой функции, вычисляемой на машине Тьюринга, может быть сопоставлен код (Тi[i314]) и по коду (Тi[i315]) можно выделить алгоритм вычисляемой функции. Так может быть организована нумерация алгоритмов машины Тьюринга.
В 70-е годы XX века была предложена алгоритмическая модель, представляющая собой идеализированную ЭВМ. Эта модель состоит из бесконечного числа регистров R1, R2, R3[i316],...,, в каждом из которых может быть записано натуральное число. Часть этих регистров используют для хранения команд (аналог левой полуленты), остальные - для хранения данных, промежуточных вычислений и окончательных результатов (аналог правой полуленты). Модель позволяет организовать произвольный доступ к ячейкам памяти. Такую модель назвали «машиной произвольного доступа» - МПД.
Набор команд МПД включает:
• команду обнуления: действие команды заключается в замене содержимого регистра Rn[i317] на 0, т.е. Rn[i318]:= 0,
• команду прибавления единицы: действие команды заключается в увеличении содержимого регистра Rn[i319] на 1, т.е. Rn[i320]:= Rn[i321] + 1,
• команду переадресации: действие команды заключается в замене содержимого регистра Rn[i322] числом rm, хранящимся в регистре Rm, т.е. Rn:=Rm,
• команду условного перехода: действие команды заключается в сравнении содержимого регистров Rn и Rm:
- если Rn=Rm, то перейти к исполнению команды qi;
- если Rn≠Rm, то перейти к исполнению команды qj.
[i323] Упорядоченная последовательность команд формирует программу МПД.
ЗАКЛЮЧЕНИЕ
В данной контролируемой самостоятельной работе я изучал следующие вопросы:
1. Интуитивное понятие алгоритма.
2. Алгоритмические модели и их основные типа
3. Свойства алгоритма
4. Машина Тьюринга
5. Операции и применения машины Тьюринга.
6. Вычислимость по Тьюрингу и разрешимость.
7. Проблема самоприменимости.
8. Нумерация алгоритмов, наборов чисел, слов и машин Тьюринга.