
- •Млта: Математическая логика и теория алгоритмов
- •Комплект трех вариантов структурной формулы
- •Базисные структуры параллельных алгоритмов
- •1.2 Исходные структурные формулы параллельных алгоритмов
- •Стандартная форма формулы алгоритма
- •Контроль результатов
- •1. 2 Автоматизация построений основной схемы алгоритма Исходные условия
- •Вариант 1 структурной схемы. Автоматизация построений
- •Анализ структурной схемы Общие данные структуры алгоритма
- •Проверочная нумерация оболочек формул и схем
- •Вложенность формульных оболочек
- •Явная операция разделения (вилки) потоков
- •Работа с тренажером схемных построений
- •Мозаичный набор схем
- •Временные диаграммы параллельных алгоритмов
- •Графический расчет длительности алгоритма
- •Расчет длительности алгоритма
- •Вербальные тексты параллельных алгоритмов базисных структур
- •ИнФ: Инфиксная форма вербального текста
- •Ги: Горизонтальное исполнение
- •Ви: Вертикальное исполнение
- •Автоматизация построений
- •НИнФ: Неявная инфиксная форма вербального текста
- •Исходные условия
- •Ги: Горизонтальное исполнение
- •КоФ: Комбинированная форма вербального текста: ИнПрПоФ
- •Ги: Горизонтальное исполнение
- •Alg a092: begin z1; cobegin begin z3; z1 end, begin cobegin z5, begin z2; cobegin z4, z0 coend end coend ; cobegin z6, begin z5; z2 end coend end coend_or end
- •Ви: Вертикальное исполнение
- •Автоматизация построений: Алгол (Паскаль)-подобный текст
- •ПрФ: Префиксная форма
- •Исходные условия
- •Ги: Горизонтальное исполнение
- •Автоматизация построений
Вариант 1 структурной схемы. Автоматизация построений
СФА: Структурная формула алгоритма / У: Поток управления
// Замена обозначений: "" на "–"
A091 = (Z1 ((Z3 Z1) & ( ( Z5 & (Z2 ( Z4 & Z0 ))) ( Z6 & (Z5 Z2)))))
A091 = (Z1 - ((Z3 - Z1) & ( ( Z5 & (Z2 - ( Z4 & Z0 ))) - ( Z6 & (Z5 - Z2)))))
Набор формулы:
Настройки программы: ИнФ / ГИ / БСА / БФ
БСА: Блок-схема алгоритма / ГИ: Горизонтальное исполнение
Настройки: ИнФ / ГИ / ШСА / БФ
ШСА: Штрих-схема алгоритма / ГИ: Горизонтальное исполнение
Вариант 2 структурной схемы. Автоматизация построений
СФА: Структурная формула алгоритма / У: Поток управления
A092 = (Z1 ((Z3 Z1) V ( ( Z5 & (Z2 ( Z4 & Z0 ))) ( Z6 & (Z5 Z2)))))
A092 = (Z1 - ((Z3 - Z1) V ( ( Z5 & (Z2 - ( Z4 & Z0 ))) - ( Z6 & (Z5 - Z2)))))
Набор формулы
Настройки: ИнФ / ГИ / БСА / БФ
БСА: Блок-схема алгоритма / ГИ: Горизонтальное исполнение
Настройки: ИнФ / ГИ / ШСА / БФ
ШСА: Штрих-схема алгоритма / ГИ: Горизонтальное исполнение
Анализ структурной схемы Общие данные структуры алгоритма
а) Структурный класс алгоритма:
двухполюсный постоянный ациклический алгоритм;
постоянная структура – это алгоритмическая структура с отсутствие переключательных элементов типа "если ... то", циклов с предусловием и т.п.
б) Общие структурные показатели
Показатели |
Значения |
Примечания |
Общее число команд |
10 |
|
Число разных команд |
8 |
Нет повторных вхождений команд |
Общее число элементов |
18 |
Включая узлы вилки и сборки |
Число пар операций распараллеливания |
4 |
#&, #V |
Степень параллелизма |
4 |
Три параллельные ветви алгоритма |
Наличие дизъюнктивных сборок |
вариант 1 – нет вариант 2 – есть |
Нет особенностей Есть 1 особый узел |
Проверочная нумерация оболочек формул и схем
Вложенность формульных оболочек
Для контроля правильности построений используются различные способы нумерации формульных оболочек – пар скобок " (i… )i" = " (i … )i"
СФА 0.2: Структурная формула алгоритма – нумерация оболочек:
а) Внешняя (пристроенная) нумерация оболочек формулы
Первая строка нумерации – уровень вложенности блоков
A092 = (Z1 - ((Z3 - Z1) V ( ( Z5 & (Z2 - ( Z4 & Z0 ))) - ( Z6 & (Z5 - Z2)) ) ) )
1 23 3 45 6 7 765 8 9 98421
Вторая строка нумерации – разные блоки одного уровня
A092 = (Z1 - ((Z3 - Z1) V ( ( Z5 & (Z2 - ( Z4 & Z0) ) ) - (Z6 & (Z5 - Z2)) ) ) )
1 23 3 34 5 6 654 4 5 54321
1 1 23 5 53 4 6 642
б) Внутренняя (встроенная) нумерация оболочек формулы
A092 = (1Z1-(2(3Z3-Z13)V(4(5Z5&(6Z2-(7Z4&Z07)6)5)-(8Z6&(9Z5-Z29)8)4)2)1)
= (1Z1 - (2(3Z3 - Z13) V (4 (5 Z5 & (6Z2 - (7 Z4 & Z07)6)5) - (8Z6 & (9Z5 - Z29)8) 4) 2) 1)
Вложенность схемных оболочек
Соответственно нумерации формульных оболочек выполняется нумерация
схемных оболочек. Целесообразна двухсторонняя нумерация схемных блоков.
ССА 0.1: Структурная схема алгоритма
Явная операция разделения (вилки) потоков
В сопоставлении СФА со ССА выявляется неявная операция разделения (вилки) потоков – распараллеливания алгоритмических цепей:
СФА 0.3: Структурная формула алгоритма / У: Поток управления
ИнФ: Инфиксная форма записи формулы
ПИнФ: Полная инфиксная форма // пошаговое построение
Неявная операция разделения (подразумевается)
A092 = (Z1 ((Z3 Z1) V (( Z5 & (Z2 (Z4 & Z0 ))) (Z6 & (Z5 Z2)))))=
Явная простановка операции разделения (вилки)
= (Z1((Z3Z1)#V((Z5#& (Z2(Z4#&Z0)))(Z6#& (Z5 Z2)))))= = (Z1((Z3Z1) #V((Z5 #& (Z2(Z4 #&Z0)))(Z6 #& (Z5Z2))))) Основная стандартная форма записи СФА:
Строчная индексация:
A092 = (Z1((Z3Z1)#V((Z5#& (Z2(Z4#&Z0)))(Z6#& (Z5 Z2))))) Подстрочная индексация (нижние индексы) и упрощения записи:
A092 = (Z1 - ((Z3 - Z1) #V ((Z5 #& (Z2 - (Z4 #& Z0))) - (Z6 #& (Z5 - Z2))))) =
= Z1 - ((Z3 - Z1) #V ((Z5 #& (Z2 - ( Z4 #& Z0 ))) - (Z6 #& (Z5 - Z2)))) =
= Z1 - (Z3 - Z1 #V ((Z5 #& (Z2 - ( Z4 #& Z0 ))) - (Z6 #& (Z5 - Z2)))) =
= Z1 - (Z3 - Z1 #V ((Z5 #& (Z2 - ( Z4 #& Z0 ))) - (Z6 #& Z5 - Z2))) =
= Z1 - (Z3 - Z1 #V ((Z5 #& Z2 - ( Z4 #& Z0 )) - (Z6 #& Z5 - Z2)))
Разделение парных операций
// Выполняется только Вариант 2
Выше все три операции представлены в инфиксной форме.
Вводится комбинированные способы записи разных операций.
СФА 0.4: Структурная формула алгоритма / У: Поток управления
КоФ: Комбинированная форма записи формулы
ИнПрПоФ: Инфиксно-префиксно-постфиксная форма
// Пошаговое построение
Исходная формула:
A092 = (Z1 - ((Z3 - Z1) #V ((Z5 #& (Z2 - (Z4 #& Z0))) - (Z6 #& (Z5 - Z2))))) =
Разносится более глубоко вложенная пара операций #&:
= (Z1((Z3 -Z1) #V(#(Z5,(Z2#(Z4,Z0)&)&)#(Z6,(Z5Z2))&))) =
Разносится менее глубоко вложенная пара операций #V:
= (Z1#((Z3Z1),(#(Z5,(Z2#(Z4,Z0)&)&)#(Z6,(Z5Z2))&)V))
// Суперпозиция () сохраняется в инфиксе.
// Разделение (# – вилка) потоков выносится в префикс (влево).
// Соединение (сборка) по конъюнкции (&) и дизъюнкции (V)
// выносятся в постфикс (вправо).
Конечные результаты:
Строчная индексация:
A092 = (Z1 #((Z3 Z1),(#(Z5,(Z2 #(Z4,Z0)&)&) #(Z6,(Z5 Z2))&)V))
Подстрочная индексация (нижние индексы) и упрощения записи:
A092 = (Z1 - #((Z3 - Z1),(#(Z5,(Z2 - #(Z4,Z0)&)&) - #(Z6,(Z5 - Z2))&)V))
A092 = Z1#((Z3Z1),(#(Z5,(Z2#(Z4,Z0)&)&)#(Z6,(Z5Z2))&)V)
A092 = Z1#(Z3Z1,(#(Z5,(Z2#(Z4,Z0)&)&)#(Z6,(Z5Z2))&)V)
A092 = Z1#(Z3Z1,(#(Z5,(Z2#(Z4,Z0)&)&)#(Z6,Z5Z2)&)V)
A092 = Z1#(Z3Z1,(#(Z5,Z2#(Z4,Z0)&)&#(Z6,Z5Z2)&)V)