Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

тюмгу / Тишин В.В. Дискретная математика в примерах

.pdf
Скачиваний:
1001
Добавлен:
08.12.2019
Размер:
15.69 Mб
Скачать

/ 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у

требуется х + +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

Соседние файлы в папке тюмгу