Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 400186.doc
Скачиваний:
13
Добавлен:
30.04.2022
Размер:
2.63 Mб
Скачать

5.2. Блок-схемы алгоритмов

Связь между шагами можно изобразить в виде графа. В рас­смотренном примере это граф, изображенный на рис.5.

Такой граф, в котором вершинам соответствуют шаги, а реб­рам – переходы между шагами, называют блок-схемой алгоритма. Его вершины могут быть двух видов: вершины, из которых выходит одно ребро (их называют операторами), и вершины, из которых вы­ходят 2 ребра (их называют логическими условиями или предика­тами). Кроме того, есть единственный оператор начала и единствен­ный оператор конца, из которого не выходят ребра. Важной особен­ностью блок-схемы является то, что связи, которые она описывает, не зависят от того, являются ли шаги элементарными или представляют собой самостоятельные алгоритмы или блоки.

При всей наглядности языка блок-схемы, не следует пере­оценивать его возможности. Он достаточно груб и отражает связи лишь по управлению, а не по информации (где этому блоку брать исходные данные). Блок-схемы не содержат сведений ни о данных, ни о памяти, ни об используемом наборе элементарных шагов. В частности, если в блок-схеме нет циклов, это не значит, что нет циклов в алгоритме (они могут быть в каком-либо элементарном блоке). По существу блок-схема – удобное средство для описания детерминизма алгоритма. Условия, т.е. точки ветвления могут быть не только двоичными (да- нет; x < 5 - x  5 ), но и многозначными (x < 5; 5  x < 20; x = 20; x > 20).

В теории алгоритмов используется следующий подход: выби­рается конечный набор исходных объектов, которые объявляются элементарными, и конечный набор способов построения из них но­вых объектов. Этот подход уже использован при обсуждении во­проса о ‘‘данных”. Уточнением понятия ‘‘данные” будем считать множества слов в конечных алфавитах. Для уточнения детерми­низма используются либо блок-схемы, либо соответствующие словесные описания. Кроме того, нужно зафиксировать набор элемен­тарных шагов и договориться об использовании памяти. После того, как это будет сделано, получится конкретная алгоритмическая мо­дель.

Выделяются 3 основных типа универсальных алгоритмиче­ских моделей, различающихся исходными эвристическими сообра­жениями относительно того, что такое алгоритм.

I тип связывает понятие алгоритма с наиболее традицион­ными понятиями математики – вычислениями и числовыми функ­циями. Наиболее развитая модель этого типа – рекурсивная функция;

II тип основан на представлении об алгоритме, как о некото­ром детерминированном устройстве, способном выполнять в каж­дый отдельный момент лишь весьма примитивные операции. Ос­новной теоретической моделью этого типа является машина Тью­ринга;

III тип алгоритмических моделей - это преобразование слов в произвольных алфавитах, в которых элементарными операциями являются подстановки, т.е. замены куска слова (подслова) другим словом. Примерами моделей этого типа являются канонические мо­дели Поста и нормальные алгоритмы Маркова.

5.3. Машины Тьюринга

Основные определения:

Машина Тьюринга состоит из:

1) управляющего устройства, которое может находиться в одном из состояний, образующих конечное множество

Q={q­­1, q­­2, …, q­­n};

2) ленты, разбитой на ячейки в каждой из которых может быть записан один из символов конечного алфавита А={а1,…., am};

3) устройства обращения к ленте, (считывающей и пишущей головки), которое в любой момент времени обозревает ячейку ленты, в зависимости от символа в этой ячейке и состоя­ния управляющего устройства, записывает в ячейку символ (быть может совпадающий с прежним или пустой, т.е. стирает), сдви­гается на ячейку вправо или влево или остается на месте; при этом управляющее устройство переходит в новое состояние (или остается в старом). Среди состояний управляющего устройства выделены начальное состояние q­­1 и заключительное состояние q­­Z ­ (z здесь не числовая переменная, а мнемонический знак конца). В начальном состоянии машина находится перед нача­лом работы; попав в заключительное состояние она останавли­вается.

