logo search
Курс лекций 230100

3. Операторные системы алгоритмизации.

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

«Алгебраическая теория строится на некоторой конкретной символике, при которой алгоритмы рассматриваются в виде линейных тестов. В «геометрической» теории алгоритмы строятся в виде множеств, между которыми вводятся связи, носящие характер отображений или бинарных отношений. При этом значительное место занимает геометрическая интерпретация объектов в виде графов, вершины которых задают элементы множества, а ребра – отношения между ними. При этой интерпретации отображения задаются в виде разметки вершин или ребер графа.

К перовому направлению относятся – рекурсивные функции, машины Тьюринга, операторные системы Ван-Хао, А.А. Ляпунова, логические схемы алгоритмов Ю.И. Янова и др. Ко второму направлению относятся – представления нормальных алгоритмов А.А. Маркова в виде граф-схем предложенных Л.А. Калужниным, блок схемный метод алгоритмизации и др. В 1936—-1937 гг. независимо друг от друга и почти одновременно с работами А.Черча и С. Клини было дано определение понятия алгоритма американским и английским математиками Э. Постом и А.Тьюрингом. Их подход базируется на определении специальных абстрактных (т. е. существующих не реально, а лишь в воображении) автоматов (машин). Основная мысль при этом заключалась в том, что алгоритмические процессы - это процессы, которые может совершать подходяще устроенная «машина». В соответствии с этим ими с помощью точных математических терминов были описаны классы машин, способные осуществить или имитировать все алгоритмические процессы, когда-либо описываемые математиками.

Машины Тьюринга Машины, введенные Постом и Тьюрингом, отличались не очень существенно и в дальнейшем стали называться машинами Тьюринга. В общем случае такая машина состоит из следующих частей (рис. 8.1)

Состав машины Тьюринга:

  1. информационной ленты, представляющей собой бесконечную (неограниченную) память машины. В качестве информационной ленты может служить магнитная или бумажная бесконечная лента, разделенная на отдельные ячейки. В каждой ячейке можно поместить лишь один символ, в том числе и ноль;

  2. “считывающей головки” — специального чувствительного элемента, способного обозревать содержимое ячеек. Вдоль головки информационная лента перемещается в обе стороны так, что бы в каждый рассматриваемый момент времени головка находилась в одной определенной ячейке ленты;

  3. управляющего устройства, которое в каждый рассматриваемый момент находится в некотором «состоянии». Предполагается, что устройство управления машины может находиться в некотором конечном числе состояний. Состояние устройства управления часто называют внутренним состоянием машины. Одно из этих состояний называется заключительным и управляет окончанием работы машины.

Рис. 8.1. Состав машины Тьюринга.

М

Внутренний алфавит

ашина Тьюринга называется стандартной, если она при сдвиге ленты может предварительно изменять состояние воспринимаемой ячейки. Пусть алфавит машины Тьюринга задан в виде множества А = {S, S…,S} где S соответствует пустой ячейке, а число состояний устройства управления задано в виде множества Q={q,q..,q} где qо соответствует заключительному состоянию.

Конечную совокупность символов алфавита, с которой работает машина, называют внешним алфавитом, конечную совокупность состояний устройства управления —внутренним алфавитом Совокупность, образованную последовательностью состояний всех ячеек ленты и состоянием устройства управления, называют конфигурацией машины. Конфигурация задается в виде слова, описывающего конкретное состояние машины. Пусть в некоторый момент времени машина Тьюринга находится в состоянии, представленном на рис. (8.2)

q

Внешний алфавит

S S S S S S S

Рис.8.2.Создание машины Тьюринга

Конфигурация машины для данного случая будет представлена в виде слова:

…SS…qS…SS…

Где Sо — символ, обозначающий пустую ячейку; rчисло заполненных ячеек на ленте; S-состояние первой слева непустой ячейки; Sjk-состояние ячейки, просматриваемой в данный момент времени; q— состояние устройства управления. Каждая конфигурация содержит лишь одно вхождение символа q из внутреннего алфавита. Этот символ может быть в слове самым левым, но не может быть самым правым, так как справа от него должен помещаться символ состояния обозреваемой ячейки. Если стандартная машина Тьюринга, находясь в состоянии q и воспринимая записанный на ленте символ Sk переходит в новое состояние q осуществляя при этом замену символа в рассматриваемой ячейке на символ Sm и сдвиг ленты влево на одну ячейку, то говорят, что машина выполняет команду qSkqSm

