Объединение 3-х и более алгоритмов
Задача. Автомат должен выполнять три алгоритма U1, U2 и U3 в зависимости от значений набора логических условий r1, r2.
Получить минимизированный объединенный алгоритм Uоб , в котором отсутствуют повторяющиеся операторы.
Алгоритм решения.
1. Составить граф-схему и логическую схему каждого алгоритма.
2. Оценить эффективность минимизации объединенного алгоритма по количеству общих (одинаковых) операторов и логических переменных исходных алгоритмов. Если это количество меньше 2, то минимизация неэффективна, Uоб = r11r22U1w3 ¯1U2w3¯2U3¯3, иначе перейти к п. 3.
3. Составить матричную схему каждого алгоритма.
4. Построить объединенную МСА, каждый элемент которой
где |
Определяющие функции вычисляются по формуле:
Здесь Ri - определяющие конъюнкции для всех объединяемых МСА.
Оператор Аi входит только в ЛСА Ui , поэтому есть выбор R/0, который позволяет минимизировать систему формул перехода и объединенную ЛСА.
Практика объединения алгоритмов показывает, что МСА с наибольшим числом совпадающих элементов желательно приписывать определяющие конъюнкции с соседним кодированием.
Совпадающие элементы:
- элементы, состоящие из одинаковых логических функций;
- элементы строки оператора Аi, если он отсутствует в другой МСА.
4.1. Построить неориентированный граф, вершины которого помечены обозначениями алгоритмов, а ребра - числом совпадающих элементов.
4.2. Закодировать определяющие конъюнкции алгоритмов набором логических переменных r1r2, используя соседнее кодирование для пар МСА с наибольшим числом совпадающих элементов.
4.3. Построить набор определяющих функций для каждого оператора каждого алгоритма.
4.4. Построить объединенную МСА.
5. Составить систему формул перехода, провести ее минимизацию и упрощение.
6. По системе схемных формул перехода составить объединенную ЛСА.
7. Проверить выполнение каждого алгоритма в объединенной ЛСА, подставляя соответствующие значения r1, r2. Если алгоритм имеет большое количество элементарных выражений и безусловных переходов, то проверку рекомендуется проводить по объединенной ГСА.
Пример. U1 – вывести максимум массива из 10 элементов.
U2 – вывести минимум массива из 10 элементов.
U3 – вывести номер первого элемента массива, равного 4.
1)
U1 =A0A11¯2p1111A21¯11A3p22A41Aк
U2 =A0A12¯2p1212A22¯12A3p22A42Aк
U3 =A0A13¯2p1313A23ω3¯13A3p22¯3Aк
2) Общие операторы и логические переменные – A0 , A3 , p2 , Aк . Минимизация должна быть эффективна.
3)
U1
| U2
| U3
|
4) Определяющие конъюнкции и функции
4.1) Граф с числами совпадающих элементов
U1-U2: строки А11+А21+А12+А22+А41+А42 = 2+1+2+1+1+1 = 8 .
U1-U3: строки А11+А21+А41+А13+А23 = 2+1+1+2+1 = 7 .
U2-U3: строки А12+А22+А42+А13+А23 = 2+1+1+2+1 = 7 .
Для большей минимизации введена пустая МСА Uø , число совпадающих с ней элементов равно числу элементов всей матрицы.
4.2) Определяющие конъюнкции
Наибольшее число совпадающих элементов у пар матриц U1-U2 , U1-Uø , U2-Uø .
Закодируем определяющие конъюнкции для U1 , U2 , Uø соседними кодами:
R1 = r1r2 , R2 = r1!r2 , Rø = !r1r2 , R3 = !r1!r2 .
4.3) Определяющие функции
Определяющие функции операторов А0 и А3 первого алгоритма (присутствуют во всех алгоритмах кроме пустого):
.
Определяющие функции остальных операторов первого алгоритма (присутствуют только в нем):
.
Аналогично для остальных алгоритмов:
;
;
.
4.4) Объединенная недоопределенная МСА
A11 | A12 | A13 | A21 | A22 | A23 | A3 | A41 | A42 | Aк | |
A0 | (r1/1)r2 | r1!r2 | !r1(!r2/1) | |||||||
A11 | p11 | !p11 | ||||||||
A12 | p12 | !p12 | ||||||||
A13 | p13 | !p13 | ||||||||
A21 | ||||||||||
A22 | ||||||||||
A23 | ||||||||||
A3 | !p2p11 (r1/1)r2 | !p2p12r1!r2 | !p2p13 !r1(!r2/1) | !p2!p11(r1/1)r2v !p2!p12r1!r2 v !p2!p13!r1(!r2/1) | p2(r1/1)r2 | p2r1!r2 | p2!r1 (!r2/1) | |||
A41 | ||||||||||
A42 |
Доопределяем МСА, сокращая число и сохраняя полноту логических условий.
A11 | A12 | A13 | A21 | A22 | A23 | A3 | A41 | A42 | Aк | |
A0 | r1r2 | r1!r2 | !r1 | |||||||
A11 | p11 | !p11 | ||||||||
A12 | p12 | !p12 | ||||||||
A13 | p13 | !p13 | ||||||||
A21 | ||||||||||
A22 | ||||||||||
A23 | ||||||||||
A3 | !p2p11 r1r2 | !p2p12r1!r2 | !p2p13 !r1!r2 | !p2!p11r1r2v !p2!p12r1!r2 v !p2!p13!r1 | p2r1r2 | p2r1!r2 | p2!r1 | |||
A41 | ||||||||||
A42 |
return false">ссылка скрыта
5) Скобочная система формул перехода S2
A0 → r1r2A11 V r1!r2A12 V !r1A13 → r1(r2A11 V !r2A12) V !r1A13
A11 → p11A21 V !p11A3
A12 → p12A22 V !p12A3
A13 → p13A23 V !p13A3
A21 → A3
A22 → A3
A23 → Aк
A3 → !p2r1r2(p11A21 V !p11A3) V !p2r1!r2(p12A22 V !p12A3) V !p2!r1(p13A23 V !p13A3) V p2(r1(r2A41 V !r2A42) V !r1Aк) → p2(r1(r2A41 V !r2A42) V !r1Aк) V !p2(r1(r2(p11A21 V !p11A3) V !r2(p12A22 V !p12A3)) V !r1(p13A23 V !p13A3))
A41 → Aк
A42 → Aк
Схемная система формул перехода S3
A0 → r11r22A11 * ¯2A12 * ¯1A13
A11 → p1111A21 * ¯11A3
A12 → p1212A22 * ¯12A3
A13 → p1313A23 * ¯13A3
A21 → A3
A22 → A3
A23 → Aк
A3 → p23 r14 r25A41 * ¯5A42 * ¯4Aк * ¯3 r16 r27 p1111A21 * ¯11A3 * ¯7 p1212A22 * ¯12A3 * ¯6 p1313A23 * ¯13A3
A41 → Aк
A42 → Aк
Преобразованная схемная система формул перехода S3'
A0 → r11 r22 A11 * ¯2A12 * ¯1A13
A11 → ¯3 r16 r27 p118A21
A12 → ¯7 p128A22
A13 → ¯6 p138A23
A21 → ω8
A22 → ¯8A3
A23 → ω9
A3 → p23 r19 r25A41 * ¯5A42
A41 → ω9
A42 → ¯9Aк
6) Объединенная ЛСА
Uоб = A0 r11 r22A11¯3 r16 r27 p118A21ω8¯2A12¯7 p128A22¯8A3ω10¯1A13¯6 p13 8A23ω9 ¯10 p23 r19 r25A41ω9¯5A42¯9Aк
7) Проверка:
r1=1, r2=1 U1 = A0A11¯3p118A21¯8A3p23A41Aк
r1=1, r2=0 U2 = A0A12¯3p128A22¯8A