Математический форум Math Help Planet
Обсуждение и решение задач по математике, физике, химии, экономике Теоретический раздел |
Часовой пояс: UTC + 3 часа [ Летнее время ] |
новый онлайн-сервис число, сумма и дата прописью |
|
Часовой пояс: UTC + 3 часа [ Летнее время ] |
Порождающие грамматики (грамматики Хомского) | |
---|---|
Онлайн-сервисы
Нахождение НОД и НОК
Разложение числа на простые множители
Сравнения по модулю
Операции над множествами
Операции над векторами
Разложение вектора по базису. Доказательство, что векторы образуют базис
Чертёж треугольника по координатам вершин
Решение треугольника
Решение Пирамиды
Построение Пирамиды по координатам вершин
Чертёж многоугольника по координатам вершин
Решение систем методом Крамера и Матричным
Онлайн построение графика кривой 2-го порядка
Определение вида кривой или поверхности 2-го порядка по инвариантам
МНК и регрессионный анализ Онлайн + графики
Онлайн число, сумма и дата прописью
Алгоритмы JavaScript
Алгоритмы поиска
Алгоритмы сортировки
Уникальные элементы массива
Объединение, пересечение и разность массивов
НОД и НОК
Операции над матрицами
Дата прописью
Введение в анализ
Функции: понятие, определение, графики
Непрерывность функции
Исследование функции и построение графика
Теория множеств
Множества: понятие, определение, примеры
Точечные множества
Замкнутые и открытые множества
Мера множества
Группы, кольца, поля в математике
Поле комплексных чисел
Кольцо многочленов
Основная теорема алгебры и ее следствия
Математическая логика
Алгебра высказываний
Аксиоматика и логические рассуждения
Методы доказательств теорем
Алгебра высказываний и операции над ними
Формулы алгебры высказываний
Тавтологии алгебры высказываний
Логическая равносильность формул
Нормальные формы для формул высказываний
Логическое следование формул
Приложение алгебры высказываний для теорем
Дедуктивные и индуктивные умозаключения
Решение логических задач
Принцип полной дизъюнкции
Булевы функции
Множества, отношения и функции в логике
Булевы функции от одного и двух аргументов
Булевы функции от n аргументов
Системы булевых функций
Применение булевых функций к релейно-контактным схемам
Релейно-контактные схемы в ЭВМ
Практическое применение булевых функций
Теория формального
Формализованное исчисление высказываний
Полнота и другие свойства формализованного исчисления высказываний
Независимость системы аксиом формализованного исчисления высказываний
Логика предикатов
Логика предикатов
Логические операции над предикатами
Кванторные операции над предикатами
Формулы логики предикатов
Тавтологии логики предикатов
Преобразования формул и следование их предикатов
Проблемы разрешения для общезначимости и выполнимости формул
Применение логики предикатов в математике
Строение математических теорем
Аристотелева силлогистика и методы рассуждений
Принцип полной дизъюнкции в предикатной форме
Метод полной математической индукции
Необходимые и достаточные условия
Логика предикатов и алгебра множеств
Формализованное исчисление предикатов
Неформальные и формаль-ные аксиоматические теории
Неформальные аксиоматические теории
Свойства аксиоматических теорий
Формальные аксиоматические теории
Формализация теории аристотелевых силлогизмов
Свойства формализованного исчисления предикатов
Формальные теории первого порядка
Формализация математической теории
Теория алгоритмов
Интуитивное представление об алгоритмах
Машины Тьюринга и тезис
Рекурсивные функции
Нормальные алгоритмы Маркова
Разрешимость и перечислимость множеств
Неразрешимые алгоритмические проблемы
Теорема Гёделя о неполноте формальной арифметики
Математическая логика и компьютеры
Дискретная математика
Множества и отношения
Теория множеств: понятия и определения
Операции над множествами
Кортеж и декартово произведение множеств
Соответствия и бинарные отношения на множествах
Операции над соответствиями на множествах
Семейства множеств
Специальные свойства бинарных отношений
Отношения эквивалентности на множестве
Упорядоченные множества
Теорема о неподвижной точке
Мощность множества
Парадокс Рассела
Метод характеристических функций
Группы и кольца
Алгебраические структуры и операции
Группоиды, полугруппы, группы
Кольца, тела, поля
Области целостности в теории колец
Модули и линейные пространства
Подгруппы и подкольца
Теорема Лагранжа о порядке конечной группы
Гомоморфизмы групп и нормальные делители
Гомоморфизмы и изоморфизмы колец
Алгебра кватернионов
Полукольца и булевы алгебры
Полукольца: определение, аксиомы, примеры
Замкнутые полукольца
Полукольца и системы линейных уравнений
Булевы алгебры и полукольца
Решетки и полурешетки
Алгебраические системы
Алгебраические системы: модели и алгебры
Подсистемы алгебраических систем
Конгруэнции и фактор-системы
Гомоморфизмы алгебраических систем
Прямые произведения алгебраических систем
Конечные булевы алгебры
Многосортные алгебры
Теория графов
Теория графов: основные понятия и определения
Способы представления графов
Неориентированные и ориентированные деревья
Остовное дерево и алгоритм Краскала
Методы систематического обхода вершин графа
Алгоритмы поиска в глубину и ширину в графах
Задача о путях во взвешенных ориентированных графах
Изоморфизм, гомоморфизм и автоморфизм графов
Топологическая сортировка вершин графа
Элементы цикломатики в теории графов
Булева алгебра и функции
Булевы функции и булев куб
Таблицы булевых функций и булев оператор
Равенство булевых функций. Фиктивные переменные
Формулы и суперпозиции булевых функций
Дизъюнктивные и конъюнктивные нормальные формы
Построение минимальных ДНФ
Теорема Поста и классы
Критерий Поста
Схемы из функциональных элементов
Конечные автоматы и регулярные языки
Конечные автоматы и регулярные языки
Алфавит, слово, язык в программировании
Порождающие грамматики (грамматики Хомского)
Классификация грамматик и языков
Регулярные языки и регулярные выражения
Конечные автоматы
Допустимость языка конечным автоматом
Теорема Клини
Детерминизация конечных автоматов
Минимизация конечных автоматов
Лемма о разрастании для регулярных языков
Обоснование алгоритма детерминизации автоматов
Конечные автоматы с выходом
Морфизмы и конечные подстановки
Машины Тьюринга
Контекстно-свободные языки
Контекстно-свободные языки и грамматики
Приведенная форма КС-грамматики
Лемма о разрастании для КС-языков
Магазинные автоматы (автомат с магазинной памятью)
Алгоритм построения МП-автомата по КС-грамматике
Алгоритм построения КС-грамматики по МП-автомату
Алгебраические свойства КС-языков
Основное свойство суперпозиции КС-языков
Пересечение контекстно-свободных языков
Методы синтаксического анализа КС-языков
Восходящий синтаксический анализ и LR(k)-грамматики
Семантика формальных языков
Принцип индукции по неподвижной точке
Графовое представление МП-автоматов
Интегральное исчисление
Неопределённый и определённый
Неопределенный и определенный интегралы
Свойства интегралов
Интегрирование по частям
Интегрирование методом замены переменной
Интегрирование различных рациональных функций
Интегрирование различных иррациональных функций
Интегрирование различных тригонометрических функций
Определенный интеграл и его основные свойства
Необходимое и достаточное условие интегрируемости
Теоремы существования первообразной
Свойства определенных интегралов
Несобственные интегралы
Интегральное определение логарифмической функции
Приложения интегралов
Вычисление площадей плоских фигур
Площади фигур в различных координатах
Вычисление объемов тел с помощью интегралов
Объём тела вращения
Вычисление длин дуг кривых
Формулы длины дуги регулярной кривой
Кривизна плоской кривой
Площадь поверхности вращения тела
Интегралы в физике
Статические моменты и координаты центра тяжести
Теоремы Гульдина–Паппа
Вычисление моментов инерции
Другие приложения интегралов в физике
Основные интегралы
Вариационное исчисление
Примеры вариационных задач
Дифференциальное уравнение Эйлера
Функционалы, зависящие от нескольких функций
Задача о минимуме кратного интеграла
Финансовый анализ
Анализ эффективности
Критерии и показатели эффективности предприятия
Методы анализа эффективности деятельности
Факторный анализ прибыли от операционной деятельности
Анализ безубыточности предприятия
Операционный рычаг и эффект финансового рычага
Анализ и оценка состава, структуры и динамики доходов и расходов
Анализ рентабельности и резервов устойчивого роста капитала
Анализ распределения прибыли предприятия
Анализ и оценка чувствительности показателей эффективности
Анализ устойчивости
Финансовая устойчивость и долгосрочная платежеспособность
Характеристика типов финансовой устойчивости
Рыночная активность
Финансовый анализ рыночной активности
Методика анализа рыночной активности
Анализ и оценка дивидендного дохода на одну акцию
Инвестиционная деятельность
Инвестиции: экономическая сущность и классификация
Государственное регулирование инвестиционной деятельности
Источники финансовых ресурсов на капитальные вложения
Инвестиции в основные фонды
Оценка состояния основных фондов
Амортизация основных фондов
Капитальное строительство в инвестиционном процессе
Планирование инвестиций в форме капитальных вложений
Экономическая эффективность инвестиций
Финансирование капитальных вложений
Кредитование капитальных вложений
Кредитоспособность
Финансирование и кредитование затрат
Финансирование и кредитование инвестиционной деятельности потребительской кооперации
Финансирование и кредитование капитальных вложений потребительской кооперации
Инвестиционное строительное проектирование
Анализ инвестиций
Инвестиции и инвестиционная деятельность предприятия
Задачи финансового анализа инвестиций предприятия
Учет фактора времени в инвестиционной деятельности
Аннуитет и финансовая рента в инвестициях
Учет фактора инфляции при инвестировании
Оценка фактора риска инвестиционного проекта
Методы оценки эффективности инвестиций
Показатели эффективности инвестиционного проекта
Стоимость компании
Концепция построения международных стандартов финансовой отчетности (МСФО)
Экономическое содержание международных стандартов финансовой отчётности
Цели и принципы оценки стоимости акций и активов компании
Оценка акций и активов предприятия по справедливой стоимости
Методы оценки справедливой стоимости акций предприятия
Затратный подход к оценки стоимости компаний и акций
Сравнительный подход к оценки стоимости предприятий и акций
Доходный подход к оценке стоимости компании и акций
Выбор ставки дисконтирования при инвестировании в акции
Метод капитализации прибыли
Сравнение подходов к оценке стоимости компаний и пакетов акций
Форвардные контракты
Форвардный контракт и цена
Форвардная цена акции на бирже
Цена форвардного контракта инвестора
Форвардная цена акции с учетом величины дивиденда
Форвардная цена акции с учетом ставки дивиденда
Форвардная цена валюты на рынке форекс
Форвардный валютный курс и инфляция на рынке
Форвардная цена товара и спотовый рынок
Форвардная цена при различии ставок по кредитам и депозитам
Синтетический форвардный контракт на акции и валюту
Теория вероятностей
Основные понятия теории вероятностей
Зависимые и независимые случайные события
Повторные независимые испытания
Формула Бернулли
Одномерные случайные величины
Многомерные случайные величины
Функции случайных величин
Законы распределения целочисленных случайных величин
Законы распределения непрерывных случайных величин
Предельные теоремы теории вероятностей
Закон больших чисел и предельные теоремы
Вероятностные закономерности
Математическая статистика
Элементы математической статистики
Выборочный метод
Оценки параметров генеральной совокупности
Статистические гипотезы
Критерии согласия
Теоретические и эмпирические частоты
Теория очередей (СМО)
Определение системы массового обслуживания
Уравнения Колмогорова
Предельные вероятности состояний
Определение СМО с отказами
Определение СМО с ожиданием (очередью)
Аналитическая геометрия
Векторная алгебра
Метрические понятия и аксиомы геометрии
Равенство и подобие геометрических фигур
Бинарные отношения
Вектор, его направление и длина
Линейные операции над векторами
Линейная зависимость и независимость векторов
Отношение коллинеарных векторов
Проекции векторов на прямую и на плоскость
Угол между векторами
Ортогональные проекции векторов
Координата вектора на прямой и базис
Координаты вектора на плоскости и базис
Координаты вектора в пространстве и базис
Операции над векторами в координатной форме
Ортогональный и ортонормированный базисы
Cкалярное произведение векторов и его свойства
Выражение скалярного произведения через координаты векторов
Векторное произведение векторов и его свойства
Смешанное произведение векторов и его свойства
Ориентированные площади и объемы
Двойное векторное произведение и его свойства
Применение векторов в задачах на аффинные свойства фигур
Применение произведений векторов при решении геометрических задач
Применение векторной алгебры в механике
Системы координат
Прямоугольные координаты
Преобразования прямоугольных координат
Полярная система координат
Цилиндрическая система координат
Сферические координаты
Аффинные координаты
Аффинные преобразования координат
Аффинные преобразования плоскости
Примеры аффинных преобразований плоскости
Аффинные преобразования пространства
Многомерное координатное пространство
Линейные и аффинные подпространства
Скалярное произведение n-мерных векторов
Преобразования систем координат
Геометрия на плоскости
Алгебраические линии на плоскости
Общие уравнения геометрических мест точек
Алгебраические уравнения линий на плоскости
Уравнения прямой, проходящей через точку перпендикулярно вектору
Уравнения прямой, проходящей через точку коллинеарно вектору
Уравнения прямой, проходящей через две точки
Уравнения прямой с угловым коэффициентом
Взаимное расположение прямых
Примеры задач с прямыми на плоскости
Системы неравенств с двумя неизвестными
Системы линейных уравнений с двумя неизвестными
Линии 2-го порядка
Канонические уравнения линий второго порядка
Порядок приведения уравнения линии к каноническому виду
Эллипс
Гипербола
Парабола
Квадратичные неравенства с двумя неизвестными
Применение линий 1-го и 2-го порядков в задачах на экстремум функций
Инварианты линий
Классификация линий 2-го порядка по инвариантам
Приведение уравнения линии к каноническому виду по инвариантам
Геометрия в пространстве
Способы задания ГМТ в пространстве
Алгебраические уравнения поверхностей
Уравнения плоскости, проходящей через точку перпендикулярно вектору
Уравнения плоскости, компланарной двум неколлинеарным векторам
Уравнения плоскости, проходящей через три точки
Взаимное расположение плоскостей
Типовые задачи с плоскостями
Уравнения прямых в пространстве
Взаимное расположение прямых в пространстве
Типовые задачи с прямыми в пространстве
Поверхности 2-го порядка
Канонические уравнения поверхностей
Порядок приведения уравнения поверхности к каноническому виду
Поверхности второго порядка
Эллипсоиды
Гиперболоиды
Конусы
Параболоиды
Применение поверхностей 1-го и 2-го порядков в задачах на экстремум функций
Инварианты поверхностей
Линейная алгебра
Матрицы и операции
Линейные операции над матрицами
Умножение матриц
Возведение матриц в степень
Многочлены от матриц
Транспонирование и сопряжение матриц
Блочные матрицы
Произведение и сумма матриц Кронекера
Метод Гаусса приведения матрицы к ступенчатому виду
Элементарные преобразования матриц
Определители
Определители матриц и их основные свойства
Формула полного разложения определителя
Формула Лапласа полного разложения определителя
Определитель произведения матриц
Методы вычисления определителей
Ранг матрицы
Линейная зависимость и линейная независимость строк (столбцов) матрицы
Ранг матрицы и базисный минор матрицы
Методы вычисления ранга матрицы
Ранг системы столбцов (строк)
Обратная матрица
Обратные матрицы и их свойства
Ортогональные и унитарные матрицы
Способы нахождения обратной матрицы
Матричные уравнения
Односторонние обратные матрицы
Скелетное разложение матрицы
Полуобратная матрица
Псевдообратная матрица
Системы уравнений
Системы линейных алгебраических уравнений
Метод Гаусса решения систем линейных уравнений
Структура общего решения системы уравнений
Решение систем с помощью полуобратных матриц
Псевдорешения системы линейных уравнений
Функциональные матрицы
Функциональные матрицы скалярного аргумента
Производные матриц по векторному аргументу
Линейные и квадратичные формы и их преобразования
Приведение форм к каноническому виду
Закон инерции вещественных квадратичных форм
Знакоопределенность форм вещественных квадратичных
Формы и исследование функций на экстремум
Многочленные матрицы
Многочленные матрицы (лямбда-матрицы)
Операции над лямбда-матрицами
Простые преобразования многочленных матриц
Инвариантные множители многочленной матрицы
Функции от матриц
Собственные векторы и значения матрицы
Подобие числовых матриц
Характеристический многочлен матрицы
Минимальный многочлен матрицы
Теорема Гамильтона-Кэли
Жорданова форма матрицы
Приведение матрицы к жордановой форме
Многочлены от матриц
Применение многочленов от матриц
Функции от матриц
Линейные пространства
Линейные пространства: определение и примеры
Линейная зависимость и независимость n-мерных векторов
Размерность и базис линейного пространства
Преобразования координат в линейном пространстве
Изоморфизм линейных пространств
Подпространства
Подпространства линейного пространства
Пересечение и сумма подпространств
Способы описания подпространств
Нахождение дополнения и суммы подпространств
Нахождение пересечения подпространств
Линейные отображения
Линейные многообразия
Линейные отображения
Матрица линейного отображения
Ядро и образ линейного отображения
Линейные операторы
Линейные операторы (преобразования)
Инвариантные подпространства
Собственные векторы и значения оператора
Свойства собственных векторов операторов
Канонический вид линейного оператора
Методика приведения линейного преобразования к каноническому виду
Евклидовы пространства
Евклидовы пространства
Ортогональные векторы евклидова пространства
Ортогональный базис евклидова пространства
Ортонормированный базис евклидова пространства
Ортогональные дополнения в евклидовом пространстве
Задача о перпендикуляре
Матрица и определитель Грама и его свойства
Линейные преобразования евклидовых пространств
Канонический вид ортогонального оператора евклидова пространства
Сопряженные операторы евклидова пространства
Самосопряженные операторы евклидова пространства
Приведение квадратичной формы к главным осям
Унитарные пространства и их линейные преобразования
Комплексный анализ
Комплексные числа
Комплексные числа в алгебраической форме
Комплексные числа в тригонометрической и показательной формах
Множества на комплексной плоскости
Последовательности и ряды комплексных чисел
Комплексные функции
Функции комплексного переменного. Предел, непрерывность и производная
Элементарные функции комплексного переменного
Дифференцирование функций комплексного переменного
Аналитические функции и их свойства
Конформные отображения
Функциональные ряды в комплексной области
и их свойства Интегрирование функций комплексного переменного
Функциональные ряды и последовательности
Степенные ряды и их свойства
Разложение функций в степенные ряды
Нули аналитических функций
Ряд Лорана и разложение функций по целым степеням
Особые точки, Вычеты
Изолированные особые точки функций и полюсы
Вычеты и их применение
Вычисление интегралов с помощью вычетов
Вычеты и расположение нулей многочлена
Операционное исчисление
Дифференциальные уравнения
ДУ первого порядка
Основные понятия и определения ДУ
Метод изоклин для ДУ 1-го порядка
Метод последовательных приближений
ДУ с разделяющимися переменными
Однородные ДУ
Линейные ДУ 1-го порядка
Дифференциальное уравнение Бернулли
ДУ в полных дифференциалах
Интегрирующий множитель
ДУ, не разрешенные относительно производной
Дифференциальное уравнение Риккати
Составление ДУ семейств линий
Задачи на траектории
Особые решения ДУ
ДУ высших порядков
Понятия и определения ДУ высших порядков
ДУ, допускающие понижение порядка
Линейная независимость функций
Определители Вронского и Грама
Однородные и неоднородные дифференциальные уравнения
Задача Коши и Уравнение Эйлера
Линейные ДУ с переменными коэффициентами
Метод Лагранжа решения ДУ
Краевые задачи для ДУ высших порядков
Разложение решения ДУ в степенной ряд
Разложение решения ДУ в обобщенный степенной ряд
Нахождение периодических решений ДУ
Асимптотическое интегрирование ДУ
Системы ДУ
Системы ДУ: понятия и определения
Сведение системы ДУ к одному уравнению
Нахождение интегрируемых комбинаций
Интегрирование однородных линейных систем ДУ
Методы интегрирования неоднородных систем ДУ
Преобразование Лапласа и решение ДУ и систем
Теория устойчивости
Численные методы
Методы алгебры
Численные методы линейной алгебры
Численные методы решения СЛАУ
Итерационный метод Шульца обратной матрицы
Методы решения задач о собственных значениях и векторах матрицы
Методы решения нелинейных уравнений
Методы решения систем нелинейных уравнений
Методы теории приближений
Методы приближения сеточных функций
Методы функциональной интерполяции
Методы интегрально-дифференциальной интерполяции
Методы интегрального сглаживания
Методы интерполяции и сглаживания сплайнами
Методы численного дифференцирования и интегрирования
Методы численного дифференцирования
Методы численного интегрирования
Методы решения обыкновенных ДУ
Численные методы решения задачи Коши
Разностные схемы для решения задачи Коши
Составные схемы для решения задачи Коши
Экстраполяционные методы решения задачи Коши
Непрерывно-дискретные методы решения задачи Коши
Численные методы решения краевых задач
Методы решения ДУ в частных производных
Численные методы решения уравнений математической физики с двумя переменными
Принципы построения разностных схем для уравнений в частных производных
Разностные схемы решения уравнений в частных производных 1-го порядка
Разностные схемы решения уравнений в частных производных 2-го порядка
Численные методы решения уравнений в частных производных
Численные методы решения уравнений математической физики с тремя переменными
|
Порождающие грамматики (грамматики Хомского)Как уже отмечалось, классическая теория формальных языков изучает прежде всего синтаксис языка. Она вводит математическую модель синтаксиса, которая описывает механизмы порождения и распознавания "правильно построенных" цепочек. В этом разделе мы рассмотрим первый из этих механизмов. Задать такой механизм — значит описать некую процедуру, позволяющую вывести (или, как обычно говорят, породить) произвольную цепочку языка согласно определенному конечному множеству правил. Последнее очень важно: язык может быть бесконечным, но множество правил, с помощью которых выводятся его цепочки, обязано быть конечным. Заметим, что не каждый язык может быть представлен таким образом, но мы в рамках этого учебника будем рассматривать только такие языки, т.е. языки, синтаксис которых задается конечным множеством правил. Эти языки, вообще говоря бесконечные, но допускающие конечное описание, называют перечислимыми. Таким образом, мы рассматриваем только перечислимые языки. Классическим способом определения языков через порождающую процедуру является определение их с помощью порождающих грамматик, или грамматик Хомского. Порождающая грамматика позволяет выводить (порождать) цепочки языка из некоторой начальной цепочки с помощью определенных правил замены (или правил подстановки, правил переписывания). Порождение есть пошаговый процесс, в котором на каждом шаге из цепочки, уже полученной на предыдущем шаге (в частности, из начальной), можно путем применения к ней правил замены получить новую цепочку. Именно так мы действуем, решая какую-нибудь математическую задачу, например выполняя дифференцирование и переходя от одной формулы к другой с помощью таблицы производных. Порождающая грамматика (далее просто грамматика) задается упорядоченной четверкой , в которой — алфавит, называемый терминальным алфавитом; — алфавит, называемый нетерминальным алфавитом, причем пересечение и пусто; — выделенный символ нетерминального алфавита, называемый аксиомой; — конечное множество правил вывода, или продукций. Каждое правило вывода является упорядоченной парой цепочек в алфавите , причем цепочка должна содержать вхождение хотя бы одного символа нетерминального алфавита; цепочку называют левой, цепочку — правой частью правила вывода. Правило вывода принято записывать в таком виде: , разделяя левую и правую части "стрелкой", которая рассматривается как "метасимвол" и не принадлежит ни одному из алфавитов грамматики. Буквы терминального алфавита грамматики называют терминальными символами (или просто терминалами); буквы нетерминального алфавита называют нетерминальными символами (или нетерминалами). Любую цепочку в терминальном (нетерминальном) алфавите называют терминальной (нетерминальной) цепочкой. Алфавит называют объединенным алфавитом грамматики . Пример 7.3. Четверка задает грамматику с терминальным алфавитом , с нетерминальным алфавитом , с аксиомой и множеством правил вывода , элементы которого перечислены в фигурных скобках после аксиомы. Обычно ради наглядности правила вывода грамматики выписывают отдельно: Замечание 7.1. Нам будет удобно условиться о некоторых обозначениях, которыми мы все время будем пользоваться, имея дело с грамматиками. Терминалы будем обозначать малыми латинскими буквами из начала латинского алфавита: и т.д.; нетерминалы — большими латинскими буквами из начала и середины латинского алфавита: и т.д.; терминальные цепочки (т.е. слова в терминальном алфавите) — малыми латинскими буквами из середины и конца латинского алфавита: и т.д.; цепочки в объединенном алфавите — малыми греческими буквами. Наконец, большими латинскими буквами из конца алфавита будем обозначать символы объединенного алфавита или пустую цепочку. Определение грамматики указывает пока только на то, что следует фиксировать, чтобы задать какую-либо грамматику. А именно следует фиксировать два непересекающихся алфавита, выделив в одном из них символ, названный аксиомой, а также конечное множество правил вывода. Но мы еще не знаем, каким образом "работает" грамматика как инструмент порождения (и преобразования) слов. Чтобы это понять, нужно определить важнейшее понятие выводимости в данной грамматике. Неформально каждое правило вывода грамматики трактуется как "правило замены", разрешающее произвольное вхождение левой части правила в некоторую цепочку в объединенном алфавите заменить его правой частью, получив (или выведя) тем самым новую цепочку. Так, для примера 7.3 мы можем от цепочки , используя правило , перейти к цепочке . В этой цепочке есть вхождение левой части правил и , а также левой части правила . Можно использовать любое из них (но какое-нибудь одно!): если мы заменим (в данном случае единственное) вхождение цепочки правой частью правила , то получим цепочку и т.д. Таким образом мы и строим так называемые выводы — последовательности цепочек, в которых каждый последующий член получается из предыдущего заменой, подобной только что рассмотренной. Определение 7.6. Цепочка непосредственно выводима в грамматике из цепочки (или из непосредственно выводится ), если существуют такие цепочки и и такое правило вывода из , что (т.е. существует вхождение левой части правила вывода в цепочку 7), a . Бинарное отношение на множестве цепочек в объединенном алфавите, которое состоит из всех упорядоченных пар , таких, что вторая цепочка непосредственно выводится из первой, называют отношением непосредственной выводимости. Его будем обозначать символом , опуская зачастую имя грамматики: . В этом случае говорят также, что правило применяется к цепочке (и что цепочка получена применением правила к цепочке или, что равносильно, в результате замены данного вхождения левой части правила его правой частью). В общем случае, если левая часть правила вывода входит в данную цепочку, говорят, что правило применимо к этой цепочке (или имеет место применимость правила вывода к цепочке). Если же левая часть правила вывода не входит в цепочку, то говорят, что правило не применимо к данной цепочке. Рефлексивно-транзитивное замыкание отношения непосредственной выводимости обозначаем (опять-таки опуская имя грамматики , если это не приводит к недоразумению: ) и называем отношением выводимости. Иначе говоря, выводимость цепочки из цепочки , в грамматике имеет место, по определению, тогда и только тогда, когда найдутся такие слова , где , что Для данной цепочки в объединенном алфавите, если к ней применимо хотя бы одно правило вывода рассматриваемой грамматики, существует в общем случае не одна, а много цепочек, непосредственно выводимых из нее. Эта неоднозначность связана с двумя факторами. Во-первых, может существовать несколько разных правил вывода, применимых к цепочке . Так, для грамматики примера 7.3 к цепочке применимы все правила грамматики, кроме первого. Тогда любая цепочка, полученная применением к указанной цепочке любого из этих правил, будет непосредственно выводима из нее. Во-вторых, если уже фиксировано правило вывода, применимое к цепочке , то существуют, вообще говоря, несколько различных вхождений левой части этого правила в цепочку . Тогда любая цепочка, полученная заменой любого из этих вхождений правой частью выбранного правила вывода, будет непосредственно выводима из . Для грамматики примера 7.3, правила и цепочки получим: и . Разные вхождения левой части некоторого правила в заданную цепочку могут и пересекаться. Так, правило грамматики примера 7.3 можно к написанному выше слову применить двояко: и . Заметим, наконец, что множество цепочек, непосредственно выводимых из данной, пусто тогда и только тогда, когда среди правил вывода грамматики нет ни одного, применимого к данной цепочке. Для примера 7.3 в качестве такой цепочки можно взять хотя бы цепочку . Определение 7.7. Выводом в грамматике называют произвольную, конечную или бесконечную, последовательность слов , в которой для любого справедливо , если цепочка существует. Число называют длиной вывода, если указанная последовательность конечна и — ее последний элемент. В этом случае говорят также, что выводится из за шагов. Для положительного пишем или, если нужно специально оговорить длину вывода . Из определений следует, что выводимость равносильна тому, что существует вывод , где . Мы будем использовать также термин "фрагмент вывода", понимая под этим такую подпоследовательность вывода, которая сама является выводом. В частности, фрагмент вывода, состоящий из двух соседних его членов, называется шагом вывода. Построение вывода в порождающей грамматике можно трактовать как "игру", правила которой заданы множеством . Подобно тому как в игре (например, в шахматах) можно из заданной позиции перейти в одну из множества следующих позиций, используя правила игры, так и при проведении вывода в грамматике можно из данной цепочки получить одну из множества непосредственно выводимых из нее, заменяя в ней произвольное вхождение левой части правила его правой частью. При этом мы можем выбрать любое правило, применимое к очередной цепочке, и среди различных вхождений его левой части выбрать любое. На основании сказанного можно предположить, что существуют несколько различных выводов фиксированной цепочки из фиксированной цепочки . Далее на примерах мы убедимся в том, что это действительно так. Введенные выше понятия непосредственной выводимости, выводимости и вывода можно уподобить известным из теории графов понятиям непосредственной достижимости, достижимости и пути (в ориентированных графах) соответственно. Мы специально выбирали обозначения выводимости близкими к тем, которые используют в теории графов. Нужно только заметить, что множество вершин графа конечно (по крайней мере, мы в этой книге изучаем только конечные графы), а множество слов бесконечно. Но графовая аналогия позволяет придать введенным выше понятиям большую наглядность: так, построение вывода в грамматике можно уподобить "путешествию" по некоторому пути в ориентированном графе. Язык, порождаемый грамматикойЦентральным понятием в теории порождающих грамматик является понятие языка, порождаемого данной грамматикой. Определение 7.8. Язык, порождаемый грамматикой , — это множество всех выводимых из аксиомы грамматики терминальных цепочек Продолжая "игровую аналогию", мы можем теперь сказать, что у "игры", во-первых, появилась выделенная "начальная позиция", аксиома; во-вторых, возникла "цель" — строя вывод в согласии с правилами грамматики, получить цепочку, не содержащую нетерминалов. Так, скажем, и в шахматах, мы начинаем игру не с произвольной позиции, а со вполне определенной начальной позиции, предусматривающей строго фиксированную расстановку фигур, а закончить игру стремимся в любой позиции, в которой вражескому королю поставлен мат. Но при этом нужно понимать, что правила вывода грамматики априори никак не связаны с ограничением строить выводы терминальных цепочек из аксиомы, а определяют возможность построения любого вывода, даже бесконечного. Заметим также, что, согласно определению 7.8, нетерминалы не содержатся в цепочках языка, порождаемого грамматикой. Это совсем не значит, что нетерминалы "не нужны", напротив, с их помощью мы организуем вывод и можем получить требуемые терминальные цепочки. Когда мы решаем математическую расчетную задачу и должны в результате получить число, то это не значит, что мы не должны пользоваться формулами. Но все буквенные обозначения в окончательном результате должны исчезнуть, хотя без них этот результат получить невозможно. Эквивалентность грамматикОпределение 7.9. Две грамматики называются эквивалентными, если они порождают один и тот же язык. Примем соглашение о следующей сокращенной записи правил с одинаковой левой частью: вместо записи будем использовать запись , разделяя разные правые части вертикальной чертой. Кроме того, рассматривая примеры грамматик, мы зачастую будем записывать только их множества правил вывода, избегая скрупулезной записи всего кортежа, определяющего грамматику. С учетом введенных выше соглашений об обозначениях это не должно приводить к недоразумениям. Пример 7.4. Рассматриваемая ниже грамматика моделирует простейший фрагмент естественного (русского) языка: ее терминалы — это некоторые слова русского языка*, нетерминалами являются "грамматические категории", а именно понятия "предложение", "подлежащее" и "сказуемое" (они даны как слова, заключенные в угловые скобки): = ({кот, пес, крокодил, мяукает, лает, плачет},{(предложение), (подлежащее), (сказуемое)},(предложение), ). *Эти слова рассматриваются как неделимые символы, а именно буквы данного терминального алфавита. Нас никак не должно это смущать, ибо алфавит — это любое непустое конечное множество. Множество правил имеет вид (предложение) → (подлежащее) (сказуемое), (подлежащее) → кот | пес | крокодил, (сказуемое) → мяукает | лает | плачет. Каждое правило вывода грамматики можно трактовать как определение той или иной грамматической категории: например, первое правило есть запись такого определения: "предложение — это подлежащее, за которым идет сказуемое". Так как нас интересует только синтаксис языка, то это определение, касающееся исключительно записи предложения, есть требование, согласно которому, записывая предложение, сначала нужно поставить подлежащее, а после него — сказуемое. Другие правила грамматики определяют подобным образом "подлежащее" и "сказуемое". Но тут новых грамматических категорий не возникает — просто перечисляются те слова, которые могут быть подлежащим и сказуемым. Построим какой-нибудь вывод в грамматике : (предложение)(подлежащее)(сказуемое) кот (сказуемое) кот лает. Заметим, что "смысл" (семантика) выводимой цепочки нас никак не интересует. Мы вообще пока не знаем, что такое "смысл". Так что кот может лаять, крокодил мяукать и т.д. Грамматика как "система определений"Приведенный пример, несмотря на его простоту, позволяет нам дать еще одну содержательную интерпретацию понятия грамматики. Грамматику можно рассматривать как "систему определений" некоторых "терминов", "понятий". Выделяется самое общее понятие (в данном примере понятие "предложение"), оно сводится к менее общим "понятиям" до тех пор, пока мы не придем к "конкретным объектам" (в данном случае к цепочкам в каком-то алфавите), подпадающим под определяемые "понятия". Самое общее "понятие" — это аксиома, другие "понятия" — нетерминалы, "конкретные объекты" — терминальные цепочки. В подобном духе строится определение синтаксиса языков программирования с помощью так называемых форм Бэкуса — Наура. Пример такого описания приведен ниже (см. Д.8.2). За другими примерами следует также обратиться к литературе по языкам программирования. Пример 7.5. а. Грамматика имеет множество правил Нетрудно видеть, что данная грамматика порождает простейшие "идентификаторы" в алфавите, состоящем из двух "букв" и двух "цифр", т.е. цепочки, начинающиеся обязательно с "буквы". Примеры выводов в грамматике б. Грамматика порождает множество так называемых "правильных скобочных структур"*, например *Мы заключили четверку, задающую грамматику , в угловые, а не в круглые скобки, чтобы не смешивать их со скобками, являющимися терминалами данной грамматики. Полезно сопоставить с этой грамматикой индуктивное определение множества правильных скобочных структур: цепочка есть правильная скобочная структура; если известно, что цепочки и — правильные скобочные структуры, то цепочку также считаем правильной скобочной структурой; если известно, что — правильная скобочная структура, то и цепочка есть правильная скобочная структура; никаких правильных скобочных структур, кроме определенных выше, не существует. Видно, что грамматика есть не что иное, как форма записи сформулированного только что индуктивного определения: "правильная скобочная структура" (понятие, обозначенное аксиомой ) есть либо цепочка , либо "правильная скобочная структура" в скобках — , либо две "правильные скобочные структуры", записанные одна после другой, — . в. Рассмотрим грамматику с множеством правил вывода Разберем некоторые примеры выводов: под символом будем указывать номер применяемого на данном шаге правила, а над символом — количество повторений этого правила: Представим теперь вывод произвольной цепочки (7.2) Можно заметить, что посредством многократного применения правила (3) в выводе (7.2) происходит "перегонка" всех букв влево от всех букв , т.е. из цепочки , выводится цепочка . Если считать, что правило (3) на каждом шаге соответствующего вывода применяется так, что происходит замена первого вхождения цепочки цепочкой , то первый (самый левый) символ в цепочке "проходит" через один символ , следующему символу (в цепочке ) нужно пройти уже два символа и т.д. Отсюда следует, что правило (3) в указанном фрагменте вывода (7.2) применяется раз. Тогда последовательность номеров применяемых правил (протокол вывода) может быть записана так: Гораздо труднее доказать, что данная грамматика порождает только цепочки указанного вида. Проанализируем другие варианты проведения вывода после применения правила (2) в выводе (7.2). 1. После применения правила (2) применяем правило (5) и после многократного применения правила (3) получаем (7.3) Цепочка, записанная последней, такова, что, во-первых, она не является терминальной, а во-вторых, к ней не применимо ни одно правило грамматики. Любая такая цепочка называется тупиковой. 2. Вывод (7.2) можно модифицировать, прервав на определенном шаге применение правила (3) и применив правило (4), где Далее, если посредством применения правила (3) мы "перегоним" все символы влево, то получим цепочку , из которой легко получается цепочка . Таким образом, мы получили другой вариант вывода этой цепочки. Но если мы будем применять правило (4), начиная с цепочки до тех пор, пока это возможно, то получим цепочку . Из нее, если не применять сразу правило (5), снова получится цепочка . Применение же правила (5) приведет к тупиковой цепочке. По аналогии можно рассмотреть произвольное чередование применения правил (3) и (4). Все варианты вывода терминальной цепочки тем самым разобраны. В общем же случае строгое доказательство того, что какая-либо предъявленная нам грамматика не порождает никаких других цепочек, кроме цепочек определенного вида, может быть весьма нетривиальным. г. Зададим грамматику , множеством правил Можно доказать, что данная грамматика порождает язык , т.е. все квадраты натуральных чисел, закодированных в однобуквенном алфавите. При доказательстве утверждений о грамматиках нам будет удобно использовать одну процедуру, которую мы назовем переименованием нетерминалов грамматики. Пусть дана какая-то грамматика . Введем новый алфавит , не пересекающийся с , так, что между алфавитами и установлено взаимно однозначное соответствие, при котором каждый символ переходит в символ . Построим новую грамматику , заменив каждое правило в исходной грамматике новым, в котором на месте каждого вхождения каждого нетерминала поставлен нетерминал . Нетрудно доказать, что построенная таким образом грамматика эквивалентна исходной. Говоря неформально, описанное преобразование грамматики состоит в переобозначении ее нетерминалов таким образом, что вместо каждого нетерминала ставится его "двойник", причем "двойники", соответствующие разным нетерминалам, различны.
Математический форум (помощь с решением задач, обсуждение вопросов по математике).
Если заметили ошибку, опечатку или есть предложения, напишите в комментариях.
|
Часовой пояс: UTC + 3 часа [ Летнее время ] |