- •Введение
- •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. Задания для самостоятельной работы
- •Литература
5.2. Операции над машинами Тьюринга
Рассмотрим две основные операции: композиция и итерация МТ. Пусть М1 и М2 машины Тьюринга с общим алфавитом. Композицией (или произведением) машин Тьюринга М1 и М2 (в этом порядке) называется машина Тьюринга М (обозначение М=М1М2), работающая следующим образом: если на вход машины М подать входное слово Р, то оно сначала преобразуется машиной М1, а затем полученное выходное слово подаётся на вход машины М2, и выходное слово машины М2 считается результатом преобразования входного слова Р машиной М: М(Р)=М2(М1(Р)).
Если известны функциональные схемы (ФС) машин М1 и М2, то ФС композиции М=М1М2 строится следующим образом:
СТОП-состояние машины М1 отождествляется с начальным состоянием машины М2;
2. СТОП-состояние машины М2 объявляется СТОП-состоянием композиции М=М1М2;
3. Остальные состояния М2 переобозначаются.
Пусть даны три МТ с общим алфавитом М1, М2 и М3 и некоторое условие С. МТ, описываемая формулой , называетсяразветвлением машины М1 на машины М2 и М3 по признаку С, если она работает следующим образом: входное слово Р подаётся на вход машины М1, результат обработки ею слова Р (М1(Р)) подаётся на вход машины М2, если условие С выполнено, и на вход М3 в противном случае.
Можно считать, что машина М1 имеет два СТОП-состояния и, таких, что машина М1 приходит в состояние в том случае, когда для М1(Р) выполнено условие С, и в в противном случае.
Итерацией называется операция установления обратной связи от машины МJ к машине МI, при которой выходное слово машины МJ подаётся на вход машины МI (СТОП-состояние МJ отождествляется с начальным состоянием МI). При этом образуется цикл; начало и конец цикла будем обозначать точкой () над соответствующими буквами. Если в МТ содержится несколько циклов, то начала и концы циклов обозначаются двумя (), тремя () и т.д. точками над соответствующими буквами.
Указанные операции над МТ позволяют из более простых машин собирать суперпозицию МТ, реализующую более сложные алгоритмы.
Для построения ФС суперпозиции МТ поступают следующим образом (по умолчанию считаем, что у всех машин алфавиты одинаковы 0 и 1).
1. Таблица составной машины имеет столько строк, сколько их в сумме во всех исходных машинах. Вначале эта таблица заполняется строками из ФС каждой исходной машины в том порядке, в каком они записаны в формуле (слева направо и сверху вниз).
2. Состояния в 1-й колонке формируемой таблицы заменяем состояниями общей машины так, чтобы их номера шли в порядке возрастания; во 2-й и в 3-й колонках проводим переобозначения состояний исходных машин в соответствии с проведенными заменами. При этом их СТОП-состояния не изменяются; не изменяются символы, записываемые на ленту, и символы команд на перемещение головки.
3. В заключение проводим переобозначения для СТОП-состояний. Для этого нужно уяснить, как проходит передача управления от машины к машине и как проявляются СТОП-состояния общей машины, т. е. необходимо отождествить состояния исходных машин и общей машины с учетом новых обозначений.
Пример 5.3. Пусть МТ С определена операцией умножения С=АВ1, причём машины А и В заданы своими ФС (соответственно табл. 5.4. и 5.5).
Таблица 5.4 Таблица 5.5
-
А
0
1
В
0
1
А1
0RA2
0RA2
B1
0RB2
1RB3
А2
1RA1
1LA0
B2
1SB2
0LB1
B3
0SB0
1LB3
Построим таблицу результирующей машины. ФС для машины М приведена в табл. 5.6.
Т
Алфавит
состояний для машины С будет:
С={С0,
C1,
C2,
C3,
C4,
C5},
где
С1=А1,
С2=А2,
С3=В1,
С4=В2,
С5=В3;
А0В1=С3
передача управления от А к В,
С0В0
стоп-состояние
общей МТ.
М |
0 |
1 |
С1 |
0RC2 |
0RC2 |
С2 |
1RC1 |
1LC3 |
С3 |
0RC4 |
1RC5 |
С4 |
1SC4 |
0LC3 |
С5 |
0SC0 |
1LC5 |
Пример 5.4. Машины Тьюринга A, B и C заданы своими ФС (табл. 5.7-5.9). Суперпозиция этих машин описывается формулой:
Таблица 5.7 Таблица 5.8 Таблица 5.9
-
А
0
1
В
0
1
С
0
1
А1
1RA1
0LA2
В1
0RB2
0RB0(1)
С1
0LC1
1RC2
А2
0RA2
1SA0
В2
1RB1
1SB0(2)
С2
1RC1
0SC0
Построим ФС составной машины N. В соответствии с правилами построения результирующей таблицы запишем алфавит состояний МТ N: N={N0, N1, N2, N3, N4, N5, N6}; здесь обозначено: N1=B1, N2=B2, N3=C1, N4=C2, N5=A1, N6=A2.
Таблица 5.10
Передача
управления и остановка машины N
определяются следующими выражениями:
B0(1)C1=N3,
B0(2)A1=N5,
A0B1=N1,
N0C0.
Переобозначив состояния в соответствии
с приведенными выражениями, получим
ФС машины N (табл.
5.10).
|
0 |
1 |
N1 |
0RN2 |
1RN3 |
N2 |
1RN1 |
1SN5 |
N3 |
0LN3 |
1RN4 |
N4 |
1RN3 |
0SN0 |
N5 |
1RN5 |
0LN6 |
N6 |
0RN6 |
1SN1 |
Приведем краткое описание работы общей МТ N. Её работа начинается с работы МТ B. Если она по результату обработки входного слова приходит к первому СТОП-состоянию, тогда работу продолжит МТ C; её СТОП-состояние - общее СТОП-состояние МТ N. Если машина В приходит ко вто-
рому СТОП-состоянию, тогда начнет работать МТ A; её СТОП-состояние отождествляется с начальным состоянием МТ В и далее процесс продолжится в зависимости от того, как поведет себя машина В.
5.4. Задания для самостоятельной работы
1. Используя правила композиции и ветвления, составить программу (ФС) МТ N, которая состоит из машин A, B, C, D.
A |
0 |
1 |
|
B |
0 |
1 |
|
C |
0 |
1 |
|
D |
0 |
1 | |
A1 |
0RA1 |
0SA2 |
|
B1 |
0RB2 |
1RB0(1) |
|
C1 |
1RC1 |
0RC2 |
|
D1 |
0RD2 |
1SD0(1) | |
A2 |
0SA0(1) |
1RA2 |
|
B2 |
1LB1 |
1SB0(2) |
|
C2 |
0SC0(1) |
1SC0(2) |
|
D2 |
1LD1 |
1SD0(2) |
1. 4.
2.
3
2. Исследовать работу полученной машины М для приведённых конкретных конфигураций.