- •Введение
- •1. Алгоритмы сортировки
- •1.1. Общие положения
- •1.2. Сортировка простыми включениями
- •Словесное описание алгоритма
- •1.3. Сортировка простым выбором
- •1.4. Сортировка простым обменом
- •1.5. Задания для самостоятельной работы
- •2. Алгоритмы покрытия
- •2.1. Постановка задачи покрытия
- •2. 2. Алгоритм полного перебора
- •2. 3. Алгоритм граничного перебора по вогнутому множеству
- •2.4. Алгоритмы, использующие сокращение таблицы покрытий
- •1. Для случая построения одного кратчайшего покрытия
- •2. В случае построения минимального покрытия
- •3. При условии построения всех безызбыточных покрытий
- •2.5. Алгоритм приближенного решения задачи о покрытии
- •2.6. Задачи для самостоятельной работы
- •3. Алгоритмы на графах
- •3.1. Общие положения
- •3.2. Алгоритмы нахождения оптимального пути
- •Волновой алгоритм построения кратчайшего пути для взвешенного графа
- •Волновой алгоритм построения длиннейшего пути во взвешенном графе
- •3.3. Нахождение компонент связности
- •Алгоритм построения компонент связности в неориентированном графе
- •Пример 3.5
- •3.4. Алгоритмы нахождения подграфов
- •3.5. Дерево. Остов
- •Пример 3.7.
- •Алгоритм построения произвольного остова
- •Алгоритм построения минимального остова
- •Алгоритм построения системы независимых циклов графа
- •Пример 3.12.
- •3.6. Алгоритм кратчайшей раскраски графа
- •3.7. Задачи для самостоятельной работы
- •4. Конечные автоматы
- •4.1. Общие положения
- •4.2. Представление автомата
- •4.3. Взаимные преобразования автоматов
- •4.4. Определение реакции автомата на входное слово
- •4.5. Задания для самостоятельной работы
- •5. Машины тьюринга
- •5.1. Общие положения
- •5.2. Операции над машинами Тьюринга
- •6. Структуры данных
- •6.1. Списки
- •6.2. Двусвязный список
- •6.3. Кольцевой список
- •6.4. Стек
- •6.5. Очередь
- •6.6. Задания для самостоятельной работы
- •Литература
4.4. Определение реакции автомата на входное слово
Пример 4.5. Определить реакцию автомата на входное слово (последовательность входных символов составляет входное слово; аналогично для выходного слова)
Пусть на вход автомата Мили АА и эквивалентного ему автомата Мура АВ из примера 4.3 поступает входное слово . Рассмотрим реакцию автоматов на входное слово.
Для автомата Мили имеем: ;, т.е. под действием символа х1 автомат переходит в состояние с выходом у1; при следующем символе получим:;и т. д. В результате получим последовательность состояний и выходное слово:
-
входное слово
= k *
cостояния S
= k+1
выходное слово
= k
Для автомата Мура АВ имеем: при вхождении символа х1 автомат находился в состоянии с выходом,;. Далее поступает следующий символ х1 в состоянии с выходоми т.д. Последовательность входных и выходных символов, а также символов состояний выглядит аналогично представленным выше для автомата Мили:
-
входное слово
= k
cостояния S
= k+1
выходное слово
= k+1
Видно, что реакция автоматов АА и АВ на входное слово совпадают с точностью до сдвига на один такт; это получилось потому, что реакция автомата Мура на входную букву наступает в следующем такте. Так будет и в общем случае, если автоматы эквивалентны и разных типов. Проверка этого утверждения предоставляется студентам.
4.5. Задания для самостоятельной работы
1. Преобразовать заданный автомат Мили в автомат Мура, а затем последний - в автомат Мили (в табличном и графическом виде).
|
| |||||||||
|
| |||||||||
|
| |||||||||
|
| |||||||||
|
|
|
| |||||||||
|
| |||||||||
|
| |||||||||
|
| |||||||||
|
|
|
| |||||||||
|
| |||||||||
|
| |||||||||
|
| |||||||||
|
|
2. Для всех трёх автоматов из п. 1 определить реакцию на входное слово . Сравнить реакции автоматов и определить, являются ли они эквивалентными
5. Машины тьюринга
5.1. Общие положения
Машина Тьюринга это конечный автомат, снабжённый бесконечной лентой и читающей/записывающей головкой (просто головкой). Как и автомат, машина Тьюринга (МТ) описывается пятеркой (X, Y, Q, , ). Здесь:
X={x0, x1, x2, … , xn} входной алфавит, содержащий пустую букву x0;
Y={y0, y1, y2,… ,yn} выходной алфавит;
Q={q0, q1, q2, …, qm} множество внутренних состояний, причем q0 СТОП-состояние (в этом состоянии МТ не работает);
: QX Q функция переходов в следующее состояние;
: QX Y функция выходов.
В свою очередь, Y=XU, где U={R, L, S} команда на перемещение головки: R сдвинуться вправо, L влево, S стоять на месте.
Задавая МТ [5], вместо двух функций можно пользоваться одной (совме-щающей работу входа и выхода): : QX QXU, сопоставляющей каждой паре (qi, xj) выходную тройку (qk, u, xl), uU. Функция полностью описывает работу МТ и называется логической функцией машины Тьюринга. Таблица этой функции называется функциональной схемой, или программой машины Тьюринга. На каждом такте работы МТ головка обозревает в некоторой ячейке символ xj, а сама МТ находится в некотором состоянии qi, что описывается входной парой (qi, xj). В зависимости от входной пары МТ выполняет команду (qk, u, xl), uU, т.е. записывает в обозреваемую ячейку символ xl, передвигает головку в зависимости от значения u и переходит в новое состояние qk. Если на некотором этапе работы МТ переходит в СТОП-состояние, то дальнейших изменений в машине не происходит машина останавливается.
Последовательность входных символов, записанных в ячейках ленты, будем называть входным словом. Совокупность на ленте слова и состояния МТ для обозреваемой в данный момент ячейки ленты называется конфигурацией в МТ. Конфигурация указывает входную пару и определяет дальнейшую работу МТ. Если из некоторой начальной конфигурации через некоторое число тактов МТ приходит к СТОП-состоянию, то будем говорить, что МТ применима к входному слову; последовательность символов на ленте в момент остановки будем называть результатом преобразования входного слова МТ при данной начальной конфигурации, или просто выходным словом. Если же СТОП-состояние МТ не наступает, то будем говорить, что МТ не применима к входному слову при данной конфигурации.
Поскольку МТ преобразует допустимые входные слова в некотором алфавите в выходные слова в том же алфавите, то с математической точки зрения МТ это просто определённый алгоритм для преобразования машинных слов. Тем самым при помощи машины Тьюринга уточняется интуитивное понятие алгоритма.
Пример 5.1. МТ А, описываемая пятеркой (X, Y, A, , ), задана своей функциональной схемой (табл. 5.1) и имеет следующие алфавиты:
Таблица 5.1
-
X={0, 1}; Y={y1, y2, y3};
A={A0, A1, A2}; y1=(0, R);
y2=(1, R); y3=(1, L).
0
1
А1
0RA2
0RA2
А2
1RA1
1LA0
Рассмотрим два входных слова: 1=010110 и 2=00000, и их преобразование машиной Тьюринга (подчеркнутая буква означает, что она обозревается головкой). Соответствующие конфигурации представлены в табл. 5.2. Видно, что МТ А применима к первому входному слову при конфигурации 1 и не применима к пустой ленте (конфигурация 2).
Таблица 5.2
Такт |
Состояние |
Слово на ленте |
Такт |
Состояние |
Слово на ленте |
0 |
А1 |
…010110… |
0 |
А1 |
…00000… |
1 |
А2 |
…000110… |
1 |
А2 |
…00000… |
2 |
А1 |
…001110… |
2 |
А1 |
…01000… |
3 |
А2 |
…001010… |
3 |
А2 |
…01000… |
4 |
А0 |
…001010… |
4 |
А1 |
…01010… |
Условимся кодировать натуральные числа (с нулём) на ленте МТ, в алфавит которой входят буквы «0» (ноль) и «1» (единица), следующим образом: 01, n111…1 (n+1 единица).
Г
(L)
n+1 (R) … 0111…1
… , qi
г
(L)
n1+1
n2+1
nm+1
(R) … 011…1011…10…011…10
… . qi
МТ М вычисляет функцию y=f(x1, …, xn), если выполнены следующие условия:
1. М применима к каждому набору (1, …, n), на котором y=f(x1, …, xn), определена, и если f(1, …, n)=y0, то М, стандартно воспринимающая набор (1, …, n) в начальном состоянии, через конечное число тактов приходит в СТОП-состояние, имея на ленте число y0.
2. М не применима к наборам, на которых функция f(x1, …, xn) не определена.
Функция называется вычислимой по Тьюрингу, если существует вычисляющая её МТ. Вычислимость по Тьюрингу является точным понятием.
Пример 5.2. Функция f(x)=x+1 вычислима по Тьюрингу, так как существует МТ В, которая вычисляет её. Функциональная схема МТ В приведена в табл. 5.3.
Пусть
x=n-1
(на
ленте записано n+1
единиц)
и головка находится у левой границы
числа. После n
тактов
машина передвинет головку к первому
справа,
-
В
0
1
В1
1SB0
1RB1
0, оставаясь в состоянии B1; на следующем такте машина заменит 0 на 1 и остановится, не передвигая головку.