Главная страница
Навигация по странице:

  • Трансляция схем программ Трансляция обогащенных схем

  • О сравнении классов схем

  • Обогащенные и структурированные схемы Классы обогащенных схем

  • ТЕОРИЯ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ. Теория вычислительных процессов


    Скачать 2.17 Mb.
    НазваниеТеория вычислительных процессов
    АнкорТЕОРИЯ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ.doc
    Дата01.04.2018
    Размер2.17 Mb.
    Формат файлаdoc
    Имя файлаТЕОРИЯ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ.doc
    ТипДокументы
    #17485
    страница6 из 20
    1   2   3   4   5   6   7   8   9   ...   20

    Определение рекурсивной схемы
    Рекурсивная схема (РС) так же, как СПП определяется в некотором базисе. Полный базис РС, как и базис ССП, включает четыре счетных множества символов: переменные, функциональные символы, предикатные символы, специальные символы.

    Множества переменных и предикатных символов ничем не отличаются от ССП. Множество специальных символов - другое, а именно: {if, то, else, (, ), ,}. Отличие множества функциональных символов состоит в том, что оно разбито на два непересекающиеся подмножества: множество базовых функциональных символов и множество определяемых функциональных символов (обозначаются для отличия прописными буквами, например, F(1), G(2), и т.д.).

    В базисе РС нет множества операторов, вместо него – множество логических выражений и множество термов.

    Простые термы определяются так же, как термы–выражения в СПП. Среди простых термов выделим базовые термы, которые не содержат определяемых функциональных символов, а также вызовы-термы вида F(n)(1,2,…n), где 1,2,… n - простые термы, F(n) - определяемый функциональный символ.

    Логическое выражение - слово вида

    p(n)(1,2,…n),

    где p(n) - предикатный символ, а 1,2,…n - базовые термы.

    Терм - это простой терм, или условный терм, т.е. слово вида

    if then 1 else 2,

    где  - логическое выражение, 1, 2 - простые термы, называемые левой и соответственно правой альтернативой.

    Примеры термов:

    f(x, g(x, y)); h(h(a)) - базовые термы;

    f(F(x), g(x, F(y))); H(H(a)) - простые термы;

    F(x); H(H(a)) - вызовы;

    ifp(x, y) then h(h(a))elseF(x) - условный терм.

    Используется бесскобочная форма представления:

    ifpxy thenhhaelseFx- условный терм.

    Расширим в базисе В множество специальных символов символом "=".

    Рекурсивным уравнением, или определением функции F назовем слово вида

    F(n)(x1,x2,…xn) = (x1,x2,…xn),

    где (x1,x2,…xn) - терм, содержащий переменные, называемые формальными параметрами функции F.

    Рекурсивной схемой называется пара (, М), где  - терм, называемый главным термом схемы (или ее входом). М - такое множество рекурсивных уравнений, что все определяемые функциональные символы в левых частях уравнений различны и всякий определяемый символ, встречающийся в правой части некоторого уравнения или в главном терме схемы, входит в левую часть некоторого уравнения. Другими словами, в РС имеется определение всякой вызываемой в ней функции, причем ровно одно.

    Примеры РС:

    RS1: F(x); F(x) = ifp(x) thenaelseg(x, F(h(x))).

    RS2: A(b, c); A(x, y) = ifp(x) thenf(x)elseB(x, y);

    B(x, y) = ifp(y) thenA(g(x), a) elseC(x, y);

    C(x, y) = A(g(x), A(x, g(y))).

    RS3:F(x); F(x) = ifp(x) thenxelsef(F(g(x)), F(h(x))).

    Пара (RS, I), где RS - PC в базисе В, а I - интерпретация этого базиса, называется рекурсивной программой. При этом заметим, что определяемые функциональные символы не интерпретируются.

    Протоколы выполнения программы (RS1, I1) и (RS1, I2), где I1и I2 - интерпретации из п. 1.2.3 (рисунок 1.3, б, в), выглядят следующим образом:

    №п/п

    Значение терма для (RS1, I1)

    Значение терма для (RS1, I2)

    1

    F(4)

    F(a,b,c)

    2

    4*F(3)

    CONSCAR(abc, F(b,c))

    3

    4*(3*F(2))

    CONSCAR(abc, CONSCAR(bc, F(c)))

    4

    4*(3*(2*F(1)))

    CONSCAR(abc, CONSCAR(bc, CONSCAR(c, F(е))))

    5

    4*(3*(2*(1*F(0))))

    CONSCAR(abc,CONSCAR(bc,CONSCAR(c, е))) = abc

    6

    4*(3*(2*(1*1)))=24




    Трансляция схем программ
    Трансляция обогащенных схем
    Диаграмма на рис. 1.12. дает полную информацию о возможности трансляции одного класса схем в другой, классы имеют следующие обозначения:

    Y — стандартные схемы; Y(М) — магазинные схемы;

    Y(R) — рекурсивные схемы; Y(А) — схемы с массивами;

    Y(с) — счетчиковые схемы;Y(P) — схемы с процедурами.



    Диаграмма показывает, что классы Y(М) и Y(А) являются универсальными в том смысле, что схемы всех других классов транслируемы в них. В то же время, в класс Y не транслируются схемы ни одного другого класса. Следует отметить, что класс Y(с) достигает полной мощности при количестве счетчиков не менее 2, т.е. класс Y(с) с одним счетчиком равномощен классу Y.
    О сравнении классов схем





    Программы для ЭВМ, будь-то программы, записанные на операторном языке, или программы на рекурсивном языке, универсальны в том смысле, что любую вычислимую функцию можно запрограммировать и найти ее значения для заданных значений аргументов. При этом не требуется богатого набора программных примитивов и базовых операций: достаточно тех средств, которые моделируются стандартными схемами. Это значит, что различные классы программ не имеет смысла сравнивать способности реализовать различные алгоритмы, — все они оказываются универсальными. В то же время программисты знают, чтоодни программные примитивы являются «более выразительными», чем другие, что запись алгоритмов с привлечением рекурсии короче, чем итерационное представление, но вычисления по такой программе могут потребовать больше времени, и т. д. При переходе к схемам программ возникает возможность поставить и исследовать проблему выражения одних наборов примитивов через другие в более чистом виде. Задачи такого типа образуют сравнительную схематологию, основу которой составляют теоремы о возможности или невозможности преобразования схем из одного класса в схемы другого. При этом наряду с основной задачей — выяснением соотношений между различными средствами программирования — решается и другая, внутренняя задача схематологии. Действительно, если мы умеем трансформировать один класс схем в другой, то сможем переносить результаты, полученные для некоторого класса схем, на другие классы.

    Мы будем сравнивать классы схем, у которых базисы согласованны в том смысле, что множества переменных, базовых функциональных символов и предикатных символов одинаковы в данных базисах. Это дает возможность превращать в программы схемы из разных классов с помощью одной и той же интерпретации базисов. Например, полные базисы стандартных и рекурсивных схем согласованны, т. е. определение функциональной эквивалентности может быть обобщено на схемы из разных классов.

    Схема S1 из класса W и схема S2из класса W’ функционально эквивалентны, если для любой интерпретации I согласованных базисов классов W и W’ программы (S1, I), (S2, I)или обе зацикливаются, или обе останавливаются с одним и тем же результатом.

    Класс схем W мощнее класса схем W’, или класс W’ транслируем в класс W, если для любой схемы из W’ существует эквивалентная ей схема в классе W. Классы W и W’ равномощны, если W’ мощнее W и W мощнее W’.

    Доказано, что класс ССП транслируем в класс РС и класс РС не транслируем в класс ССП.

    Рассмотренные примеры подтверждают первое утверждение для одинаковых интерпретаций I базисов. В этом случае РС RS1 эквивалентна ССП S1. При разных интерпретациях ССП и РС результаты будут различаться и следовательно программы (RS1, I1) и (S1, I2) будут различны.

    Второе утверждение подкрепляется РС RS3. Причина не транслируемости этой схемы обусловлена тем, что при варьировании интерпретаций возникает необходимость запомнить сколь угодно большое число промежуточных значений, в то время как память любой стандартной схемы ограничена.

    Существуют некоторые классы РС, транслируемые в ССП. К ним относится класс линейных унарных РС, имеющих базис с единственной переменной x и одноместными функциональными и предикатными символами. Например:

    RS4: F(x); F(x)=ifp(x) then x elsef(x, F(g(x))) транслируема в ССП.
    Схемы с процедурами





    Схемы с процедурами строятся в объединенном базисе классов стандартных и рекурсивных схем. Она состоит из двух частей - главной схемы и множества схем процедур. Главная схема - это стандартная схема, в которой имеются операторы присваивания специального вида x := F(n)(y1,y2,…yn), называемые операторами вызова процедур. Схема процедуры состоит из заголовка и тела процедуры, разделенных символом равенства. Заголовок имеет тот же вид, что и левая часть рекурсивных уравнений. Тело процедуры - это стандартная схема того же вида, что и главная схема. Заключительный оператор тела процедуры всегда одноместен (stop(х)). Ниже приведен пример схемы с процедурами.

    Главная схема

    Множество схем процедур

    (start(x),

    1:z:=x,

    2:u:=a,

    3:x:=F(x, z, u),

    4:u:=b,

    5:z:=F(z, x, u)

    6:stop(z))

    F(y, v, w) = start,

    1:ifp(y)then2else4,

    2:y:=h(y),

    3:v:=G(v, w) goto 1,

    4:ifq(w)then5else6,

    5:y:= v,

    6:stop(y))

    G(t, r) = start,

    1:ifq(r)then2else3,

    2: t := f(t),

    3:stop(t);

    Доказано, что класс РС транслируем в класс схем с процедурами и наоборот.
    Обогащенные и структурированные схемы
    Классы обогащенных схем
    Выделяют следующие классы обогащенных схем: класс счетчиковых схем, класс магазинных схем, класс схем с массивами.

    Классы счетчиковых имагазинных схем образован добавлением в базис ССП счетного множества счетчиков и магазинов с их интерпретированными операторами.

    Счетчик — интерпретированная переменная, у которой областью значений является множество Nat; начальное значение счетчика равно 0.

    Интерпретированные операторы имеют следующий вид:

    c := c + 1 — оператор прибавления единицы;

    c := c - 1— оператор вычитания единицы;

    c = 0 — условный оператор проверки равенства счетчика нулю.

    При значении счетчика равном 0 оператор вычитания единицы не изменяет его, оно остается равным 0.

    К интерпретированным операторам может быть добавлен оператор пересылки значения счетчика с2 := с1, который может быть получен при помощи стандартных операторов.

    Магазин — неинтерпретированная переменная сложной структуры. В процессе выполнения интерпретированной схемы состояние магазина — это конечный набор элементов (d1,d2,…,dn) из области интерпретации, где dnверхушка магазина.

    Интерпретированные операторы имеют следующий вид:

    М := x — запись в магазин;

    х := М — выборка из магазина;

    М =  — условный оператор проверки пустоты магазина,

    где М – магазин, х - обычная переменная. Первый оператор меняет состояние (d1,d2,…,dn) магазина М на состояние (d1,d2,…,dn+1), где dn+1 - значение переменной х. После выполнения этого оператора элемент dn+1 становится новой верхушкой магазина. Второй оператор присваивает переменной х значение, равное верхушке магазина, состояние которого меняется с (d1,d2,…,dn-1,dn) на (d1,d2,…,dn-1), при этом dn-1становится новой верхушкой магазина. Если магазин М пуст, то применение второго оператора оставляет его пустым, а переменная х не меняет своего значения. Третий оператор - предикат проверки магазина на пустоту; если магазин пуст, то значение предиката М = 0 равно 1, в противном случае - 0.

    Класс схем с массивами — это расширение класса счетчиковых схем за счет добавления счетного множества массивов и операторов над ними.

    Массив — неинтерпретированная переменная сложной структуры. При выполнении интерпретированной схемы состояние массива — бесконечная последовательность (d1,d2,…,di,…) элементов из области интерпретациии.

    Интерпретированные операторы имеют следующий вид:

    А[c]:= x — запись в массив;

    х:= А[c] — выборка из массива,

    где А — массив, [c] — целое число, равное текущему значению счетчика с.

    На рисунке 1.11 приведены четыре схемы: стандартная (а), счетчиковая (б), магазинная (в) и схема с массивами (г). Все они эквивалентны друг другу и рекурсивной схеме:

    F(x), F(x)=ifp(x) thenx else f(x, F(g(x))).


    Трансляция обогащенных схем

    Диаграмма на рис. 1.12. дает полную информацию о возможности трансляции одного класса схем в другой, классы имеют следующие обозначения:

    Y — стандартные схемы; Y(М) — магазинные схемы;

    Y(R) — рекурсивные схемы; Y(А) — схемы с массивами;

    Y(с) — счетчиковые схемы;Y(P) — схемы с процедурами.



    Диаграмма показывает, что классы Y(М) и Y(А) являются универсальными в том смысле, что схемы всех других классов транслируемы в них. В то же время, в класс Y не транслируются схемы ни одного другого класса. Следует отметить, что класс Y(с) достигает полной мощности при количестве счетчиков не менее 2, т.е. класс Y(с) с одним счетчиком равномощен классу Y.
    1   2   3   4   5   6   7   8   9   ...   20


    написать администратору сайта