Таким образом, память машины Тьюринга – это конечное множество состояний (внутренняя память) и лента (внешняя па­мять). Лента бесконечна в обе стороны, однако, в начальный момент времени только конечное число ячеек ленты заполнено непустыми символами, остальные ячейки – пусты, т.е. содержат пустой символ  (пробел). Из характера работы следует, что в любой момент вре­мени лишь конечное число ячеек будет заполнено непустыми сим­волами, важна не бесконечность ленты, а ее неограниченность, т.е. возможность писать на ней сколь угодно длинные, но конечные слова. Данные машины Тьюринга – это слова в алфавите ленты; на ленте записываются и исходные данные и окончательные резуль­таты. Элементарные шаги машины – это считывание и запись сим­волов, сдвиг головки на ячейку вправо или влево, а так же переход управляющего устройства в следующее состояние. Детерминиро­ванность машины, т.е. последовательность ее шагов, определяется следующим образом: для любого внутреннего состояния qi и сим­вола aj однозначно заданы:

а) следующее состояние qi

б) символ аj который нужно записать вместо аj в ту же ячейку (стирание символа – занесение пустого символа );

в) направление сдвига головки dk, обозначаемое одним из трех символов: L (влево), R (вправо), E (на месте). Это задание может опи­сываться либо системой правил (команд), имеющих вид:

qi аj qi аj dk, (5.1)

либо таблицей, строкам которой соответствуют состояния, столбцам – входные символы, а на пересечении строки qi и столбца аj записана тройка символов qi аj dk и, наконец, блок –схемой, которую называют диаграммой перехода. В этой диаграмме, состояниям соответствуют вершины, а правилу (5.1) – ребро, ведущее из qi в q'i, на котором написано аj аj dk. Условие однозначности требует, чтобы для любого j и любого iz в системе команд (5.1) имелась одна ко­манда, с левой частью qi аj; состояние qz в левых частях не встреча­ется. На диаграмме переходов это выражается условием, что из лю­бой вершины, кроме qz выходит ровно m ребер, причем на разных ребрах левые части различны; в вершине qz нет выходящих ребер.

Полное состояние машины Тьюринга, по которому одно­значно определяется ее дальнейшее поведение, определяется ее внутренним состоянием, состоянием ленты (т.е. словом, записанным на ней) и положением головки на ленте. Полное состояние будем называть конфигурацией или машинным словом и обозначать трой­кой символов 1qi2, где qi – текущее внутреннее состояние, 1 – слово слева от головки, 2 – слово образованное символом обозре­ваемым головкой и словом справа от головки, причем слева от 1 и справа от 2 нет непустых символов.

Например, конфигурация с внутренним состоянием qi , в кото­рой на ленте записано abcde, а головка обозревает d, запишется abcqide. Стандартной начальной конфигурацией назовем конфигу­рацию вида q1, т.е. конфигурацию, содержащую начальное состояние, в которой головка обозревает крайний левый символ слова, написанного на ленте. Аналогично стандартной заключи­тельной конфигурацией, называется конфигурация вида qz.

Ко всякой не заключительной конфигурации К машины Тью­ринга применима ровно одна команда вида (5.1), которая переводит в конфигурацию К, это соотношение между конфигурациями обозна­чим К К. Если из контекста ясно, о какой машине Тьюринга идет речь, то знак Т опускают.

Если для К1 и Кn существует последовательность К1, К2,…..,Кn, такая, что К1 К2 ,….., Кn. Обозначим это К1Кn

Например, если в системе команд машины Тьюринга имеются команды:

q2 a5 q3 a4R и q2 a1L q4 a2, то

q2a5a1a2 a4q3a1a2 q4a4a2a2 и, следовательно,

q2a5a1a2q4a4a2a2.

Последовательность конфигураций К1 К2 ,….. …, Кn … однозначно определяется исходной конфигурацией К1 и полностью описывает работу машины Тьюринга, начиная с К1. Она конечна, если в ней встретится заключительная конфигу­рация, содержащая qz, или бесконечна в противном случае.

Пример 1. Машина с алфавитом A={1,} состояниями {q1,qz} и системой команд q11 q11R, q1 q11R из любой начальной кон­фигурации будет работать бесконечно, заполняя единицами ленту вправо от начальной точки.

Пример 2. Для любой машины Тьюринга, если К1 Кi Кj и Кi = Кj, последовательность К1 Кi Кj……. является бесконечной; ее отрезок Кi Кj будет повторяться (зацикливаться).

