тюмгу / Тишин В.В. Дискретная математика в примерах
.pdf/ 1,1,1) = 0
Запишем найденные значения (Jфункции f(x.y.z) в карту Карнау (табл. 2.6.5а).
Минимальная ДНФ : ху v xz v х_у.
Преобразуем формулу:
ху v x z v x j = ху v x ^ v у .
Соответствующая контактная схема
имеет вид:
Задание выполнено.
Таблица 2.6.5а
Z |
|
|
0 |
|
1 |
х у " ' |
|
|
0 0 |
0 |
0 |
0 1 |
1 |
1 |
1 1 |
1 |
0 |
1 0 |
1 |
1 |
Глава 3. Теория алгоритмов
3.1 Машины Тьюринга |
|||
Машиной Тьюринга называется пятёрка объектов |
|||
Т = (A ,S ,5,V,|д), |
где |
А = {а1 ,а2 ,...Д„} - алфавит', |
|
S = {s0,Si,...,sm} |
- |
множество внутренних состояний, причём 50 - |
|
заключительное, a |
J| - начальное состояния. |
||
8 : A x S —>S |
- функция перехода', |
||
v : А х S —>А |
- функция выхода', |
||
p. А х S —>{П, JI, Щ - функция управления. |
Командой машины Тьюринга называется запись вида a^Sj ~ ^a pD s j,
где a D, s - - значения на наборе (a/;.v() функций S. а и г соответ
ственно.
Программой машины Тьюринга называется набор всех её команд.
Работа машины Тьюринга связана с бесконечной лентой, разбитой на ячейки, причём в каждой ячейке может быть записан один символ неко торого алфавита, причём X является символом пустой ячейки.
Работа машины Тьюринга над словом а, записанным на ленте, проходит
следующим образом:
машина Тьюринга начинает свою работу всегда в состоянии s1; а её считывающее устройство расположено над первым слева символом слова, записанного на ленте;
считав символ в ячейке, обозреваемой считывающим устройством ма шины Тьюринга, она печатает в эту ячейку символ, найденный с помо щью функции выхода к двигается вдоль ленты вправо, влево или оста ётся на месте, в случае, если функция ц принимает значения П, JI, или Н соответственно и переходит в состояние, определяемое с помощью функции перехода S;
при переходе машины Тьюринга в состояние л0 считают, что она за
кончила работу над словом а и говорят, что машина Тьюринга приме нима к слову а.
Если машина Тьюринга при работе над словом а не переходит в со стояние S q , то говорят, что она не применима к слову а.
Конфигурацией машины Тьюринга называется запись щ h а 2 . где b - sk
символ ячейки, обозреваемой считывающим устройством машины Тью
ринга, находящейся в состоянии sk , а а ; и а 2 - слова, записанные на ленте соответственно левее и правее символа Ь.
Кодом машины Тьюринга называется запись набора её команд в алфа
вите {*,1}, позволяющая однозначно восстанавливать каждую команду.
Машина Тьюринга называется самоприменимой (несамоприменимой), в
случае, ели она применима (не применима) к своему коду.
Числовой функцией называется функция вида |
/ :N q |
—»Л''0, к |
е N . |
||
Изображением |
набора аргументов |
(х1,х2,...,х^:) |
называется |
запись |
|
вида lXl+1 )ЛХ2 +1 |
и Хз+1 Х ..Л Хк'+1 |
(*), |
где lz =11...1. |
|
|
|
|
|
|
z да£ |
|
Числовая функция f(x ^ ,x 2 ,...,xk) |
называется вычислимой по Тьюрин |
гу, если существует машина Тьюринга, применимая к любому слову
вида (*), переводящая его в слово 1 У+1, где у = / (х] ,х 2 хк ).
Задание 3.1.1
1.Построить машину Тьюринга, применимую ко всем словам х1х2...хи
валфавите {а, Ь} и переводящую их в слово а
2.Проверить работу машины Тьюринга над некоторыми словами.
Таблица 3.1.1
№ |
а |
1 |
XiX2...X„_iX„Xx„_i |
2 |
х1Лх3...хи_1, если х2 =а, х3х4...хи, если х 2 =Ь |
№
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
Таблица 3.1.1(продолжение) |
|
а |
ххх2 |
...хп, если в данном слове количество букв а нечётно, |
ЪЪ, |
если чётно |
хх7о:3 'к..(кхп, если п нечётно, ххх2 ...хп, если п - чётно
х2 a хх
х1х2...хй_1хйхй_1...х1
baba, если слово начинается на Ьа,
Х|х2.. ,хпа в других случаях
Ьхх...хп, если хй - а, |
bb, если хй - Ь |
ab, если п -чётно, |
хй, если п - нечётно |
а ”, если хп_х - a, |
xlx2 ...xn_2 ab, если хп_х =Ь |
х1х3х2х4х5...хй |
|
аххх2 ...хп_2Ь |
|
а, если п < 4, |
хх...хп, если п > 3 |
аа, если в данном слове число букв нечётно, х1х2...хй_1, если чётно
х1х2 |
...хй_1хйхй, если х2 =а, |
|
хх... |
хп, если х2 = b |
||||||
bob, |
если слово начинается на |
ab, |
|
Х|х2 в других случаях |
||||||
ххх2 |
...хпЬ, |
если п - чётно, |
|
Ьххх2 ... |
хп, |
если |
п |
- нечётно |
||
ab, |
если х2 =а, |
|
хг... |
хи_1, если |
х2 =Ь |
|||||
aha, |
если п - нечётно, |
х1х2... |
хй_1хйхй,если п |
- чётно |
||||||
а ”, если хх =а, |
|
х2, если |
хх =Ь |
|
||||||
ххх2 ...хп_х, |
|
|
|
|
|
|
|
|
||
ах2 'кх3 |
х4 ... |
хп |
|
|
|
|
|
|
|
|
хххпх2 |
х3 ... |
хп_х |
|
|
|
|
|
|
|
24Ьпхх...хп
25(ab)n
|
|
|
|
Таблица 3.1.1(окончание) |
№ |
|
|
|
а |
26 |
2 |
2 |
Xn-lXn-lXn |
|
|
XlX --Xn- |
|
|
|
27 |
Xj, если п - нечётно, |
хп, если п -чётно |
28хйхй_i„.Xi
29ХхХ2 ...Хп- 2 ^ п - \ Хп
30ab, если слово начинается на Ьа. х1...хи_1 в других случаях
Пример решения задания 3.1.1
Решить задание 3.1.1 для
а = {хп, если хп_х =а, Ьп~ххп, если хп_х = b, (п> 1).
1. Опишем работу алгоритма, решающего эту задачу.
Будем обозначать состояния машины Тьюринга числами 0,1,2..., при чём 1 - начальное, а 0 - заключительное состояния.
Вначале с помощью команд (а,1)—>аП1; (ЙД)—>ЙП1 проходим до конца слова, не изменяя его символов.
Признаком окончания слова будет считывание X в первом состоянии.
С помощью команд (X,1)—»Ш2; (а.2) —» а ЛЗ; (Ъ,2) —> b ЛЗ движемся
влево, не изменяя последнего символа слова.
Если в состоянии 3 считываем символ а, значит, хп_\ = а, нужно сти
рать все символы слова а , кроме последнего. Эго можно сделать с по мощью команд (а,3)-> лЛ4: (а,4)-> /Л 4: (Ь,4)-> /Л4. Если в со
стоянии 4 считывается X, значит, вся работа проделана, и пора останав
ливаться с помощью команды (^,4)—»ХН0.
Если в состоянии 3 считываем символ Ь, значит, хп_\ = Ь. нужно все символы, кроме хп, заменять буквами Ь. Эго делаем с помощью ко манд (Z>,3) — Л5; (а,5) —>ЙЛ5; (Ь,5)—>Ы15. Если в состоянии 5 считывается X, значит, всё символы исходного слова пройдены, можно
переходить в состояние 0 с помощью команды (Л,5)—»Ш0. Запишем программу найденной машины Тьюринга в виде таблицы:
|
|
|
|
|
Таблица 3.1. la |
A \ S |
1 |
2 |
3 |
4 |
5 |
X |
WI2 |
- |
- |
х н о |
ш о |
а |
яП1 |
аЛЗ |
ХЛ4 |
ХЛ4 |
ЙЛ5 |
Ь |
Ш 1 |
ь л ъ |
ЬЛ5 |
ХЛ4 |
ЙЛ5 |
2. Проверим работу построенной машины Тьюринга над словом abba :
abba, abba, abba, abba, abbaX, abbaX, abba, abba, abba,
1 |
1 |
1 |
1 |
1 |
2 |
3 |
5 |
5 |
Xbbba, Xbbba.
5 0
Итак, в слове abba предпоследний символ - b, и все буквы исходного слова, кроме последней, заменены буквой b.
Проверим работу построенной машины Тьюринга над словом bbaaa :
bba a a , b baaa, b b aaa, bbaaa, b baaa, b baaaX, bbaaa,
1 1 1 1 1 1 2
bbaaa, bbaXa, bbXXa, bXXXa, XXXXXa, XXXXXa.
3 4 4 4 4 0
В слове bbaaa предпоследний символ - а, и все буквы исходного сло
ва, кроме последней, заменены пустыми символами X.
Итак, проверка сделана, результат работы машины Тьюринга удовле творяет требованиям, которые ставились в условии задачи.
Задание 3.1.2
1. Построить машину Тьюринга, вычисляющую числовую функцию
/ ( * ! ,*2,
2. Проверить работу построенной машины над некоторыми наборами значений переменных.
Таблица 3.1.2
№ |
f ( x b x2 ,...,xn) |
1f ( x , y , z ) = x + y
2f ( x , y , z ) = y + 3
Таблица 3.1.2 (продолжение)
№ |
|
|
f ( x b x 2 , . . . , x n ) |
|
|
|
|
3 |
f |
(х,у ) = { х - у , если х> у, |
0 |
, если |
х < у} |
||
4 |
f (x ,y ,z ,w) = 4 |
|
|
|
|
||
5 |
f ( x , у) = {0, если х > у, |
1, если х < у } |
|||||
6 |
f ( x , y , z ) = { z -З, если z |
> 3, |
|
0, если |
z <3} |
||
7 |
f ( x ,y ,z ,w) = y + z + 1 |
|
|
|
|
||
8 |
f ( x , y,z) = {0, если x = 0, |
у, |
если |
х^О } |
|||
9 |
/ |
(х, у ) - { у - |
х, если х < у, |
0, если |
х > у} |
||
10 |
f |
(х, у ) —{2, |
если у > 1 , |
х, если у < 1} |
|||
11 |
f ( x , y , z ) - у + 3 + z |
|
|
|
|
||
12 |
f |
(х,у) —{0, если х ф О, |
у +1, если |
х = 0} |
|||
13 |
f |
(х,у) —{х,если х - чётно; у, |
если х - нечётно} |
||||
14 |
/ (х, у) — {х+ у, если х > у, |
0, если |
х < у} |
||||
15 |
f ( x , y , z ) = {z + \, если z Ф0, |
0, если z —0 } |
|||||
16 |
f |
(х,у) = {0, если х - чётно; |
1 если |
х - нечётно} |
|||
17 |
f {x, y, z ) = 2 y |
|
|
|
|
||
18 |
f |
(х, у, z) = {w, если х = 0, |
2, если х ^ 0} |
||||
19 |
/ |
(х, у) = {х —2,если х > 2, |
0, если |
х < 2} |
|||
20 |
/ |
(х, у) = 2 х + 1 |
|
|
|
|
|
21 |
f |
(х,у) — {х, если х - чётно; |
|
0, если х - нечётно} |
|||
22 |
f |
(х, у) — {0, если ху = 0, |
х + у, если хуФ 0} |
||||
23 |
f { x , y , z ) = y + 3 |
|
|
|
|
||
24 |
f |
(х, у) — {1, если х = 0, |
0, если х Ф 0} |
||||
25 |
f{x,y,z,w) - |
Z + W |
|
|
|
|
|
26 |
f |
(х, у) — {у, если х = 1, |
х + 2, если х Ф 1} |
||||
27 |
/ |
(х, у, z) = {х + у, если z Ф 0; |
у, если z - 0 } |
|
|
Таблица 3.1.2 (окончание) |
№ |
f ( x b x2 ,...,xn) |
|
28 |
f i x , y,z,w) = {z, еслих>1; |
гг, если х<1} |
29 |
f ( x , y , z ) = 2 z |
|
30 |
f i x , у) = {5, если х +у > 2, |
0, если х +у < 2} |
Пример решения задания 3.1.2
Решить задание 3.1.2 для f ( x , y ) = x + 2у.
1. Внутренние состояния машины Тьюринга, которую мы требуется построить, будем обозначать числами 0,1,2..., причём 1 - начальное, а 0 - заключительные состояния.
Набор значений аргументов (х,у) изображается словом 1Х+1 /Л' -1.
Аргумент х должен остаться без изменения, этого можно добиться с помощью команды (1,1)—»1П1. Когда в первом состоянии встретится символ X, значит, мы попали на символ, разделяющий изображения ар гументов, переходим в состояние 2, а сам символ X пока оставляем без изменений с помощью команды (?ц1)—>1X12.
Далее, набор единиц, изображающий аргумент у , проходим до конца.
Для этого добавим команды (1,2)—>1П2; (/^.2)—»/Л.З.
Теперь с помощью “челночного” алгоритма удвоим количество единиц в блоке, изображающем вторую переменную.
Расширим алфавит, введя метку #. Считая, что к единиц блока продуб
лированы, рассмотрим, как будет дублироваться |
к |
+1-я |
единица. |
y+1-k к к |
|
|
|
1Х+1АЛ...11...11...1. Заменим очередную единицу |
из |
блока, |
изобра- |
з |
|
|
|
жающего вторую переменную, меткой # и будем двигаться вправо ((1,3)—>#П4; (1,4)—»1П4 ) пока не встретим пустую ячейку, заполним её единицей, и пойдём влево ( (?ц4)—>1J15; (1,5)—»1Л5 ), пока не встре тим метку, заменим её единицей, перейдём к следующему символу сле ва, вернувшись в состояние 3 ((#,5)—>1ЛЗ).
Когда в третьем состоянии считается X, значит, блок, изображающий
вторую переменную, продублирован. Заменим разделяющий символ
единицей ( (Х,3)—»1J15 ) и пойдём на начало полученного блока из х +1 +14- 2(у +1) = х + 2у + 4 единиц. Когда в состоянии 5 встретится
X, значит, пора идти вправо, стирать три лишние единицы, ведь для изо
бражения числа х + 2у |
требуется х + 2у +1 единиц. Для этого доба |
вим команды (Х,5)—>ХП6; |
(1,6)—>ХП7; (1,7)—>ХП8; (1,8)—>ХН0 . |
Запишем все команды полученной машины Тьюринга в виде таблицы:
|
|
|
|
|
|
|
|
Таблица 3.1.2а |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
X |
ХП2 |
ХЛЗ |
1Л5 |
1Л5 |
ХП6 |
- |
- |
- |
1 |
1П1 |
1П2 |
#П4 |
1П4 |
1Л5 |
ХП7 |
ХП8 |
хно |
# |
- |
- |
- |
- |
1ЛЗ |
- |
- |
- |
В клетках таблицы, помеченных неопределённым символом - можно вписать любые команды, т.к. до их исполнения дело всё равно не дой дёт.
2. Проверим работу алгоритма над изображением набора переменных
(0,1), т.е. над словом 1Л.11:
1X11, 1X11, 1X11, 1X11, 1Х11Х, 1Х11Х, 1Х1#Х, |
1X1# 1, |
||||||||
1 |
1 |
|
2 |
2 |
|
2 |
3 |
4 |
5 |
1X111, |
1X# 11, IX# 11, |
1X# 11X, IX# 111, |
1X# 111,1X# 111, |
||||||
3 |
|
|
4 |
4 |
|
4 |
5 |
5 |
5 |
1X1111, |
I I 5, XI6, X I I 5, X I I 4, X II3, XXI11. |
|
|
||||||
3 |
|
5 |
5 |
6 |
7 |
8 |
0 |
|
|
Итак, в результате осталось три единицы, которые являются изображе нием числа 2.
Заметим, что УХОД) = 0 + 2 • 1 = 2, так что на ленте получено то, что и нужно было получить.
Задание 3.1.3
1. Написать формулу числовой функции вычислимой
машиной Тьюринга с множеством внутренних состояний (ОД,2,3,4,5,6}, где 0 - заключительное, а 1 - начальные состояния, если машина задана своей программой.
2. Проверить работу машины Тьюринга с некоторым набором значений аргументов.
№п
14
22
33
42
53
64
72
83
93
А ? |
1 |
2 |
3 |
X |
1П2 |
1ПЗ |
Ш4 |
1 |
Ш1 |
1П2 |
1ПЗ |
X |
— |
1П5 Ш4 |
|
1 |
1П2 |
ШЗ |
ШЗ |
X |
Ш2 |
ШЗ |
Ш4 |
1 |
Ш1 |
Ш2 |
1ПЗ |
X |
1П4 |
ШЗ |
ш о |
1 |
1П2 |
1П1 |
ШЗ |
X |
— |
1ПЗ |
Ш4 |
1 |
Ш2 |
Ш2 |
1ПЗ |
X |
Ш2 |
1ПЗ |
Ш4 |
1 |
Ш1 |
1П2 |
1ПЗ |
X |
Ш4 |
1ПЗ |
1П1 |
1 |
Ш2 |
1Л2 |
1ПЗ |
X |
1П2 |
1ПЗ |
1П4 |
1 |
1П1 |
Ш2 |
1ПЗ |
X |
1П2 |
1ПЗ |
Ш4 |
1 |
Ш1 |
1П2 |
ШЗ |
|
|
Таблица 3.1.3 |
4 |
5 |
6 |
Ш5 |
Ш5 |
ш о |
Ш 4 |
Ш6 |
т о |
ШО |
— |
ШО |
Ш4 |
1П6 |
Ш6 |
1Н0 |
1Л6 |
1Л4 |
Ш5 |
1П5 |
1Л6 |
1Л5 |
1П6 |
1Н0 |
1П4 |
1Л5 |
1П6 |
Ш5 |
Ш5 |
1Н0 |
1Л6 |
1Л6 |
1Л6 |
Ш5 Ш5 — |
||
Ш 4 |
Ш6 |
ШО |
Ш5 |
Ш5 |
ШО |
Ш 4 |
Ш6 |
1Л6 |
Ш5 |
Ш6 |
Ш6 |
— |
Ш5 |
1Н0 |
Ш4 |
1Л6 |
1Л0 |
Ш5 |
1Л5 |
— |