Москва
Горячая линия – Телеком
2016
УДК 004:621.391(075)
ББК 32.81
С77
Стариченко Б. Е.
С77 Теоретические основы информатики. Учебник для вузов. –
3-е изд. перераб. и доп. – М.: Горячая линия – Телеком,
2016. – 400 с.: ил.
ISBN 978-5-9912-0462-0.
Рассмотрены вопросы теории информации Шеннона, тео-
рии кодирования, криптографии, элементы теории алгоритмов
и теории конечных автоматов, а также общие вопросы модели-
рования и описания систем. Отбор материала произведен в со-
ответствии с программой подготовки студентов высших учеб-
ных заведений, обучающихся по направлению подготовки
«Информационные системы и технологии». Каждая глава со-
держит многочисленные примеры решения задач, а также во-
просы и задания для самоконтроля.
Для студентов вузов, изучающих информатику в качестве
профильной дисциплины, а также школьных учителей инфор-
матики.
ББК 32.81
а из (2.4)
∑m ∑
n
− p(Bj ) log2 p(Bj ) = H(β); − p(Ai ) log2 p(Ai ) = H(α),
j =1 i=1
и окончательно имеем
H(α ∧ β) = H(α) + H(β),
что и требовалось доказать.
3. Теперь рассмотрим ситуацию, когда имеется два опыта с
одинаковым числом исходов n, но в одном случае они равноверо-
ятны, а в другом — нет. Каково соотношение энтропий опытов?
Примем без доказательства∗ следующее утверждение:
∑n
− p(Ai ) log2 p(Ai ) 6 log2 n. (2.7)
i=1
B1 B2 B3 B4
A1 1/2 1/2 0 0
A2 0 0 1/2 1/2
Г л а в а 2. Понятие информации в теории Шеннона 43
для немецкого I1(d) = 4,10 бит, для испанского I1(s) = 3,98 бит.
Как мы видим, и для русского, и для английского языков учет
вероятностей появления букв в сообщениях приводит к уменьше-
нию среднего информационного содержания буквы, что, кста-
ти, подтверждает справедливость формулы (2.7). Несовпадение
значений средней информации для английского, французского и
немецкого языков, основанных на одном алфавите, связано с тем,
что частоты появления одинаковых букв в них различаются.
В рассматриваемом приближении по умолчанию предпола-
гается, что вероятность появления любого знака в любом месте
сообщения остается одинаковой и не зависит от того, какие зна-
ки или их сочетания предшествуют данному. Такие сообщения
называются шенноновскими (или сообщениями без памяти).
Сообщения, в которых вероятность появления любого
отдельного знака алфвита в любом месте сообщения
остается неизменной и не зависит от того, какие зна-
ки предшествовали данному, называются шенноновс-
кими, а порождающий их отправитель — шенноновс-
ким источником.
Каким образом можно проверить, является ли некоторое со-
общение шенноновским? Необходимо произвести частотное ис-
следование текста и определить вероятности (относительные час-
тоты) каждого из N знаков алфавита pi , i = 1, . . . , N , а также
вероятности появления всех возможных двухбуквенных сочета-
ний p(fact)
ik , k = 1, . . . , N . Если случайное событие — появление в
тексте знака ai — не оказывает влияние на другое случайное соб-
ытие — появление после него знака ak , то согласно (A.9) должно
выполняться
p(rand)
ik = pi pk . (2.18)
Критерием того, что сообщение является шенноновским, оче-
вижно будет выполнение соотношения p(fact)
ik
(rand)
≈ pik для всех
пар ik. Равенства могут не быть строгими из-за конечности дли-
ны текста.
Заметные отличия этих двух величин будут свидетельствова-
ть о несправедливости модели независимых знаков в сообщении.
Это, в свою очередь, означает, что между знаками имеются связи
и появление (или непоявление) какого-то знака оказывает влия-
ние на вероятность появления последующего знака.
Если сообщение оказывается шенноновским, то набор зна-
ков (алфавит) и вероятности их появления в сообщении могут
56 Ч а с т ь I. Теория информации
Таблица 3.1
Знак, ASC-коды Буква ASC-коды
кла- русского
виша Двоичный Десятичный алфавита Двоичный Десятичный
Знак pi Знак pi
a 0,08 e 0,08
b 0,44 f 0,08
c 0,08 g 0,08
d 0,08 h 0,08
b 0,44 0 0 00 2 0,88
a 0,08 0 1 01 2 0,16
c 0,08 1 0 0 100 3 0,24
d 0,08 1 0 1 0 101 4 0,32
e 0,08 1 0 1 1 1011 4 0,40
f 0,08 1 1 0 110 3 0,24
g 0,08 1 1 1 0 1110 4 0,32
h 0,08 1 1 1 1 1111 4 0,32
Знак pi Код
a 0,75 0
b 0,25 1
aa 0,562 0
ab 0,188 11
ba 0,188 100
bb 0,062 101
0 5
1 6
2 7
3 8
4 9
Шаг 0 1 2 3 4 5 6 7 8
Z3 − 1 22 21 20 12 11 10 2 1 0
Z6 + 1 0 1 2 3 4 5 10 11 12
∗
Знак «:=» используется здесь и далее в смысле «присвоить» («счи-
тать равным»).
∗∗ Такое представление называется схемой Горнера.
Г л а в а 4. Представление и обработка чисел в компьютере 91
Далее:
b2 = 123 div 52 = 4; δ1 = 123 mod 52 = 23 (i = 2 − 1 = 1);
b1 = 23 div 51 = 4; δ0 = 23 mod 51 = 3 (i = 0).
Алгоритмы перевода Zp → Z10 явно вытекает из выражений
(4.1) или (4.2): необходимо Zp представить в форме многочлена
и выполнить все операции по правилам десятичной арифметики.
Ïðèìåð 4.3.
Выполнить преобразование 4435 → Z10 :
4435 = 4 · 52 + 4 · 51 + 3 · 50 = 4 · 25 + 4 · 5 + 3 · 1 = 12310 .
0 0 0 0 8 1000 10 8
1 1 1 1 9 1001 11 9
2 10 2 2 10 1010 12 A
3 11 3 3 11 1011 13 B
4 100 4 4 12 1100 14 C
5 101 5 5 13 1101 15 D
6 110 6 6 14 1110 16 E
7 111 7 7 15 1111 17 F
Тогда
r−1 (0) r −1
Zp = (a1 a0 )p = (b(1)
r−1 q +. . .+b(1) 0 r
0 q )q +(br −1 q +. . .+b(0) 0 0
0 q )q =
2r −1 (0) r −1
= b(1)
r−1 q +. . .+b(1) r
0 q +br −1 q +. . .+b(0) 0 (1) (0)
0 q = (br −1 . . . b0 )q = Zq ,
Ïðèìåð 4.8.
Выполнить преобразование 0,D8316 → 0,Y4 .
Имеем 16 = 42 , следовательно, r = 2 — каждую 16-ричную цифру
заменяем двумя четверичными: D16 → 314 ; 816 → 204 ; 316 → 034 :
0,D8316 = 0,3120034 .
Выполнить преобразование 0,210123 → 0,Y9 .
Имеем 9 = 32 и r = 2 — каждые 2 троичные цифцы заменяем одной
девятиричной, дополняя последнюю незначащим нулем: 213 = 79 ; 013 = 19 ;
(2 + 0)3 = 69 :
0,210123 = 0,7169 .
0 0,165 2 0
1 M := M · 10; k10 = k10 − 1 1,65 1 0
2 M := M/2; k2 = k2 + 1 0,825 1 1
3 M := M · 10; k10 = k10 − 1 8,25 0 1
4 Так как k10 = 0, M → M2 1000,012 1
5 Нормализация по q = 2 0,1000012 5
6 (k2 )10 → k2 0,1000012 101
1 Перевод 0,75 6 0
2 M := M · 2; k = k − 1 1,5 5 0
3 M := M/10; k10 = k10 + 1 0,15 5 1
4 M := M · 2; k = k − 1 0,3 4 1
5 M := M · 2; k = k − 1 0,6 3 1
6 M := M · 2; k = k − 1 1,2 2 1
7 M := M/10; k10 = k10 + 1 0,12 2 2
8 M := M · 2; k = k − 1 0,24 1 1
9 M := M · 2; k = k − 1 0,48 0 2
10 Так как k = 0, то M = M10 0,48 0 2
машинном слове отводится для записи знака числа; при этом ус-
ловились кодировать знак «+» нулем, знак «−» — единицей.
Под запись самого числа, очевидно, остается 15 двоичных разря-
дов, что обеспечивает наибольшее значение числа Z max = 215 −1 =
= 3276710 . Такое представление чисел называется прямым ко-
дом. Однако его применение усложняет порядок обработки чи-
сел; например, операция сложения двух чисел с разными знаками
должна быть заменена операцией вычитания меньшего из боль-
шего с последующим присвоением результату знака большего по
модулю числа. Другими словами, операция сопровождается бо-
льшим количеством проверок условий и выработкой признаков,
в соответствии с которыми выбирается то или иное действие.
Альтернативным вариантом является представление чисел
со знаком в дополнительном коде. Идея построения допол-
нительного кода достаточно проста: на оси целых положитель-
ных чисел, помещающихся в машинное слово (0–65535), смес-
тим положение «0» на середину интервала; числа, попадающие
в первую половину (0–32767) будем считать положительными,
а числа из второй половины (32768–65535) — отрицательными.
B этом случае судить о знаке числа можно будет по его величи-
не и в явном виде выделение знака не потребуется. Например,
1000000000000012 = 3276910 является кодом отрицательного чис-
ла, а 0000000000000012 = 110 — кодом положительного. Принад-
лежность к интервалу кодов положительных или отрицательных
чисел видна по состоянию старшего бита — у кодов положитель-
ных чисел его значение 0, отрицательных — 1. Это напоминает
представление со знаком, но не является таковым, поскольку ис-
пользуется другой принцип кодирования. Его применение позво-
ляет заменить вычитание чисел их суммированием в дополните-
льном коде. Мы убедимся в этом чуть позднее после того, как
обсудим способ построения дополнительного кода целых чисел.
Дополнением (D) k-разрядного целого числа Z в систе-
ме счисления p называется величина D(Zp , k) = pk − Z.
Данную формулу можно представить в ином виде:
D(Zp , k) = ((pk − 1) − Z) + 1.
Число pk − 1 согласно (4.8) состоит из k наибольших в дан-
ной системе счисления цифр (p − 1), например 999910 , FFF16 или
11111112 . Поэтому (pk − 1) − Z можно получить дополнением
до p − 1 каждой цифры числа Z и последующим прибавлением
к последнему разряду 1.
Г л а в а 4. Представление и обработка чисел в компьютере 111
Ïðèìåð 4.14.
∗
Майоров С.А., Кириллов В.В., Приблуда А.А. Введение в микроЭВМ.
Л.: Машиностроение, 1988. — 304 с. (с. 132-133).
Г л а в а 6. Обеспечение надежности передачи информации 149
Аналогично
8!
P8 (0, 02; 1) = C81 · 0,021 · 0,987 = · 0,02 · 0,868 = 0, 139;
1! · 7!
P8 (0, 02; 2) = C82 · 0,022 · 0,986 = 0,0099;
P8 (0, 02; 3) = C83 · 0,023 · 0,985 = 0, 000405.
Таблица 6.1
Ui b1 b2 b3
U0 0 0 0
U1 0 1 1
U2 1 0 1
Ðèñ. 6.2. Разрешенные и запре-
U3 1 1 0
щенные кодовые векторы при n = 3
n!
так как Cn0 = = 1. Окончательно
0!n!
∑
θ
r > log2 Cni . (6.5)
i=0
Выражение (6.5) называется границей Хэмминга для числа кон-
трольных бит в кодах, исправляющих ошибок.
Ïðèìåð 6.2.
Пусть θ = 1. Тогда из (6.5) находим
∑
1
Cni = Cn0 + Cn1 = 1 + n,
i=0
следовательно, r > log2 (1 + k + r), или 2r > 1 + k + r; окончательно,
2r − r > 1 + k. (6.6)
Поскольку в этом выражении r и k являются целыми, проще всего решать
уравнение подбором значений. Из (6.2) и (6.6) легко получить cледующую
таблицу:
k r (n, k) F (n, k)
1 2 (3,1) 2
2 3 (5,2) 1,5
3 3 (6,3) 1
4 3 (7,4) 0,75
5 4 (9,5) 0,8
... ... ... ...
8 4 (12,8) 0,5
... ... ... ...
11 4 (15,11) 0,36
12 5 (17,12) 0,42
... ... ... ...
26 5 (31,26) 0,19
Г л а в а 6. Обеспечение надежности передачи информации 161
6.3. Систематический
помехоустойчивый код
6.3.1. Общие принципы построения
систематических кодов
Рассмотрим (n, k)-код. Кодовую комбинацию представим в
виде кодового вектора, у которого информационные биты обоз-
начим u1 , . . . , uk , а проверочные — p1 , . . . , pr : U = (u1 , u2 , . . . , uk ,
p1 , p2 , . . . , pr ). Поскольку кодирование двоичное, ясно, что каж-
дый бит кода может принимать значение 0 или 1.
(n, k) код называется систематическим (или линей-
ным), если значения всех проверочных бит pj определя-
ются линейными комбинациями информационных бит
ui , т. е.
∑
k
pj = cj,i ui = cj,1 u1 ⊕ cj,2 u2 ⊕ ... ⊕ cj,k uk , j = 1, ..., r. (6.7)
i=1
0 0 0 1
5) уравнения проверок — их общее количество равно числу
контрольных бит, т. е. 3; однозначность выбора также отсутству-
ет; обязательным условием является то, что каждый информаци-
164 Ч а с т ь I. Теория информации
0 1 1
Возможно, здесь стоит обратить внимание на то, что эту мат-
рицу (с точностью до перестановки строк) можно было запи-
сать сразу, поскольку в ней присутствуют все возможные со-
четания, когда строки содержат не менее 2-х единиц. Однако
уравнения проверок (6.9) все равно пришлось бы составлять
при разработке схемы кодера и декодера;
• объединяем информационную и проверочную части, получа-
ем производящую матрицу
U1 1 0 0 0 1 1 0
U2 0 1 0 0 1 0 1
G7,4 =
U3 = 0 0 1 0 1 1 1 ;
U4 0 0 0 1 0 1 1
• линейными комбинациями базисных векторов строим все ос-
тальные; в рассматриваемом примере 4 базисный и один ну-
левой, следовательно, должны быть построены 24 − 4 − 1 = 11
векторов:
U5 = U1 ⊕ U2 = (1100011);
U6 = U1 ⊕ U3 = (1010001);
.....................
U15 = U1 ⊕ U2 ⊕ U3 ⊕ U4 = (1111111).
Легко проверить корректирующие свойства построенных ко-
дов: пусть вместо U5 = (1100011) получена комбинация (U5 )′ =
= (0100011) т. е. в первом бите возникла ошибка. На основании
уравнений проверок (6.9) получаем:
(p1 )′ = 0 ⊕ 1 ⊕ 0 = 1 =
̸ p1 ,
Г л а в а 6. Обеспечение надежности передачи информации 165
v1 v2 v3 v4 4 v5 v6 v7
1 1 1 0 4 1 0 0
H7,4 = 1 0 1 1 4 0 1 0
0 1 1 1 4 0 0 1
| {z }| {z }
H4,3 E3,3
Таблица 6.3
Проверочные биты Контролируемые биты
1 1 3 5 7 9 11 13 15 17 19 21 ...
2 2 3 6 7 10 11 14 15 18 19 22 ...
4 4 5 6 7 12 13 14 15 20 21 22 ...
8 8 9 10 11 12 13 14 15 24 25 26 ...
16 16 17 18 19 20 21 22 23 24 25 26 ...
32 32 33 34 35 36 37 38 39 40 41 42 ...
172 Ч а с т ь I. Теория информации
Ïðèìåð 6.4.
Матричный код строится из набора информационных байт и включает
6 строк. Локализовать ошибку передачи, установить избыточность кода.
1 0 1 1 1 0 1 0 1
0 1 1 0 1 0 1 0 0
0 0 0 1 1 0 1 0 1
1 0 1 0 1 1 0 1 1
0 0 0 1 0 0 1 1 0
1 1 1 1 0 1 1 0 0
1 0 1 0 0 0 1 0
∗
Под словом «невозможно» в данном случае обычно понимается не-
возможность вычисления за реальное время при существующих вычисли-
тельных ресурсах.
Г л а в а 7. Элементы криптографии 183
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я
Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д
А Б В Г Д Е Ж З И Й КЛМН О П РС Т У Ф Х Ц Ч ШЩЬ Ы Э Ю Я
Ж З И Й К Л М НО П РС Т У Ф Х ЦЧШЩ Ь Ы Э Ю Я А Б В Г Д Е
ШЩЬЫЭЮ Я А Б В Г Д ЕЖ З ИЙ К Л М Н О П Р С Т У Ф Х Ц Ч
Е Ж З И Й К Л МН О ПР С Т У ФХЦ Ч ШЩ Ь Ы Э Ю Я А Б В Г Д
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я
6 Ж Z N V L П # F S Б J % 9 Э W @ Q 5 $ + Y 3 4 G = 2 C Ы H 8 U
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
АБВГДЕЖЗИЙ К Л М Н О П Р С Т У Ф Х Ц Ч ШЩ Ь Ы Э Ю Я
8 13 20 14 16 12 0 18 8 10 0 31 8 13 18 5 16 5 17 13 0 30 31 13 0 19 10 0
И Н Ф О Р М А Т И К А И Н Т Е Р Е С Н А Я Н А У К А
Ш И Ф Р Ш И Ф Р Ш И Ф Р Ш И Ф Р Ш И Ф Р Ш И Ф Р Ш И Ф Р
24 8 20 16 24 8 20 16 24 8 20 16 24 8 20 16 24 8 20 16 24 8 20 16 24 8 20 16
1 21 9 30 9 20 20 3 1 18 20 16 1 21 7 0 9 13 6 29 24 7 20 29 24 27 30 16
Б Х Й Я Й Ф Ф Г Б Т Ф Р Б Х З А Й Н Ж Ю Ш З Ф Ю Ш Ы Я Р
И Н Ф О Р М А Т И К А И Н Т Е Р Е С Н А Я Н А У К А
Ш И Ф Р И Н Ф О Р М А Т И К А И Н Т Е Р Е С Н А Я Н
4 6 3 1 5 2
И Н Ф О Р М
А Т И К А
И Н Т Е Р Е
С Н А Я Н
А У К А Д А
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
АБВГДЕЖЗИЙ К Л М Н О П Р С Т У Ф Х Ц Ч ШЩ Ь Ы Э Ю Я
КРИПТО: 0A 10 08 0F 12 0E
Представляем в двоичном виде, добавляем гамму — случайную после-
довательность двоичных чисел и суммируем ⊕ побитно.
Исх. текст: 0000 1010 0001 0000 0000 1000 0000 1111 0001 0010 0000 1110
Гамма: 0101 0011 1001 0100 0100 0110 1011 0110 1111 1001 1000 0101
Шифр. текст: 0101 1001 1000 0100 0100 1110 1011 1001 1110 1011 1000
1011
В 16-ричном представлении: 59 84 4E B9 EB 8B
Можно произвести расшифровку полученного текста, сложив его c гам-
мой:
Шифр. текст: 0101 1001 1000 0100 0100 1110 1011 1001 1110 1011 1000
1011
Гамма: 0101 0011 1001 0100 0100 0110 1011 0110 1111 1001 1000 0101
Расшифр.: 0000 1010 0001 0000 0000 1000 0000 1111 0001 0010 0000 1110
0 A 1 0 0 8 0 F 1 2 0 E
Г л а в а 7. Элементы криптографии 191
∗
Сам К. Шеннон обозначал ситуацию как «теоретическая секрет-
ность», подчеркивая, по-видимому, ее принципиальную возможность, а не
прикладное значение и практическую возможность реализации.
Г л а в а 7. Элементы криптографии 193
∗
Двумя наиболее распространенными хеш-функциями являются MD5,
генерирующая 128-битную контрольную последовательность, и SHA, кото-
рая производит последовательность длиной 160 бит.
Г л а в а 7. Элементы криптографии 203
Ïðèìåð 7.4.
На основании описанных алгоритмов требуется генерировать электрон-
ную подпись на сообщении ИНФОРМАТИКА. Значения ключей возьмем из
примера 7.3: p = 11, q = 3, n = 33, Ф(33) = 20, открытый {7, 33}, секретный
{3, 33}.
Числовые коды знаков исходного текста пусть соответствуют их по-
рядковым номерам в алфавите:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
АБВГДЕЖЗИ Й К Л М Н О П Р С Т У Ф Х Ц Ч ШЩ Ь Ы Э Ю Я
Проводим вычисления:
0 S0 = 0
1 И 09 S1 = (S0 + w1 )2 mod n = (0 + 9)2 mod 33 = 15
2 Н 14 S2 = (S1 + w2 )2 mod n = (15 + 14)2 mod 33 = 16
3 Ф 21 S3 = (S2 + w3 )2 mod n = (16 + 21)2 mod 33 = 16
4 О 15 S4 = (S3 + w4 )2 mod n = (16 + 15)2 mod 33 = 4
5 Р 17 S5 = (S4 + w5 )2 mod n = (4 + 17)2 mod 33 = 12
6 М 13 S6 = (S5 + w6 )2 mod n = (12 + 13)2 mod 33 = 31
7 А 01 S7 = (S6 + w7 )2 mod n = (31 + 1)2 mod 33 = 1
8 Т 19 S8 = (S7 + w8 )2 mod n = (1 + 19)2 mod 33 = 4
9 И 09 S9 = (S8 + w9 )2 mod n = (4 + 9)2 mod 33 = 4
10 К 11 S10 = (S9 + w10 )2 mod n = (4 + 11)2 mod 33 = 27
11 А 01 S11 = (S10 + w11 )2 mod n = (27 + 1)2 mod 33 = 25
Хеш S = 25
ЭП P = S d mod n = 253 mod 33 = 16
∗
На самом деле, для идентификации файла вместе с путем его рас-
положения в директории отводится 260 знаков, т. е. чем длинней путь до
файла, тем меньше возможная длина его имени.
Г л а в а 8. Хранение информации 211
∗
Часто стек называют памятью типа LIFO (Last Input First Output:
«последним вошел — первым вышел»).
Г л а в а 8. Хранение информации 221
a)
№ записи № ячейки Содержание
1 4000 Запись A
2 4012 Запись B
3 4024 Запись C
... ... ...
N 4000 + (N − 1) · 12 Запись N
N +1 4000 + N · 12 Запись N + 1
b)
= 0 + 1 = 1.
Ïðèìåð 9.2.
Найти значение S 3 (I22 , I11 , 01 ).
В этом случае конечная функция будет двуместной (n = 3 − 1 = 2),
следовательно h(x1 , x2 ) = I22 (I11 , 01 ) = I22 (x1 , 0) = 0.
Ïðèìèòèâíàÿ ðåêóðñèÿ. Пусть заданы какие-либо число-
вые частичные функции: n-местная g(x1 , . . . , xn ) и (n+2)-местная
h(x1 , . . . , xn , k, y). Говорят, что (n + 1)-местная частичная функ-
ция f образуется из функций g и h посредством примитивной
рекурсии, если для всех натуральных значений x1 , . . . , xn , y спра-
ведливо:
f (x1 , . . . , xn , 0) = g(x1 , . . . , xn );
(9.1)
f (x1 , . . . , xn , y + 1) = h(x1 , . . . , xn , y, f (x1 , . . . , xn , 0))
Поскольку областью определения функций является множес-
тво всех натуральных чисел, частичная функция f , удовлетворя-
ющая условиям (9.1), существует для каждых частичных функ-
ций g и h и функция эта будет единственной. Условия (9.1) за-
244 Ч а с т ь II. Алгоритмы, модели, системы
z = 2; ̸ 7;
2+2=4=
z = 3; 2 + 3 = 5 ̸= 7;
z = 4; 2 + 4 = 6 ̸= 7;
z = 5; 2 + 5 = 7 = 7.
Таким образом, найдено значение функции f (7, 2) = 5.
Введем определение:
Частичная функция f (x1 , . . . , xn ) называется частично
рекурсивной, если ее можно получить конечным чис-
лом операций суперпозиции, примитивной рекурсии и
минимизации, исходя лишь из простейших функций S 1 ,
0n и Im
n.
M M M M M M M M
∇
M M M M
1↗
3
↘ 1 2 → 1 3M 4 4 стоп.
Последовательное исполнение команд 1 и 2 приводит к тому, что го-
ловка за два такта работы машины сдвигается на одну позицию вправо.
Это передвижение продолжается до тех пор, пока после очередного сдвига
под головкой не окажется пустой ячейки — тогда по команде 3 в нее будет
поставлена метка и по команде 4 машина остановится.
Ïðèìåð 9.7.
На ленте записано некоторое число, и головка обозревает одну из сво-
бодных секций (любую) левее записи. Составить программу прибавления
единицы к этому числу.
252 Ч а с т ь II. Алгоритмы, модели, системы
Программа:
1↗
2
↘ 2 → 1 3 ← 4 5M 5 5 стоп.
3
Комментарий к работе программы подобен приведенному выше, с той
лишь разницей, что метка ставится перед исходным числом.
Можно показать (это предлагается сделать в контрольных
заданиях к данному разделу), что с помощью машины Поста
реализуются (хотя и довольно громоздко) все арифметические
действия над числами в унарной системе счисления∗ . Числа же,
как было показано ранее, могут быть использованы для коди-
рования любой дискретной информации. B частности, состояние
ленты можно представить словом в двоичном алфавите, где 0 бу-
дет соответствовать пустой секции, а 1 — отмеченной. B процессе
работы меняется состояние ленты и, следовательно, от исходного
слова происходит переход к выходному, представленному в том
же двоичном алфавите.
9.3.3. Алгоритмическая машина Тьюринга
Машина Тьюринга состоит из трех частей: ленты, считыва-
юще-записывающей головки и логического устройства (рис. 9.1).
Лента выступает в качестве внешней памяти; она считает-
ся неограниченной (бесконечной) — уже это свидетельствует о
том, что машина Тьюринга является модельным устройством,
поскольку ни одно реальное устройство не может обладать па-
мятью бесконечного размера.
Как и в машине Поста, лента разбита на отдельные ячей-
ки, однако в машине Тьюринга неподвижной является головка, а
лента передвигается относительно нее вправо или влево. Другим
A Q
q z
1 qR1 zS1
∆ zS1 zS ∆
a 0 1 2 3 4 5 6 7 8 9 ∆
q zS1 zS2 zS3 zS4 zS5 zS6 zS7 zS8 zS9 qL0 zS1