1 Программа курса «Теория автоматов». РАЗДЕЛ 1

advertisement
Программа курса «Теория автоматов».
РАЗДЕЛ 1. ОРГАНИЗАЦИОННО-МЕТОДИЧЕСКИЙ
1.1. Название курса
Учебный курс «Теория автоматов». Входит в учебную программу направления 552800 «Информатика и вычислительная техника». Относится к специальным дисциплинам.
1.2. Цели и задачи учебной дисциплины
Дисциплина «Теория автоматов» предназначена для формирования у обучающихся цельного представления о теории автоматов, как теоретической основе построения трансляторов для языков программирования.
В соответствии с назначением целью дисциплины является изложение теоретических аспектов теории автоматов и практических результатов использования их в системах программирования.
Исходя из данной цели, в процессе изучения дисциплины решаются следующие задачи:
усвоение основных понятий, категорий, терминов и определений, относящихся к теории автоматов и теории формальных языков;
усвоение методов построения трансляторов;
усвоение методов и алгоритмов анализа и синтеза программ в системах
программирования;
усвоение фундаментальных понятий, связанных со сложностью алгоритмов и языков на основе машин Тьюринга и Шенфилда.
1.3. Требования к уровню освоения дисциплины
По окончанию изучения дисциплины «Теория автоматов» слушатель должен:
иметь представление о круге проблем и задачах, связанных с проблематикой курса, о возможных подходах к их решению на основе теории автоматов, о научных результатах, являющихся основой учебной дисциплины, о
месте данной дисциплины среди других, об основных областях практического
применения полученных знаний;
знать объект, предмет, основные понятия, категории, термины, определения, фактологический материал, признаки, параметры, характеристики и
свойства объекта и предмета изучения, средства, методы и способы решения
задач, классификацию, критерии, оценки и границы применимости теории автоматов;
2
уметь вычленять предметную область дисциплины, выдвигать гипотезы
о причинах возникновения конкретных ситуаций и возможных вариантах их
изменения и последствий, определять и оценивать признаки, параметры и характеристики, выбирать способы, методы и средства для решения, прогнозировать развитие событий, анализировать, обобщать и интерпретировать полученные результаты.
1.4. Формы контроля
Итоговый контроль. Для контроля усвоения данной дисциплины учебным планом предусмотрен экзамен. Экзамен является итоговым по дисциплине и проставляется в приложение к диплому (выписке из зачетной книжки).
РАЗДЕЛ 2. СОДЕРЖАНИЕ ДИСЦИПЛИНЫ
2.1. Новизна курса
Новизна курса связана со следующими обстоятельствами. В настоящее
время искусственные языки, использующие для описания предметной области
текстовое представление, широко применяются не только в программировании,
но и в других областях. С их помощью описывается структура всевозможных
документов, трехмерных виртуальных миров, графических интерфейсов пользователя и многих других объектов, используемых в моделях и в реальном мире. Для того, чтобы эти текстовые описания были корректно составлены, а затем правильно распознаны и интерпретированы, используются специальные
методы их анализа и преобразования. В основе новых методов лежит теория
языков и формальных грамматик, а также теория автоматов. Программные системы, предназначенные для анализа и интерпретации текстов, называются
трансляторами.
Несмотря на то, что к настоящему времени разработаны тысячи различных языков и их трансляторов, процесс создания новых приложений в этой области не прекращается. Это связно как с развитием технологии производства
вычислительных систем, так и с необходимостью решения все более сложных
прикладных задач. Кроме того, элементы теории языков и формальных грамматик применимы и в других разнообразных областях, например, при описании структур данных, файлов, изображений, представленных не в текстовом, а
двоичном формате. Эти методы полезны и при разработке своих трансляторов
даже там, где уже имеются соответствующие аналоги. Такая разработка может
быть обусловлена различными причинами, в частности, функциональными
ограничениями, отсутствием локализации, низкой эффективностью. Например,
одной из последних разработок компании Microsoft является язык программирования C#, а одной из причин его создания является стремление к снижению
популярности языка программирования Java. Можно привести множество дру-
3
гих примеров, когда разработка своего транслятора может оказаться актуальной. Поэтому, основы теории языков и формальных грамматик, а также практические методы разработки трансляторов лежат в фундаменте инженерного
образования по информатике и вычислительной технике.
2.2. Тематический план учебной дисциплины
и распределение часов
Количество часов
Наименование разделов и тем
Самост.
работа
Всего
4
2
6
2
6
4
6
6
12
4
4
8
6
4
10
4
6
10
4
4
8
4
4
8
2
2
4
36
36
72
Лекции
Тема 1. Теория формальных языков
и грамматик
Тема 2. Регулярные множества
Тема 3. Конечные автоматы
Тема 4. Преобразования конечных
автоматов
Тема 5. Контекстно-свободные
грамматики и языки
Тема 6. Автоматы с магазинной памятью
Тема 7. Распознаватели языков
Тема 8. Формальные методы описания перевода
Тема 9. Сложность алгоритмов и
языков
Итого по дисциплине
Семинары
2.3. Содержание отдельных разделов и тем
Тема 1. Теория формальных языков и грамматик
Основные понятия и определения языка посредством множеств. Операции над языками. Понятие о формальной грамматике. Определение формальной грамматики. Примеры грамматик. Выводимость цепочек в грамматиках.
Грамматики с ограничениями на правила (классификация грамматик по Хомскому). Языки порождаемые грамматиками. Примеры языков по классификации Хомского. Контекстно-свободные (КС) грамматики без е – правил. Алгоритм приведения КС грамматики к эквивалентной КС грамматике без е – правил. Механизмы распознавания и преобразования.
4
Тема 2. Регулярные множества
Основные понятия регулярных множеств. Регулярные выражения. Регулярная грамматика. Регулярные языки. Свойства регулярных выражений. Примеры регулярных выражений.
Тема 3. Конечные автоматы
Определение конечного автомата. Детерминированные и недетерминированные конечные автоматы. Способы представления функции переходов
(командный, табличный и графический). Теорема о детерминизации. Теорема
об эквивалентности регулярных множеств и языков, порождаемых недетерминированным конечным автоматом. Лемма о разрастании для регулярных множеств. Примеры конечных автоматов. Примеры применения леммы о разрастании для доказательства нерегулярности множеств.
Тема 4. Преобразования конечных автоматов
Задачи преобразования. Устранение недостижимых состояний. Объединение эквивалентных состояний. Построение детерминированного конечного
автомата. Взаимосвязь способов определения регулярных языков. Характеристика преобразований. Построение конечного автомата по регулярному выражению. Построение регулярной грамматики по конечному автомату. Построение конечного автомата по регулярной грамматике. Примеры.
Тема 5. Контекстно-свободные грамматики и языки
Деревья выводов и однозначность грамматик. Левосторонний и правосторонний выводы. Примеры деревьев разбора. Проверка существования языка. Преобразования КС – грамматик. Устранение недостижимых символов.
Устранение е – правил. Устранение цепных правил. Левая факторизация правил. Устранение прямой левой рекурсии. Нормальная форма Хомского. Нормальная форма Грейбах. Общий алгоритм устранения левой рекурсии. Лемма о
разрастании для КС – грамматик. Примеры.
.
Тема 6. Автоматы с магазинной памятью
Определение автомата с магазинной памятью (МП – автомат). Конфигурации автомата. Разновидности МП – автоматов. Построение МП – автомата.
Построение расширенного МП – автомата. Свойства класса КС – языков. Теорема об эквивалентности КС – языка и языка, определяемого некоторым МП –
автоматом. Замкнутость и не замкнутость КС – языков. Примеры.
5
Тема 7. Распознаватели языков
Нисходящие распознаватели языков. LL(k) – грамматики. Восходящие
распознаватели языков. LR(k) – грамматики. Иерархия КС – грамматик. Грамматика простого предшествования. Вычисление матрицы предшествования.
Распознаватель предшествования. Теория трансляции. Транслирующие преобразования. Лексический анализ. Применение конечных автоматов. Алгоритмы
лексического анализа. Синтаксический анализ. Алгоритмы синтаксического
анализа. Семантический анализ.
Тема 8. Формальные методы описания перевода
Синтаксически управляемый перевод. Схемы компиляции. СУ – схемы.
МП – преобразователи. Практическое применение СУ – схем. Построение промежуточной программы. Синтаксическое дерево. Построение триад по синтаксическому дереву. Транслирующие грамматики. Понятие Т- грамматики. МП –
преобразователь для Т – грамматики. Атрибутные транслирующие грамматики.
Тема 9. Сложность алгоритмов и языков
Общее понятие алгоритма. Основные понятия NP – полных задач. Классы P и NP. Машины Тьюринга. Полиномиальная сводимость и NP – полнота.
Теорема Кука. Методы доказательства NP – полноты. Машины Шенфилда.
Теорема об элиминации. Частично рекурсивные функции. Кодирование конечных последовательностей. Кодирование машин Шенфилда. Теорема Клини о
нормальной форме. Теорема о параметризации.
РАЗДЕЛ 3. УЧЕБНО-МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ
3.1.
Образцы вопросов для подготовки к экзамену
1. Цепочки, языки. Основные операции над языками. Примеры языков.
2. Построение МП-преобразователя для Т-грамматики.
3. Грамматики составляющих. Языки, порождаемые грамматиками. Эквивалентность грамматик. Примеры языков, порождаемых грамматиками.
4. Преобразование дерева разбора в синтаксическое дерево.
5. Классификация грамматик по Хомскому. Примеры грамматик в соответствии с их классификацией.
6. Построение восходящего синтаксического анализатора.
7. Алгоритм преобразования грамматики к грамматике без е- правил.
8. Построение конечного автомата по регулярному выражению.
9. Регулярные множества и выражения. Свойства регулярных выражений.
6
10. Построение нисходящего синтаксического анализатора.
11. Определение конечного автомата (детерминированный, недетерминированный). Способы представления функции переходов. Примеры конечных автоматов.
12. Синтаксическое дерево. Построение триад по синтаксическому дереву.
13. Теорема о детерминизации.
14. Лексический анализатор идентификаторов.
15. Теорема об эквивалентности различных способов определения регулярных языков.
16. Атрибутные транслирующие грамматики. Примеры.
17. Свойства АТ - грамматик. Формирование АТ – грамматики.
18. Лемма о разрастании для регулярных множеств. Примеры применения
леммы.
19. Преобразование конечных автоматов. Устранение недостижимых состояний. Примеры.
20. Проблема ТУЭ. Решение проблемы ТУЭ.
21. Преобразование конечных автоматов. Объединение эквивалентных состояний. Примеры.
22. Контекстно-свободные языки. Деревья выводов и однозначность грамматик Условия существования четко недоминируемых альтернатив.
23. Построение регулярной грамматики по конечному автомату. Построение
конечного автомата по регулярной грамматике. Примеры.
24. Решение проблемы пустоты языка для контекстно-свободных грамматик. Примеры.
25. Лемма о разрастании для контекстно-свободных языков. Примеры применения леммы.
26. Автоматы с магазинной памятью. Примеры автоматов.
27. Алгоритм устранения недостижимых символов в контексно-свободной
грамматике. Примеры.
28. Нисходящие распознаватели языков. LL(k) – грамматики. Примеры.
29. Цепные правила в контекстно-свободной грамматике. Алгоритм построения контекстно-свободной грамматики без е-правил и без цепных правил.
30. Восходящие распознаватели языков. LR(k)-грамматики. Примеры.
31. Эквивалентные преобразования КС - грамматик. Левая факторизация
правил. Устранение прямой левой рекурсии. Примеры.
32. Теорема об эквивалентности МП-автоматов и КС-грамматик.
33. Нормальная форма Хомского для КС-грамматик. Алгоритм преобразования КС-грамматики в нормальную форму Хомского. Примеры.
34. Свойства класса КС-языков. Замкнутость КС-языков.
35. Незамкнутость класса КС-языков относительно пересечения и дополнения. Примеры.
36. Нормальная форма Грейбах. Примеры.
7
37. Грамматика простого предшествования. Матрица предшествования.
Распознаватель предшествования. Примеры.
38. Постановка задачи трансляции. Транслирующие преобразования.
39. Схемы компиляции. СУ – схемы. Практическое применение СУ – схем.
40. МП – преобразователи.
41. Машины Шенфилда.
42. Машины Тьюринга.
43. Сложность алгоритмов и языков.
3.2. Список основной и дополнительной литературы
1.
2.
3.
4.
5.
Основная литература
Касьянов В.Н. Лекции по теории формальных языков, автоматов и сложности вычислений: Учебное пособие. – Новосибирск: НГУ, 1995. – 112 с.
Морозов А.С. Машины Шенфилда. – Новосибирск: НГУ, 1996. - 28 с.
Соколов А.П. Системы программирования: теория, методы, алгоритмы:
Учеб. пособие. – М.: Финансы и статистика, 2004. – 320 с.
Хантер Р. Основные концепции компиляторов. – М.: Вильямс, 2002. – 256 с.
Карпов Ю.Г. Теория автоматов: Учебное пособие для студентов вузов. СПб: Питер, 2002. - 224 с.
Дополнительная литература
1. Ахо А.В., Сети Р., Ульман Д.Д. Компиляторы: принципы, технологии и
инструменты. – М.: Вильямс, 2001.
2. Кук Д., Бейз Г. Компьютерная математика. – М.: Наука, 1990. – 384 с.
3. Минский М. Вычисления и автоматы. – М.: Мир, 1971.
4. Девятков В.В. Системы искусственного интеллекта: Учеб. пособие. – М.:
Изд-во МГТУ им. Н.Э. Баумана, 2001. – 352 с.
5. Саломаа А. Жемчужины теории формальных языков: - М.: Мир, 1986. –
159 с.
Программу подготовил:
к.т.н.., доцент
Осипов А.Л.
Программа утверждена на заседании Ученого совета факультета информационных технологий Новосибирского государственного университета 18 декабря 2003 г., протокол заседания №16.
Декан ФИТ НГУ,
д.ф.-м.н.
М.М.Лаврентьев
Download