При манипуляциях с лентами используют следующие обозначения: движение ленты влево; Пдвижение ленты вправо; С— нет движения ленты.

Команды стандартной машины Тьюринга могут задаваться набором пятерок символов вида qSkqSmт.е. стрелка опускается. Рассмотрим пример машины Тьюринга с алфавитами А— {О, 1}, Q={qq} и командами q1q1,q0q1C. Совокупность всех команд, которые может выполнять машина, называется ее программой. Машина Тьюринга считается заданной, если заданы: 1) ее внешний и внутренний алфавиты; 2) программа; 3) начальная конфигурация; 4) символы обозначающие пустую ячейку и заключительное состояние.

При изучении моделей вычислений обычно проводят различие между детерминированными и недетерминированными машинами Тьюринга. В детерминированной машине Тьюринга общий ход вычислений полностью определяется машиной Тьюринга (программой), начальным символом и начальными вводами с ленты. В недетерминированной машине Тьюринга на каждой стадии вычислений существуют альтернативы, т. е. она может работать в одном из нескольких основных режимов. Современные электронные вычислительные машины строятся как универсальные: в запоминающее устройство наряду с исходными данными поставленной задачи вводится также и программа ее решения. Однако в отличие от машины Тьюринга, в которой внешняя память (лента) бесконечна, в любой реальной вычислительной машине она конечна.

Нормальные алгоритмы Маркова

Алгоритмическая система, основанная на соответствии между словами в абстрактном алфавите, включает в себя объекты двух типов: элементарные операторы и элементарные распознаватели.

Элементарные операторы представляют собой алфавитные операторы, предназначенные для реализации алгоритмов в рассматриваемой алгоритмической системе.

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

Граф-схема алгоритма представляет собой конечное множество соединенных между собой вершин (или геометрических фигур), называемых узлами граф-схемы. Каждому узлу, кроме особых узлов, называемых входом и выходом, сопоставляется какой-либо элементарный оператор (ЭО) или элементарный распознаватель (ЭР). При этом из каждого узла, которому сопоставлен оператор, а также из входного узла исходит по одной дуге, а из каждого узла, которому сопоставлен распознаватель, исходит по две дуги. Из выходного узла не исходит ни одной дуги. Число дуг, входящих в узел граф-схемы, может быть любым.

Общий вид такой граф-схемы представлен на рис. 8.4. Алгоритм, определенный граф-схемой, работает следующим образом. Входное слово поступает на вход и двигается по направлениям, указанным стрелками. При попадании слова в распознавательный узел осуществляется проверка условия, сопоставленного этому узлу. При выполнении условия слово направляется в операторный узел, при невыполнении — к следующему распознавателю. Если входное слово q, поданное на вход граф-схемы, проходя через узлы схемы и преобразуясь, попадает через конечное число шагов на выход, то считается, что алгоритм применим к слову q (слово q входит в область определения этого алгоритма). Результатом воздействия на слово q будет то слово, которое оказывается на выходе схемы. Если после подачи слова q на вход графа его преобразование и движение по граф-схеме продолжается бесконечно долго, не приводя на выход, считается, что алгоритм неприменим к слову q, т.е. слово q не входит в область определения алгоритма.

ЭО

ЭР

ЭО

ЭР

ЭО

ЭР

Рис.8.4. Общий вид граф-схемы алгоритма.

В нормальных алгоритмах в качестве элементарного оператора используют оператор подстановки, а в качестве элементарного распознавателя распознаватель вхождения. Распознаватель вхождения проверяет условие — имеет ли место вхождение, рассматриваемого слова Рi в качестве подслова некоторого заданного слова q.

Оператор подстановки заменяет первое слева вхождение слова p в слово q на некоторое заданное слово р. Оператор подстановки задается обычно в виде двух слов, соединенных стрелкой р—>p

Например, для слова 01230123 применение подстановок 01 —>З2 и 23—>10 через четыре шага приводит к слову 32103210 (рис.9.5):

0]230123—>32230123—->32233223->321 03223—>321 03210.

Последовательность слов p,p,….,p получаемых в процессе реализации алгоритма, называется дедуктивной цепочкой, ведущей от слова р к слову p Алгоритмы, которые задаются графами, составленными только из распознавателей вхождения слов и операторов подстановки, называют обобщенными нормальными алгоритмами.

