- •«Дискретная математика»
- •Множества и отношения Тема 1. Основные понятия теории множеств Множества и основные операции над ними
- •Кортеж. Декартово произведение
- •Мощность множества
- •Тема 2. Элементы комбинаторики Комбинаторные вычисления
- •Основные понятия комбинаторики
- •Размещения
- •Перестановки
- •Сочетания
- •Определение числа сочетаний с повторениями
- •Бином Ньютона
- •Решение комбинаторных уравнений
- •Метод включений и исключений
- •Рекуррентные соотношения. Возвратные последовательности
- •Тема 3. Отношения на множествах Отношения. Функции. Взаимно однозначные соответствия
- •Отношения эквивалентности и разбиения. Фактор-множества
- •Отношения порядка
- •Тема 4. Элементы теории графов
- •Определение и примеры графов
- •Связность графа
- •Обзор основных задач теории графов
- •Расчет сетевого графика
- •Резервы сетевого графика
- •Сети Петри
- •Маршруты
- •Степени вершин
- •Раскраски графов
- •Планарные графы
- •Изоморфизм графов
- •Алгебра и топология Тема 1. Элементы общей алгебры Операции на множествах
- •Унарные операции алгебры поворотов квадрата
- •Группа подстановок Галуа
- •Алгебра множеств (алгебра Кантора)
- •Алгебраические системы. Решетки
- •Задание множеств конституентами
- •Задание множества а двоичным числом
- •Пересечение множеств № 12 и № 5
- •Тема 2. Булевы функции
- •Табличное задание булевых функций
- •Задание булевой функции
- •Задание булевых функций одной переменной
- •Задание булевых функций двух переменных
- •Аналитическое задание булевых функций
- •Задание булевой функции голосования
- •Полные системы булевых функций
- •Тема 3. Алгебраические системы Определения и примеры
- •Подсистемы
- •Конгруэнции. Фактор-алгебры. Теорема о гомоморфизме
- •Тема 4. Элементы общей топологии
- •Топологические пространства, сходимость к точке и направленности
- •Фильтры и ультрафильтры
- •Булевы решетки подмножеств
- •Атомы и шкалы решеток подмножеств
- •Алгебра логики Тема 1. Алгебра логики высказываний Формулы алгебры логики
- •Функции алгебры логики
- •Эквивалентность формул
- •Дизъюнктивные и конъюнктивные нормальные формы
- •Минимизация булевых функций в классе днф
- •Карты Карно
- •Логические сети Определение и реализация булевых функций
- •Схемы из функциональных элементов
- •Мультиплексоры
- •Программируемые логические матрицы
- •Тема 2. Логика предикатов Предикаты. Кванторы
- •Формулы логики предикатов
- •Правила преобразования формул логики предикатов
- •Тема 3. Элементы теории доказательств Аксиоматическая (формальная) теория. Исчисление предикатов
- •Метод резолюций
- •Хорновские дизъюнкты
- •Унификация. Метод резолюций в логике предикатов
- •Тема 4. Алгоритмы Понятие об алгоритмах. Схемы алгоритмов Понятие об алгоритме и теории алгоритмов
- •Схемы алгоритмов
- •Описание символов, используемых в схемах алгоритмов
- •Неразрешимые алгоритмические проблемы
- •Конечные автоматы и регулярные языки Тема 1. Синтаксис языков Алфавит, слово, язык
- •Классификация грамматик и языков
- •Регулярные языки и регулярные выражения
- •Тема 2. Переключательные функции и способы их задания Понятие о переключательных функциях
- •Некоторая трехзначная переключательная функция двух переменных
- •Трехзначная пф «дизъюнкция а, b »
- •Трехзначная пф «сумма a, b по модулю 3»
- •Трехзначная пф «а плюс 1 по модулю 3 — циклический сдвиг а»
- •Двоичные переключательные функции и способы их задания
- •Одномерная таблица истинности некоторой функции
- •Двухмерная таблица истинности
- •Основные бинарные логические операции
- •Бинарная конъюнкция
- •Бинарная конъюнкция
- •Бинарная дизъюнкция
- •Бинарная инверсия
- •Импликация
- •Эквиваленция
- •Функциональная полнота систем переключательных функций
- •Линейные функции двух переменных
- •Базисы представления переключательных функций
- •Переключательные функции от трех аргументов
- •Векторы переключательных функций
- •Вектор свойств пф
- •Цель минимизации переключательных функций
- •Тема 3. Элементы теории конечных автоматов Основные определения теории конечных автоматов
- •Понятие о технической интерпретации конечных автоматов
- •Синтез комбинационных автоматов в заданном базисе Синтез комбинационных автоматов
- •Синтез переключательной схемы
- •Синтез в базисе и, или, не
- •Синтез методом каскадов
- •Синтез в базисах и-не, или-не
- •Элементарные автоматы памяти на основе комбинационного автомата и задержки
- •Первичная таблица переходов-выходов
- •Синтез автомата-распознавателя последовательности
- •Первичная таблица переходов-выходов распознавателя 0-1-3-2
- •Тема 4. Элементы теории кодирования
- •Проблема кодирования сообщений
- •Расстояние Хемминга
- •Групповые коды
- •Хемминговы коды
Классификация грамматик и языков
Напомним, что единственное ограничение, накладываемое на правило вывода любой грамматики, состоит в том, что в левую часть правила должен входить хотя бы один нетерминал. В зависимости от дополнительных ограничений, накладываемых на правила вывода грамматики , различают следующие основные классы грамматик.
1. Грамматики типа 0 , или грамматики общего вида. Здесь на правила вывода не накладывается никаких дополнительных ограничений.
2. Неукорачивающие грамматики . Каждое правило такой грамматики имеет вид α → β , где |α| ≤ | β |. Таким образом, длина правой части правила не меньше длины левой.
3. Контекстно-зависимые грамматики (КЗ-грамматики ). Грамматику называют контекстно-зависимой грамматикой (КЗ-грамматикой), если любое ее правило вывода имеет вид φ A ψ → φ ξ ψ, где А — нетерминал , ξ — некоторая цепочка, ξ ≠ λ . Каждое такое правило, называемое КЗ-правилом , позволяет заменить нетерминал А в «контексте», образуемом цепочками φ и ψ в объединенном алфавите , непустой цепочкой ξ . Иногда цепочку φ называют левым контекстом , а цепочку ψ — правым контекстом данного КЗ-правила . Из определения видно, что каждая КЗ-грамматика является неукорачивающей.
Если в КЗ-правиле снять требование непустоты цепочки ξ , то получим грамматику, которую называют обобщенной КЗ-грамматикой (или, коротко, ОКЗ-грамматикой ).
4. Контекстно-свободные грамматики (КС-грамматики ) . Каждое правило такой грамматики имеет вид А → α, т. е. левая часть каждого правила вывода есть нетерминал, а правая — произвольная (может быть и пустая) цепочка в объединенном алфавите.
С практической точки зрения это наиболее важный класс грамматик, поскольку именно в терминах КС-грамматик описывается синтаксис языков программирования.
5. Линейные грамматики . Каждое правило такой грамматики имеет вид А → uBv или А → u , т. е. в правой части правила может содержаться не более одного вхождения нетерминала. Если во всех правилах вида А → uBv имеет место v = λ , то грамматика называется праволинейной , а если и = λ — леволинейной.
Пример 7.6. Линейной является грамматика
где множество правил вывода Р 6 есть
6. Регулярные грамматики. У такой грамматики каждое правило имеет вид А → αВ или А → α, где α есть либо терминал, либо пустая цепочка. Регулярные грамматики — частный случай праволинейных грамматик.
Приведем без доказательства некоторые утверждения о классах грамматик.
Теорема . Для любой грамматики типа 0 может быть построена эквивалентная ей ОКЗ-грамматика.
2. Для любой неукорачивающей грамматики может быть построена эквивалентная ей КЗ-грамматика.
3. Для любой леволинейной грамматики может быть построена эквивалентная ей праволинейная грамматика, и, наоборот, для любой праволинейной грамматики может быть построена эквивалентная ей леволинейная грамматика.
4. Для любой праволинейной грамматики может быть построена эквивалентная ей регулярная грамматика.
Классификация языков, порождаемых грамматиками, тесно связана с классификацией самих грамматик, хотя и не тождественна ей. Язык относят к классу С , если существует грамматика класса С, порождающая данный язык. Таким образом определяются языки типа 0, неукорачивающие языки , контекстно-зависимые языки (КЗ-языки ), обобщенные контекстно-зависимые языки (ОКЗ-языки ), контекстно-свободные языки (КС-языки ), линейные языки , право- и леволинейные языки , регулярные языки.
Итак, можно утверждать, что имеют место следующие строгие включения классов языков:
РЕГ ⊂ ЛИН ⊂ КС ⊂ ОКЗ = ТИП 0; КЗ ⊂ ОКЗ,
где РЕГ, ЛИН, КС, КЗ, ОКЗ, ТИП 0 — классы регулярных, линейных, КС-языков, КЗ-языков, ОКЗ-языков и языков типа 0 соответственно.
Принципиальное различие между классификацией грамматик и языков состоит в следующем. Чтобы определить класс грамматики, достаточно посмотреть на множество ее правил вывода. Чтобы доказать «положительное» утверждение о том, что заданный язык есть язык такого-то класса, достаточно придумать любую грамматику из соответствующего класса, которая его порождает. Но чтобы доказать «отрицательное» утверждение о классе языка, т. е. доказать, что язык не принадлежит такому-то классу языков, нужно доказать, что не существует грамматики соответствующего класса, которая его порождает. Эта задача гораздо труднее.
