
- •Пермский Государственный Технический Университет
- •Введение
- •1. Теория множеств
- •1.1 Понятие множества
- •1.2.Операции над множествами
- •1.3.Диаграммы Эйлера - Венна
- •1.4. Алгебра множеств
- •1.5. Кортеж. График
- •1.6. Соответствия
- •2 3 4 5
- •1.7. Отношения
- •1.7.1 Отношение эквивалентности
- •1.7.2.Отношения порядка
- •1.7.3. Морфизмы
- •1.8. Решетки
- •1.8.1. Диаграммы Хассе
- •1.8.2. Понятие решетки
- •1.8.3. Алгебраическое представление решеток. Булевы решетки
- •1.8.4. Подрешетки
- •1.9.4.Мощность множества r. Теорема Кантора
- •1.9.5. Арифметика бесконечного
- •2.1.1.Операции над высказываниями
- •2.1.2.Построение и анализ сложных высказываний
- •2.1.3.Алгебра высказываний
- •2.1.4.Формы представления высказываний
- •2.1.5.Преобразование высказываний
- •2.1.6.Минимизация высказываний методом Квайна
- •2.1.7.Минимизация с помощью карт Вейча
- •2.1.8.Функциональная полнота
- •2.2.Логика предикатов
- •2.2.1.Основные равносильности для предикатов
- •2.2.2.Получение дизъюнктов
- •2.3.Аксиоматические теории
- •2.3.1.Аксиоматическая теория исчисления высказываний
- •2.3.2.Непротиворечивость и полнота аксиоматической теории исчисления высказываний
- •2.4.Аксиоматические теории первого порядка
- •2.5.Метод резолюций
- •2.6.Система Генцена
- •2.7.Система Аристотеля
- •2.8. Примеры неклассических логик
- •3. Теория Автоматов
- •3.1.Понятие автомата
- •Законы функционирования автоматов
- •3.2.Примеры автоматов
- •3.3.Минимизация автоматов
- •3.4.Особенности минимизации автомата Мура
- •3.5.Переход от автомата Мура к автомату Мили и наоборот
- •4.Теория графов
- •4.1. Понятие графа
- •4.2.Теорема Эйлера
- •4.3.Полные графы и деревья
- •4.4.Деревья
- •4.5.Алгоритм Краскала
- •4.6.Планарные графы
- •4.7.Задача о 4 красках
- •4.8.Определение путей в графе
- •4.9.Приведение графа к ярусно-параллельной форме
- •4.10.Внутренняя устойчивость графа
- •4.11.Множество внешней устойчивости. Ядро графа
- •4.12.Клика
- •5. Теория групп
- •5.1.Понятие группы
- •5.2.Морфизмы групп
- •5.3.Инвариантные (нормальные) подгруппы
- •5.4.Группа Диэдра (d3)
- •5.5.Смежные классы
- •5.6.Фактор-группы
- •5.7.Группа Клейна четвертой степени
- •6. Теория алгоритмов
- •6.1.Понятие алгоритма
- •6.2.Конкретизация понятия алгоритма
- •6.3.Сложность вычислений
- •6.4.Машины Тьюринга
- •6.5.Нормальные алгорифмы Маркова
- •6.6.Рекурсивные функции
- •6.7.-Исчисление
- •7.Формальные грамматики
- •7.1. Понятие формальной грамматики
- •7.2.Деревья вывода
- •7.3.Классификация языков по Хомскому
- •7.4.Распознающие автоматы
- •7.5.Понятие транслятора
- •7.6.Основные функции компилятора. Лексический анализ
- •7.7.Переход от недетерминированного распознающего автомата к детерминированному
- •7.8.Переход от праволинейной грамматики к автоматной
- •7.9.Lex
- •7.10.Детерминированные автоматы с магазинной памятью (мп-автоматы)
- •7.11.Транслирующие грамматики
- •7.12. Sи q - грамматики
- •7.13.Ll(1) - грамматики. (left - leftmost)
- •7.14.Метод рекурсивного спуска
- •7.15.Lr - грамматики (left - rightmost)
- •7.16.Функции предшествования
- •7.17.Атрибутные грамматики
- •7.18.Yacc
- •7.19.Область действия и передача параметров
- •7.20.Генерация выходного текста. Польская инверсная запись
- •7.21.Оптимизация программ
- •8. Функциональное программирование
- •9. Логическое программирование. Язык Пролог
- •10. Объектно-ориентированное программирование
- •Заключение
- •Литература
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-нетерминальный словарь(множество нетерминальных символов);
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 }
Замечание.Другой вариант метаязыка
вместо ::= используется стрелка , терминальные символы записываются маленькими (строчными) буквами, а нетерминальные – большими (прописными) буквами.
Такой вариант мета языка чаще используется в математической литературе. Первый предпочитают использовать в литературе для программистов. Так что мы будем пользоваться и тем и другим вариантами…