Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дискретные структуры - Пояснительная записка.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
58.22 Кб
Скачать

2 Трассировка алгоритма на каком-то контрольном значении Рисунок 1 - Тестирование Машины Тьюринга .2 Композиция Машин Тьюринга

Построить композицию Машин Тьюринга для вычисления ближайшего к s простого числа в унарном коде без сохранения исходных данных.

Пример входных данных: 111111

Пример выходных данных: 11111

Ниже привдена блок-схема алгоритма, реализующего вычисление заданного алгоритма:

<<<Блок-схема>>

Рисунок 1 - Блок схема алгоритма поиска ближайшего к s простого числа

В композиции будут участвовать следующие Машины Тьюринга:

    • – машина копирования;

    • – машина проверки на простоту;

    • – машина выбора m-го элемента из n;

    • - машина увеличения на единицу;

    • СХЕМА КОМПОЗИЦИИ ИЗ 3 ЛАБЫ

      Рисунок 1 - Композиция Машин Тьюринга

      - машина уменьшения на единицу.

Теперь распишем машину , которая используется для проверки числа на простоту.

В композиции будут участвовать машины:

    • – машина копирования;

    • – машина выбора m-го элемента из n;

    • - машина логическое и;

    • - машина сравненения;

    • - машина установки двойки;

    • - машина проверки на равенство двойке;

    • - машина проверки на равенство нулю;

    • - машина вычисления остатка от деления;

    • - машина увеличения на единицу;

    • - машина уменьшения на единицу;

    • - машина сложения.

СХЕМА КОМПОЗИЦИИ ИЗ 3 ЛАБЫ

Рисунок 2.6 - Композиция машины проверки на простоту

Распознающая Машина Тьюринга

3.1 Постановка задачи

Необходимо реализовать распознающую Машину Тьюринга для определения принадлежности входного слова языку L = { www│w{0, 1}*}. Машина проверяет принадлежность слова языку и после него записывает символ “T”, если слово принадлежит языку и символ “F” - в противном случае.

Пример входных данных: 110110110

Пример выходных данных: 110110110T

2.3.2 Описание распознающей Машины Тьюринга

Таблица 1 - Таблица состояний

q\a

1

0

λ

3

2

$

5

4

#

q0

q1

q2

q3

q4

q5

q6

q7

q8

q9

Продолжение таблицы 3.1

q\a

1

0

λ

3

2

$

5

4

#

q10

q11

q12

q13

q14

q15

q16

q17

q18

q19

q20

q21

q22

q23

q24

В таблице 3.2 приведены комментарии, поясняющие назначение состояний:

Таблица 1 - Комментарии к состояниям Машины Тьюринга

Состояние

Комментарий

q0

q1

Продолжение таблицы 3.2

Состояние

q2

q3

q4

q5

q6

q7

q8

q9

q10

q11

q12

Продолжение таблицы 3.2

Состояние

q13

q14

q15

q16

q17

q18

q19

q20

Продолжение таблицы 3.2

Состояние

q21

q22

q23

q24

На рисунке 3.1 приведено тестирование алгоритма распознающей машины:

Входные данные: 101010

Результат: 101010T

Рисунок 1 - Тестирование алгоритма

2.3.3 Временная сложность машины

На рисунке 3.2 приведён график временной сложности выполнения алгоритма.

Рисунок 3.2 - График временной сложности

На графике видно, что функция сложности имеет два скачка в точках 3 и 6. Это обусловлено тем, что слова, длинна которых не кратна трём отсекаются ещё на первых этапах проверки, в то время как слова, кратные трём нуждаются в дополнительном исследовании. Притом, если слово кратно трем, но не является словом языка, машина закончит свою работу раньше, чем при обработке слова языка.

Для вычисления функции сложности рассмотрим такие входные данные: 110110110.

Головка будет двигаться вперёд (состояния 0, 1, 2) и пройдёт 3 шага, затем 4 шага назад. Второй проход: 7 шагов вперёд, 8 назад. Третий проход: 11 шагов назад, 12 вперёд. Можно заметить, что:

(1)

Или в общем случае, для произвольного m — количества проходов (количество проходов равно длине слова (n), делённому на 3).

(1)

Итого:

(1)

(1)

Для второй тройки:

(1)

Так как троек три, то весь этап займёт:

(1)

Прибавляя это значение к предыдущему, получим:

(1)

После этого производятся проходы с целью проверки. На них тратится:

(1)

Всего:

(1)

Так как в некоторых местах этого расчёта использовались приближения, слагаемое 1 несущественно.

Это время выполнения для слова, принадлежащего языку. Рассмотрим теперь слова, не принадлежащие языку, длинна которых кратна 3.

……

Длина слова

Теоретическая оценка

Практическая оценка

3

36

37

6

114

109

9

234

211

Следует отметить, что в случае ввода данных, не принадлежащих языку, программа сработает быстрее. Например, в случае ввода слова, длина которого не кратна трём, алгоритм сработает быстрее, чем (3.3).