При этом предполагается, что к каждому оператору подстановки ведет только одна дуга, исходящая из соответствующего распознавателя.

Рис.8.5. Граф-схема алгоритма преобразования входного слова «01230123» в слово «32103210»

Нормальными алгоритмами называют обобщенные нормальные алгоритмы, граф-схемы которых удовлетворяют следующим условиям: 1. Все узлы, соответствующие распознавателям, упорядочиваются путем их нумерации от 1 до n 2. Дуги, исходящие из узлов, соответствующих операторам подстановки, подсоединяются либо к узлу, соответствующему первому распознавателю, либо к выходному узлу. В первом случае подстановка называется обычной, во втором — заключительной. З. Входной узел подсоединяется дугой к первому распознавателю.

ЭР1

ЭO1

ЭО

ЭР2

ЭO2

ЭР3

ЭO3

ЭР4

ЭO4

Выход

Рис.8.6. Общий вид граф-схемы нормалного алгоритма.

Нормальные алгоритмы принято задавать упорядоченным множеством подстановок всех операторов данного алгоритма, называемым схемой алгоритма. При этом обычные подстановки записываются, как и в обобщенных алгоритмах, в виде двух слов, соединенных стрелкой (p—>p2), а заключительные подстановки обозначаются стрелкой с точкой (р—> • р). Процесс выполнения подстановок заканчивается лишь тогда, когда ни одна из подстановок схемы не применима к полученному слову или когда выполнена (первый раз) какая-либо заключительная подстановка. В качестве примера рассмотрим работу нормального алгоритма А.А. Маркова, алфавит которого представлен алфавитом русского языка и задано множество подстановок:

1. БВ 4. ОХ

2. ЛУ 5. ВЯ

3. СМ 6. НА

Тогда, если на вход подать слово «СЛОН», то оно переработается алгоритмом в выходное слово «МУХА» (рис. 9.6): «СЛОН» СУОН МУОН МУХН«МУХА».

Рис.8.7. Граф-схема алгоритма преобразования входного слова «СЛОН» в слово «МУХА».

Операторные системы алгоритмизации.

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

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

записаны. Поэтому одним из требований, которое предъявляется к определению алгоритма при его практическом использовании, является то, чтобы форма представления перерабатываемой информации и средства ее переработки выбирались в зависимости от класса рассматриваемых алгоритмов. Кроме того, для классических алгоритмических систем характерно, что в каждом алгоритме список предписаний о выполнении элементарных актов «команд» алгоритма фиксируется заранее и явно указывается в записи алгоритма. Например, в нормальных алгоритмах все применяемые формулы подстановки заранее указаны в записи алгоритма. Список допустимых действий машины Тьюринга при ее работе остается неизменным. Частично рекурсивная функция задается фиксированной последовательностью уравнений. В то же время допущение формирования команд алгоритма в процессе его реализации приводит к существенному сокращению и упрощению записи алгоритма. В связи с этим следующим требованием, предъявляемым к понятию алгоритма, при его практическом использовании является возможность формирования команд алгоритма в процессе его выполнения. В общем случае все элементарные операции, производимые в процессе выполнения алгоритмов, распадаются на две группы операций, которые обычно называют арифметическими и логическими. Арифметические операции осуществляют непосредственное преобразование информации. Логические операции определяют дальнейшее направление счета, т. е. последовательность выполнения арифметических операций. При этом во многих сложных алгоритмах преобладают логические операции, в то время как преобразование информации носит иногда очень простой характер Элементарные акты, аналогичные логическим операциям, в явном или неявном виде вводятся и при определении понятия выполнения алгоритма в абстрактной теории алгоритмов. Например, при выполнении нормального алгоритма после рассмотрения очередной формулы подстановки осуществляется либо переход к следующей формуле подстановки, либо остановка, либо переход к первой формуле подстановки схемы алгоритма. В машине Тьюринга логической операцией можно считать движение ленты вправо или влево в зависимости от состояния машины и прочитанного символа. Однако, как правило, логические операции в классических алгоритмических системах носят тривиальный характер. Во многих случаях такая тривиальность логических операций сильно усложняет построение конкретных алгоритмов.

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

Операторные алгоритмы Ван Хао Операторный алгоритм Ван Хао задается последовательностью приказов специального вида. Каждый приказ имеет определенный номер и содержит указания: какую операцию следует выполнить над заданным объектом и, приказ с каким номером следует далее выполнить над результатом данной операции. Общий вид такого приказа: (1)

