Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка КП ТА.doc
Скачиваний:
16
Добавлен:
11.11.2019
Размер:
435.71 Кб
Скачать

2. 2. Задание автомата в виде логической схемы алгоритма

2. 2. 1. Сведения из теории

Академик А. А. Ляпунов [2] предложил записывать алгоритмы в виде конечной строчки, состоящей из символов операторов, логических условий и верхних и нижних стрелок, которым приписаны натуральные числа ( , , i= 1,2,. . .). Такая запись алгоритма носит название логической схемы алгоритма (ЛСА).

Рассматриваемые ниже ЛСА удовлетворяют следующим условиям:

  1. Содержат один начальный (Yн) и один конечный оператор (Ук).

  2. Перед оператором Ун и после оператора Ук стрелок быть не должно.

  3. Вслед за каждым логическим условием всегда стоит верхняя стрелка.

  4. Не существует двух одинаковых (с одинаковыми цифрами) нижних стрелок. Для каждой нижней стрелки должна быть, по крайней мере, одна верхняя стрелка.

  5. Для каждой верхней стрелки должна быть точно одна нижняя стрелка.

  6. Не существует двух одинаковых (с одинаковыми цифрами) нижних стрелок. Для каждой нижней стрелки должна быть, по крайней мере, одна верхняя стрелка.

  7. Для каждой верхней стрелки должна быть точно одна нижняя стрелка.

Множество операторов и логических условий, как и в случае графических схем алгоритмов, обозначим соответственно через Y= (У1, . . ., УТ) и x = { x1, . . . , x L}. Описание поведения дискретного устройства с помощью ЛСА поясним на следующем примере:

Эта ЛСА имеет операторы начала и конца (Ун и Уk), четыре оператора Y1 - Y4 и два логических условия. Начальному оператору соответствует некоторое начальное состояние дискретного устройства, при котором никакие микрооперации не выполняются. Если в начальном состоянии на вход x1 устройства придет сигнал, равный единице (x1 =1), то устройство перейдет в новое состояние, в котором выполняется оператор Y1 -первый справа после логического условия x1 . Если x1= 0, то выходим по верхней стрелке и ищем нижнюю стрелку с той же цифрой ( ). После нее стоит логическое условие x2 со стрелкой , за ней - операторы Y2, Y3 , а вслед за нижней стрелкой - оператор Y4. B смысле поведения устройства такое описание интерпретируется следующим образом. Если x1= 0 и x2= 1 (/x1* x2 =1), то устройство из начального переходит в некоторое новое состояние с выполнением оператора Y2 ( ), а если x1 = x2 =0 (/x1*/x2 =1 ), то выполняется оператор Y4 ( ). После выполнения оператора Y2 независимо от значений логических условий выполняется стоящий справа от Y2 оператор Y3, затем Y4 и т. д. Очевидно, что приведенная ЛСА описывает работу устройства точно так же, как и ГСА на рис. 1.

При задании ЛСА оказывается удобным использовать логические условия, тождественно равные нулю -всегда ложные логические условия. Их обычно обозначают через w Применение логического условия поясним на примере фрагмента ЛСА:

Так как w = 0, после оператора У2 всегда выполняется оператор Уt, а переход к Уз

возможен только по стрелке .

2. 2. 2. Преобразование лса в гса

При преобразовании ЛСА в ГСА каждому оператору в ЛСА ставится в соответствие операторная вершина и каждому логическому условию (кроме тождественно-ложного w)- условная вершина ГСА.

На первом этапе осуществляется построение отдельных фрагментов ГСА, число которых зависит от количества символов w в ЛСА и равно w +1. Начальный фрагмент ГСА содержит операторные и условные вершины, соответствующие всем операторам и логическим условиям, которые записаны в ЛСА перед первым символом w. При этом все вершины соединены последовательно в том порядке, в каком записаны в ЛСА соответствующие им символы. Выход любой условной вершины Xi , соединенный со следующей вершиной, отмечается символом “1”, второй выход этой вершины отмечается символом "0" и выходящей из него стрелкой с номером, соответствующим номеру верхней стрелки (стрелка направлена вверх), которая расположена в ЛСА непосредственно за логическим условием Хi. Если между парой символов в ЛСА имеется нижняя стрелка (стрелка направлена вниз) с номером i, то на фрагменте ГСА к линии, соединяющей две вершины, которые соответствуют этой паре символов, подводится входящая стрелка с этим же номером. Из последней вершины фрагмента выводится стрелка с номером, соответствующим номеру верхней стрелки, которая стоит непосредственно за символом w.

Каждый последующий фрагмент ГСА содержит операторные и условные вершины, соответствующие всем операторам и логическим условиям в ЛСА, которые записаны между двумя последовательными символами w или за последним символом w для

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

На втором этапе построения ГСА все одноименные входящие и исходящие стрелки фрагментов соединяются, в результате чего получается искомая ГСА.

Пример. Рассмотрим ЛСА следующего вида:

По виду ЛСА определяем наличие пяти фрагментов, которые приведены на рис. 3 (разделены друг от друга штриховыми линиями).

Для повышения наглядности при соединении фрагментов друг с другом и выходов условных вершин (ветка «0») с входами других вершин будем использовать цифры в кружочках. Если отрезки линий отмечены одинаковыми цифрами, они соединяются, после чего цифры удаляются. После выполнения указанных действий образуется ГСА, представленная на рис. 4.