Специальная математика
Вид материала | Конспект |
Содержание7. Формальные грамматики 7.1. Понятие формальной грамматики |
- Направления работы семинара, 152.43kb.
- «Математика. Прикладная математика», 366.03kb.
- Программа подраздела «Философские проблемы математики», 94.9kb.
- Рабочая программа по курсу «Специальная педагогика и специальная психология» на 5 курсе, 94.48kb.
- Специальная обработка, 1624.5kb.
- Расшифровка : Математика, 146.94kb.
- Abramson Family Cancer Research Institute University of Pennsylvania (usa) Роль апоптоза, 15.2kb.
- Программа дисциплины "Математика и информатика" (раздел «Математика») (специальность:, 399.2kb.
- Пангеометризм и математическая мифология, 956.71kb.
- Строительство. Система производственного контроля. Часть, 84.92kb.
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 в М.
Правила вывода:
- M = N
N = M.
- M = N, N = P
M = P.
- M = N
PM = PN.
- 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 - начальный нетерминальный символ.
Метаязык - язык, с помощью которого описывается язык:
::= - есть по определению;
| - “ исключающее или”;
< ... > - внутри – один нетерминальный символ ;
[ ] - необязательная часть;
, - запятая – разделитель при перечислении.
Пример: Построим грамматику 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 }
Замечание. Другой вариант метаязыка
вместо ::= используется стрелка , терминальные символы записываются маленькими (строчными) буквами, а нетерминальные – большими (прописными) буквами.
Такой вариант мета языка чаще используется в математической литературе. Первый предпочитают использовать в литературе для программистов. Так что мы будем пользоваться и тем и другим вариантами…