Где: i — номер приказа; —элементарная операция над объектом;

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

Заключительному состоянию машины Тьюринга в операторных алгоритмах соответствует приказ вида:

который означает, что вычисления следует остановить. Число, над которым следует выполнить этот приказ, есть результат вычислений.

Программой операторного алгоритма называется последовательность приказов вида:

где — заданные функции, определяющие элементарные операции над объектом x. -натуральные числа из последовательности .

Переработать х согласно данному операторному алгоритму — значит выполнить над х последовательность следующих действий:

1) i-шаг. Находим . Если определено, то результатом будет пара чисел . Если не определено, то результатом i-го шага будет пара .

2) i+1-шаг, если результат предыдущего шага , где . Находим . Если она определена, то результатом будет пара , если не определена, то результатом будет пара , и.т.д.

3) i+n-1-шаг. Если в качестве результата на данном шаге получится пара, указывающая на заключительный оператор (z,i+ п),то процесс завершается и число z является результатом переработки числа х согласно заданному алгоритму Тип функции, вычисляемых посредством операторных алгоритмов Ван Хао, зависит от того, какие функции входят в записи приказов.

Операторные алгоритмы Ляпунова

Алгоритмическая система отечественного ученого А.А. Ляпунова, предложенная им в 1953 г., является одной из первых, учитывающих все требования, предъявляемые к конкретным алгоритмам. Она возникла в связи с реализацией алгоритмов различных задач на ЭВМ.

Важнейшим понятием, введенным А.А. Ляпуновым, было понятие оператора, являющегося одновременно и единицей действия, и единицей конструирования программы. Как единица действия оператор выполняет некоторое преобразование над информацией, а как единица конструирования программы — имеет некоторое обозначение, показывающее тип оператора, его место в программе и конкретное содержание оператора (спецификацию).

Важным свойством оператора было то, что трактовка оператора как единицы действия носит относительный характер. Два оператора А и В, выполненные друг за другом, осуществляют какое-то совокупное преобразование информации, т.е. также образуют некоторый оператор С. Для того чтобы операторы А и В выполнялись подряд, их записывают один за другим: АВ, а связь с оператором С выглядит как: С АВ. Информация, например, о том, что А и В можно выполнять в любом порядке, получая один и тот же результат, может быть выражена равенством А В = В А.

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

Аналогия двух рядом стоящих операторов АВ с произведением двух чисел делала понятными такие обозначения, введенные А.А. Ляпуновым, как:

Эта запись обозначает кратное повторение операторов АВС, причем символы А(i),и С(i) показывают, что спецификация этих операторов зависит от значения индекса повторения Для записи передач управления зависимости от условий А.А. Ляпунов ввел понятие логических операторов:

Где P-символ логического оператора;

передающая и приемная стрелки соответственно. Обозначение i используется, чтобы выделять пары соответствующих друг другу приемных и передающих стрелок. При одном значении Р управление передается на оператор, стоящий вслед за передающей стрелкой i, а при другом — на оператор, стоящий вслед за принимающей стрелкой i.

Запись алгоритма по А.А. Ляпунову состоит из двух частей. Первая часть - схема алгоритма - образована символами операторов и показывает порядок расположения операторов в программе, а также направления передач управления. Вторая часть - это спецификация всех операторов, образующих программу.

Рассмотрим пример записи операторного алгоритма Ляпунова для решения 10 квадратных уравнений вида . Для каждого уравнения представив общую формулу решения:

в виде ,

и

в зависимости от знака дискриминанта 4ас найдем для действительного случая (призн = 1). хор =р +q и кор2 =р-q, для комплексного (призн = -1), кор1= и кор2=

Схема алгоритма: СТОП.

Спецификация: A- ввод всех коэффициентов ;

А- присвоение переменным и с значений коэффициентов ; А- вычисление дискриминанта: ; А- вычисление вспомогательных значений: ; А- проверка условия: дискр < О?; А- вычисление модуля и аргумента комплексной пары корней: ;

A-вычисление пары действительных корней ;

A- сохранение знака дискриминанта;

A- запоминание в массиве решений пары корней i-ого уравнения;

А- печать всех решений.

На основе данного операторного метода в период 1955- 1960 гг. были созданы первые алгоритмические языки и трансляторы, а так же разработаны первые формализмы теоретического программирования.