Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
61
Добавлен:
16.04.2013
Размер:
976.9 Кб
Скачать

6.7.-Исчисление

-исчисление, основоположником которого считают Алонзо Черча, фактически, и стало основой теории алгоритмов и первой конкретизации алгоритма.-исчисление рассматривают также как основу таких важных разделов математики, как функциональное программирование и комбинаторная логика.

-исчисление (нотация, способ записи) формализует понятие функции не как множества или графика, акак правила.

В основе -исчисления лежит операция аппликации.

Аппликация - применение функции к аргументу (можно применить только известную функцию).

Языксостоит из:

1. Множества переменных (х1...).

2. Множества констант(с1...).

3. Символа аппликации ..

4. Символа абстракции .

5. Символа равенства =.

-терм:

1. Переменная или константа - -терм.

2. Если х - переменная, и М - некоторый -терм, тох.М тоже-терм.

3. Если М и N -термы, то MN тоже-терм.

Формула- любое выражение вида M=N, где M и N-термы.

Замечание. В литературе прикладного плана нередко используется несколько иная терминология и форма записи.

f = x.x + x

f - название, ранее не названной функции.

 - оператор.

х - аргумент.

.-комбинатор.

х + х - выражение, задающее значение функции.

Аксиомы:

1. M = M.

2. (x.M)N = M {N/x}-редукция.

где {N/x} – подстановка N вместо всех вхождений x в М.

[В альтернативном представлении часто используемая -редукция записывается, например, так(x.f(x))(a) = f(a)]

3. x.M =y.M при {y/x}-конверсия.

где {у/x} – подстановка у вместо всех вхождений x в М.

Правила вывода:

  1. M = N

N = M.

  1. M = N, N = P

M = P.

  1. M = N

PM = PN.

  1. M = N

MP = NP.

5. M = N

x.M =x.N.

Рассмотрим примеры -редукции (в прикладной варианте записи)

(х.х + 2у)(а) = а + 2у

(у.х + 2у)(а) = х + 2а

(х.(у.х + 2у))(а)(b) = (у.а + 2у)(b) = a + 2b

(x.((y.xy)u))(v.v) = (y.(v.v)y)u = (v.v)u

(x.((y.xy)u))(v.v) = (x.xu)(v.v) = (v.v)u

(x.xx) (x.xx) = (x.xx) (x.xx) = (x.xx) (x.xx) =…

((x.x*3) (y.if y > 4 then e = 2 else x/2) (y.y>2)) (5) = 2*5 = 10

(n.(x.x-n))(2) = x.x-2

(f.2*f(8) – f(f(8)))(half) = 2*8/2 – (8/2)/2 = 6 (half – половина).

7.Формальные грамматики

7.1. Понятие формальной грамматики

Формальная грамматика- это четверка G =<VN,VT, P, S >, в которой

VN-нетерминальный словарь(множество нетерминальных символов);

VT-терминальный словарь(множество терминальных символов ) ;

P - множество грамматических правил;

S VN-начальный нетерминальный символ.

Метаязык- язык, с помощью которого описывается язык:

::= - есть по определению;

| - “ исключающее или”;

< ... > - внутри – один нетерминальный символ ;

[ ] - необязательная часть;

, - запятая – разделитель при перечислении.

Пример:Построим грамматику G1:

<прог>::=<оп> | <оп>; <прог>

<оп>::=<пер> := <выр>

<пер>::=a | b | c

<выр>::=<пер> | <пер> <зн> <выр>

<зн>::= + | - | * | /

V = VN VT-обобщенный словарь.

V*-цепочка символов (строка, слово) из обобщенного словаря;

V*N-цепочка символов (строка, слово) из нетерминального словаря;

V*T-цепочка символов (строка, слово) из терминального словаря.

  V - пустой символ, входит в обобщенный словарь.

Строка непосредственно порождаетстрокуи обозначается:,

если = vxw= vyw и существует некоторое правило p: x::= y,

где v,w, V*, хVN, у = V* \ {}

Строка порождает строкуи обозначается*, когда от строкиможно перейти к строкес помощью последовательности непосредственных порождений.

Продолжая пример:

<прог> <оп> ; <прог><оп> ; <оп><пер> := <выр> ; <оп>*

a := b + c; c := a + b - c;

Грамматика, использующая процедуры (непосредственного) порождения – порождающая грамматика.

Строка непосредственно свертывается в строкуи обозначается:,

если = vxw= vyw и существует некоторое правило p: x::= y,

где v,w, V*, хVN, у = V* \ {}

Строка свертывается в строкуи обозначается*, когда от строкиможно перейти к строкес помощью последовательности непосредственных свертываний.

Грамматика, использующая процедуры (непосредственного) свертывания –распознающая грамматика.

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

ЯзыкL, порождаемый данной грамматикой G - множество нетерминальных цепочек, порождаемых из начального нетерминального символа. Такие терминальные цепочки называютсяпредложениямиданного языка.

L(G) = { x V*N| S*x }

Аналогично можно определить язык L через свертывание.

L(G) = { x V*N| S*x }

Замечание.Другой вариант метаязыка

вместо ::= используется стрелка , терминальные символы записываются маленькими (строчными) буквами, а нетерминальные – большими (прописными) буквами.

Такой вариант мета языка чаще используется в математической литературе. Первый предпочитают использовать в литературе для программистов. Так что мы будем пользоваться и тем и другим вариантами…

Соседние файлы в папке много всякого