Если 1q12  1qz2 , то говорят, что машина Тьюринга пе­рерабатывает слово 12 в слово 12 и обозначают это T(12)= 12. Для того, чтобы говорить о том, что могут делать машины Тью­ринга, надо уточнить, как будет интерпретироваться их поведение и как будут представляться данные. Исходными данными машины Тьюринга считаем записанные на ленте слова в алфавите исходных данных АисхА и векторы из таких слов (словарные векторы над Аисх). Запись на ленте начальной конфигурации со словарным векто­ром (1,…,к) назовем правильной, если она имеет вид: 12…к (при условии Аисх), либо 12….к, где  - специальный символ – разделитель, не входящий в Аисх. Для любого вектора Vисх над Аисх машина Тьюринга либо работает бесконечно, либо перера­батывает его в совокупность слов, разделенных пробелами в алфа­вите результатов АрезА. В ходе работы ленты могут появиться сим­волы, не входящие в Аисх и А рез и образующие промежуточный ал­фавит Апр (содержащий, в частности разделитель). Таким образом:

А=АисхАпрАрез.

В простейшем случае Аисхрез и А=Аисх.

Пусть f- функция, отображающая множество векторов над Арез. Ма­шина Тьюринга правильно вычисляет функцию f, если:

1. Для любых V и W, таких, что f(V)=W: q1VqzW, где V* и W- правильные записи V и W.

2. Для любого V, такого, что f(V) не определена, ма­шина Тьюринга запущенная в стандартной начальной конфигу­рации q1V*, работает бесконечно.

Если для f имеется машина Тьюринга, которая ее правильно вы­числяет, функция f называется правильно вычислимой по Тьюрингу.

Обратно, каждой правильно вычисляющей машине Тьюринга, можно поставить в соответствие вычисляемую ею функцию. Две машины Тьюринга с одинаковым алфавитом Аисх называются экви­валентными, если они вычисляют одну и ту же функцию.

Пример 2: Если машина Тьюринга содержит команды qi aj qi ajE и qi aj qi ajdk, то заменив эти две команды одной qi aj qi ajdk, получим машину Тьюринга, эквивалентную Т. Путем таких преобразований можно в машине Тьюринга убрать все команды, со­держащие Е и более того, доказывается, что:

Для любой машины Тьюринга существует эквивалентная ей машина, не содержащая Е в командах, следовательно, можно рассматривать ма­шины, головки которых на любом шаге движутся.

Определения, связанные с вычислением функций, заданных на словарных векторах, даны с явным ‘‘запасом общности ‘‘ и имеют ввиду переработку нечисловых объектов.

Для начала рассмотрим числовые функции, отображающие N в N. Договоримся представлять натуральные числа в единичном (унарном) коде, т.е. для всех числовых функций Аисх={1} либо, Аисх={1,*} и число х представляется словом 1,…., 1=1х, состоящим из х единиц. Таким образом, числовая функция f(x1,…,xn) правильно вычислима по Тьюрингу, если есть машина Тьюринга, такая, что q11 х11 х21 хn qn1 y, когда f(x1,…,xn)=y, и Т работает бесконечно, начиная с q11 х11 х21 хn, если f(x1,…,xn) не определена.

Пример 3:

1. Сложение: Во введенном унарном представлении, сложить два числа а и b – значит, слово 1a 1b переработать в слово 1a+b, т.е. уда­лить разделитель  и сдвинуть одно из слагаемых, скажем первое, ко второму. Это преобразование осуществляет машина T+ с четырьмя состояниями и следующей системой команд (первая команда ведена для случая, когда а=0 и исходное слово имеет вид 1b):

q1qzR

q11q2R

q21q21R

q2q31L

q11q31L

q1qzR

В этой системе команд перечислены не все сочетания состоя­ний машины и символов ленты: опущены те, из них, которые при стандартной начальной конфигурации никогда не встречаются. Опускать ненужные команды будем и впредь, в таблицах это отме­чено прочерками. Диаграмму переходов можно изобразить так:

2. Копирование (перезапись слова), т.е. переработка  в . Для чисел эту задачу решает машина Ткоп, система команд которой приведена в таблице.

Таблица 19

1

0

q1

q20R

qzR

q1L

q11L

q2

q21R

q3R

q2R

q3

q31R

q41L

q4

q41L

q4L

q10R

С оответствующая диаграмма переходов: