Автор работы: Пользователь скрыл имя, 15 Марта 2013 в 11:32, шпаргалка
Программы и схемы программ. Стандартные схемы программ, базис класса ССП
Графовая форма представления ССП
Линейная форма представления ССП
Описать процесс - значит определить последовательность состояний заданной информационной среды. Если мы хотим, чтобы по заданному описанию требуемый процесс порождался автоматически на компьютере, необходимо, чтобы это описание было формализованным. Такое описание называется программой.
Программы и схемы программ
Схемы программ - это математические модели программ, описывающие строение программы, или точнее строение множества программ, где конкретные операции и функции заменены абстрактными функциональными и предикатными символами. Следующий пример программ вычисления факториала n! и переворачивания слов поясняет различие между программами и их схемой S1.
begin integer x, y; begin integer x, y; begin
ввод(x); ввод(x); ввод(
y:=1; y:=ε; y:=a;
L: if x=0 then goto L1; L: if x=0 then goto L1; L: if p(x) then goto L1;
y:=x*y; y:=CONSCAR(x, y); y:=g(x, y);
x:=x-1; x:=CDR(x); x:=
goto L; goto L; goto L;
L1: вывод(y); L1: вывод(y);
end end end
Функция CONSCAR (суперпозиция функций CONS и CAR из языка Лисп) приписывает первую букву первого слова ко второму слову (т. е. CONSCAR(аб, в) = ав), а функция CAR стирает первую букву слова (т. е. CAR(аб) = б).
1.2. Стандартные схемы программ
1.2.1. Базис класса стандартных схем программ
Стандартные схемы программ (ССП) характеризуются базисом и структурой схемы.
Базис класса фиксирует символы, из которых строятся схемы, указывает их роль (переменные, функциональные символы и др.), задает вид выражений и операторов схем.
Полный базис В класса стандартных схем состоит из 4-х непересекающихся, счетных множеств символов и множества операторов - слов, построенных из этих символов.
Множества символов полного базиса:
Термами (функциональными выражениями) называются слова, построенные из переменных, функциональных и специальных символов по следующим правилам:
Примеры термов: х, f(0), а, f(1)(х), g(2)(x, h(3)(y, a)).
Тестами (логическими выражениями) называются логические константы и слова вида р(n)(τ1, τ2,...,τn). Примеры: p(0), p(0)(х), g(3)(x, y, z), p(2) (f(2(x, y)). Допускается в функциональных и логических выражениях опускать индексы местности, если это не приводит к двусмысленности или противоречию.
Множество операторов включает пять типов:
Среди операторов присваивания выделим случаи: когда τ - переменная, то оператор называется пересылкой (х:=у) и когда τ -константа, то оператор называется засылкой (х:=а).
Подклассы используют ограниченные базисы. Так, например, подкласс У1 имеет базис:
{х1, х2}, {а, f(1)}, {p(1)}, {start, stop, (,),:=, ,}и множество операторов {start(х1, х2); х1:= f(x1), x2=f(x2), x1:=а, х2:= а, р(х1), р(х2), stop(х1,х2)}, т. е. схемы из этого подкласса используют две переменные, константу а, один одноместный функциональный символ, один предикатный символ и операторы указанного вида.
Представим стандартную схему программ как размеченный граф, вершинам которого приписаны операторы из некоторого базиса В.
Стандартной схемой в базисе В называется конечный (размеченный ориентированный) граф без свободных дуг и с вершинами следующих пяти видов:
Конечное множество переменных схемы S составляют ее память ХS.
Из определения следует, что один и тот же оператор может помечать несколько вершин схемы.
Вершины именуются (метки вершины) целым неотрицательным числом (0, 1, 2...). Начальная вершина всегда помечается меткой 0.
Схема S называется правильной, если на каждой дуге заданы все переменные.
Пример правильной ССП S1 в графовой форме приведен на рисунке 1.2, а.
Вершины изображены прямоугольниками, а вершина-распознаватель - овалом. Операторы записаны внутри вершины.
Для использования линейной формы
СПП множество специальных
0: start(х1,..., хn) goto L;
L: x: =τ goto L1;
L: stop(τ1,..., τm);
L: if р(τ1,...τk) then L1 else L0;
L: loop.
Обычно используется сокращенная запись (опускание меток). Полная и сокращенная линейные формы ССП (рисунок 1.2, а) приведены ниже
0: start(х) goto 1, start(х),
1: у: = а goto 2, у: = а,
2: if р(х) then 5 else 3, 2: if р(х) then 5 else 3,
3: у: = g(x,y) goto 4, 3: у: = g(x,y),
4: х: = h(x) goto 2, х: = h (x) goto 2,
5: stop(у). 5: stop(у).
1.3. Свойства и виды стандартных схем программ
1.3.1. Эквивалентность, тотальность, пустота, свобода
ССП S в базисе В тотальна (пуста), если для любой интерпретации I базиса В программа (S, I) останавливается (зацикливается).
Стандартные схемы S1 и S2 в базисе В функционально эквивалентны (S1 ~ S2), если либо обе зацикливаются, либо обе останавливаются с одинаковым результатом, т. е. val (S1, I) » val (S2, I).
Примеры тотальных, пустых и эквивалентных схем S2, S3, S4, S5 приведены на рисунке 1.3.
Рисунок 1.3
Цепочкой стандартной схемы (ЦСС) называют:
1. конечный путь по вершинам схемы, ведущий от начальной вершины к заключительной;
2. бесконечный путь по вершинам, начинающийся начальной вершиной схемы.
В случае, когда вершина-распознаватель (v), то дополнительно указывается верхний индекс (1 или 0), определяющий 1-дугу или 0-дугу, исходящую из вершины.
Примеры цепочек схемы S1 (рисунок 1.2,а):
(0, 1, 21, 5); (0, 1, 20, 3, 4, 20,3,4,21,5) и т. д.
Цепочкой операторов (ЦО) называется последовательность операторов, метящих вершины некоторой цепочки схемы.
Например для S1: (start(х), у:=a, р1(x), stop(у)) или (start(х), у:=a, р0(x), y:=g(x, y), x:=h(x), р0(x), y:=g(x, y), x:=h(x), р0(x), y:=g(x, y), x:=h(x), …)) и т. д.
Предикатные символы ЦО обозначаются так же, как вершины распознавателей в ЦСС.
Пусть S - ССП в базисе В, I - некоторая его интерпретация, (0, 1, к2, к3,…) - последовательность меток инструкций S, выписанных в том порядке, в котором эти метки входят в конфигурации протокола выполнения программы (S, I). Ясно, что эта последовательность – цепочка схемы S. Считают, что интерпретация I подтверждает (порождает) эту цепочку.
ЦСС в базисе В называют допустимой, если она подтверждается хотя бы одной интерпретацией этого базиса.
Не всякая ЦСС является допустимой. В схеме S2 (рисунок 1.3,а) цепочки (0, 1, 20, 5, 61, 7), (0, 1, 21, 3, 40, 7) и все другие конечные цепочки не подтверждаются ни одной интерпретацией.
Свойство допустимости цепочек играет чрезвычайно важную роль в анализе ССП. В частности оно определяет те случаи, когда стандартная схема свободна.
ССП свободна, если все ее цепочки допустимы.
Допустимая цепочка операторов - это цепочка операторов, соответствующая допустимой цепочке схемы. В тотальной схеме все допустимые цепочки (и допустимые цепочки операторов) конечны. В пустой схеме - бесконечны.
Рассмотренные свойства распространяются на все другие классы стандартных схем и образуют опорные пункты схематологии программирования.
Конечный одноленточный (детерминированный, односторонний) автомат обнаруживают ряд полезных качеств, используемых в теории схем программ для установления разрешимости свойств ССП.
Одноленточный конечный автомат (ОКА) над алфавитом V задается набором
A = { V, Q, R, q0, #, I } и правилом функционирования, общим для всех таких автоматов. В наборе А
V - алфавит;
Q - конечное непустое множество состояний (QÇV=Æ);
R - множество выделенных заключите
q0 - выделенное начальное состояние;
I - программа автомата;
# - «пустой» символ.
Программа автомата I представляет собой множество команд вида qа®q', в которой q,q'ÎQ, aÎV и для любой пары (q, a) существует единственная команда, начинающаяся этими символами.
Неформально ОКА можно представить как абстрактную машину, похожую на машину Тьюринга, но имеющую следующие особенности:
1) выделены заключительные
2) машина считывает символы с ленты, ничего не записывая на нее;
3) на каждом шаге головка
4) автомат останавливается в том и только в том случае, когда головка достигнет конца слова, т.е. символа #.
Говорят, что автомат допускает слово a в алфавите V, если, начав работать с лентой, содержащей это слово, он останавливается в заключительном состоянии. Автомат A задает характеристическую функцию множества MA допускаемых им слов в алфавите V, т. е. он распознает, принадлежит ли заданное слово множеству MA если связать с остановкой в заключительном состоянии символ 1, а с остановкой в незаключительном состоянии – 0.
Информация о работе Шпаргалка по "Программированию и компьютерам"