Логическая структура алгоритма. (ЛСА)
Логическая структура алгоритма определяет последовательность выполнения элементарных программных блоков в зависимости от условий, которые вычисляются внутри самих программных блоков.
ЛСА может быть задана графом либо матрицей переходов соответствующей SM. Существует несколько видов SM: SM общего вида; последовательностная SM; SM в виде БСА.
а) SM общего вида или просто SM=, где U – вычисляемые условия, выполнение условия (наступления события) определяются истинностью/ложью соответствующим предиката, П – множество элементарных программных блоков, S – состояния, абстрактные объекты (объекты не подлежащие программированию), которые служат для организации различных последовательностей вычисления по правилам Р вида , где На рис. 3 а, б показана ЛСА для задачи порождения L = anbn.
б) Последовательностная SM отличается от SM тем, что каждому состоянию соответствует элементарный программный блок.
с правилами вида
Существует двустороннее эквивалентное преобразование , эквивалентное в смысле алгоритма решения одной и той же задачи. На рис.3 в показана ЛСА в виде ПSM решающая задачу порождения L = anbn.
|
|
Можно видеть, что ПSM имеет пять состояний (соответствующая SM имеет три состояния). Эквивалентность обеспечивается эквивалентностью программных блоков.
ЛСА в виде ПSM обладает заметным удобством, которое превращает ПSM в программную строку. Для этой цели рассматриваются строки общего вида , они содержат более чем два перехода, которые совершаются по ключам (см. рис.3 г, д). Также как для строки Ляпунова, существуют эквивалентные SW, которые получаются перестановкой операторов и введением соответствующих безусловных переходов (w).
Рис. 3. Порождение слов :
а) SM общего вида;
б)матрица переходов SM общего вида;
|
е 0 – событие, соответствующее
тождественно истинному условию.
г)
д)
Рис. 3. Порождение слов :
в) последовательная SM (ПSM)
г) SW- строка (с переходами по ключам К 1 и К 2) программы;
д) SW- строка с перестановкой программных блоков ПRR и ПLL.
В начале 70–х годов Дейкстра предложил принцип последовательного уточнения логической структуры алгоритмов. Внутреннее содержание каждого программного блока в БСА уточняется одним из четырёх способов, показанных на рисунке.
begin begin begin begin
begin begin begin begin
|
|
A 1 if R then A 1 while R do A 1 repeat A 1
end else A 2; end until R
begin end end end
A 2 end end end
еnd
end
Рис.4 Структуризация по Дейкстре.