Преобразования ГСА → ЛСА, ЛСА → ГСА, ЛСА → МСА и ГСА → МСА интуитивно понятны и не требуют комментариев. Преобразование МСА → ГСА осуществляется через ЛСА. Рассмотрим преобразование МСА → ЛСА, которое широко применяется при объединении алгоритмов.
1) По строкам МСА записываем систему формул перехода S1:
Логическая функция αij является «приведенной» по переменной, если она представлена в виде
2) Приводим систему формул перехода по всем переменным ps, т. е. выносим за скобки ps и их отрицание, получая скобочную систему формул перехода S2.
3) Переходим к схемной системе формул перехода S3 за 3 операции:
Схемные формулы перехода состоят из «блоков», разделенных «*», с помощью которых будет построена ЛСА.
4) Проводим эквивалентные преобразования системы схемных формул перехода с целью устранения повторяющихся операторов Аj и минимизации количества логических переменных ps, получая системы схемных формул перехода S3’, S3’’ и т. д.
При этом используем следующие правила тождественных преобразований схемных формул перехода:
|
|
5) Строим ЛСА по минимизированной системе схемных формул перехода.
Вначале в строке выбирается оператор А0. К нему справа приписывается начальное выражение из его схемной формулы.
Пример. Составить граф-схему алгоритма, выводящего номер третьего элемента массива, большего 5, или 0, если его нет. Провести эквивалентное преобразование ГСА в ЛСА, затем ЛСА в МСА и МСА в ЛСА. Массив состоит из 10 целых чисел. Начальный оператор А0 – ввод массива и инициализация переменных, конечный оператор Ак – вывод результата на экран.
ГСА
ЛСА U = A0¯3p11p22ω4¯2А1¯1A2 p33A3¯4Aк МСА
| А0: Ввод массива, i=1, c=0 А1: c++ А2: i++ А3: i=0 Ак: Вывод i p1: M[i]>5? p2: с>2? p3: i>10? |
Система формул перехода S1
A0 → p1!p2A1 V!p1A2 V p1p2Aк
A1 → A2
A2 →!p3p1!p2A1 V!p3!p1A2 V p3A3 V!p3p1p2Aк
A3 → Aк
Скобочная система формул перехода S2
A0 → p1(p2Aк V!p2A1) V!p1A2
A1 → A2
A2 → p3 A3 V!p3(p1(p2Aк V!p2A1) V!p1A2)
A3 → Aк
Схемная система формул перехода S3
A0 → p11p22Aк * ¯2A1 * ¯1A2
A1 → A2
A2 → p33A3 * ¯3p11p22Aк * ¯2A1 * ¯1A2
A3 → Aк
Преобразованная схемная система формул перехода S3’
A0 → ¯3p11p22Aк * ¯2A1
A1 → ¯1A2
A2 → p33A3
A3 → Aк
Минимизированная схемная система формул перехода S3’’
A0 → ¯3p11p22 ω4 * ¯2A1
A1 → ¯1A2
A2 → p33A3
A3 → ¯4Aк
ЛСА, построенная по минимизированной схемной системе формул перехода
U = A0¯3p11p22ω4¯2А1¯1A2 p33A3¯4Aк
Построенная ЛСА совпадает с исходной. Преобразование выполнено верно.
|
|
Задача. Составить граф-схему алгоритма, выводящего номер предпоследнего элемента массива, большего 5, или 0, если его нет. Провести эквивалентное преобразование ГСА в ЛСА, затем ЛСА в МСА и МСА в ЛСА. Массив состоит из 10 целых чисел. Начальный оператор А0 – ввод массива и инициализация переменных, конечный оператор Ак – вывод результата на экран.