
- •1. Основные понятия теории графов, удаленность вершины, центр, радиус и диаметр графа.
- •2. Способы задания графов, свойства матриц смежности и инциденций, теорема о рукопожатиях.
- •3. Основные операции над графами, неравенства для числа вершин, ребер и компонент связности графа.
- •4. Типы графов, дополнительные графы, двудольные графы, критерий двудольности.
- •5. Обходы графов: эйлеровы цепи и циклы, необходимые и достаточные условия их существования, алгоритм Флери.
- •6. Обходы графов: гамильтоновы цепи и циклы, достаточные условия их существования.
- •7. Деревья, их свойства, кодирование деревьев, остовные деревья.
- •8. Экстремальные задачи теории графов: минимальное остовное дерево, алгоритмы Прима и Краскала.
- •9. Экстремальные задачи теории графов: задача коммивояжера, «жадный» алгоритм
- •10. Экстремальные задачи теории графов: задача о кратчайшем пути, алгоритм Дейкстры.
- •11. Изоморфизм и гомеоморфизм графов, методы доказательства изоморфности и неизоморфности графов.
- •12. Плоские укладки графов, планарные графы, критерий Понтрягина-Куратовского.
- •13. Необходимые условия планарности, формула Эйлера для планарных графов.
- •14. Правильные вершинные раскраски графов, хроматическое число, неравенства для хроматического числа.
- •15. Теорема о пяти красках, гипотеза четырех красок, «жадный» алгоритм.
- •16. Хроматический многочлен, его нахождение и свойства.
- •17. Задача о поиске выхода из лабиринта, реберная раскраска графа.
- •18. Ориентированные графы, источники и стоки, топологическая сортировка, алгоритм Демукрона.
- •19. Составление расписания выполнения комплекса работ в кратчайшие сроки методами теории графов.
- •20. Элементарные булевы функции и способы их задания (табличный, векторный, формульный, графический, карта Карно).
- •21. Существенные и фиктивные переменные булевых функций, основные тождества, эквивалентные преобразования формул.
- •22. Линейные и нелинейные полиномы Жегалкина, разложение булевых функций в полином Жегалкина методом неопределенных коэффициентов.
- •23. Линейные и нелинейные полиномы Жегалкина, разложение булевых функций в полином Жегалкина методом эквивалентных преобразований.
- •24. Разложение булевых функций в сднф и скнф.
- •25. Минимизация днф и кнф методом эквивалентных преобразований.
- •26. Минимизация днф и кнф с помощью карт Карно.
- •27. Замкнутые классы булевых функций т0, т1, l, лемма о нелинейной функции.
- •28. Замкнутые классы булевых функций s и м, леммы о несамодвойственной и немонотонной функции.
- •29. Полная система функций, теорема о двух системах булевых функций.
- •30. Теорема Поста о полноте системы булевых функций, алгоритм проверки системы на полноту, базис.
- •31. Схемы из функциональных элементов, правила построения и функционирования, метод синтеза сфэ, основанный на сднф и скнф.
- •32. Метод синтеза сфэ, основанный на компактной реализации всех конъюнкций с помощью универсального многополюсника, сложность получаемых схем.
- •33. Основные комбинаторные операции, сочетания и размещения (с возвращением и без возвращения элементов).
- •34. Комбинаторные принципы сложения, умножения, дополнения, включения-исключения.
- •35. Биномиальные коэффициенты, их свойства, бином Ньютона.
- •36. Треугольник Паскаля, полиномиальная формула.
- •37. Алфавитное кодирование: необходимое и достаточные условия однозначности декодирования.
- •38. Алфавитное кодирование: теорема Маркова, алгоритм Маркова.
- •39. Коды с минимальной избыточностью (коды Хаффмана), метод построения.
- •40. Линейные коды, порождающая матрица, двойственный код.
- •41. Самокорректирующиеся коды (коды Хэмминга), метод построения.
- •42. Определение, схема и функционирование абстрактного автомата, способы задания автоматов.
- •43. Типы конечных автоматов, автоматы Мили и Мура, автоматы-генераторы.
- •44. Слова и языки, операции над ними, их свойства.
- •45. Регулярные выражения и регулярные языки, теорема Клини.
- •46. Задача анализа автоматов-распознавателей.
- •47. Задача синтеза автоматов-распознавателей.
- •49. Эквивалентные состояния автомата-преобразователя, эквивалентные автоматы- преобразователи, минимизация автоматов- преобразователей, алгоритм Мили.
- •50. Детерминированные и недетерминированные функции, примеры, способы задания.
- •51. Ограниченно-детерминированные (автоматные) функции, способы их задания.
- •52. Логические автоматы, способы их задания, синтез двоичного сумматора.
- •53. Операции над логическими автоматами: суперпозиция и введение обратной связи.
46. Задача анализа автоматов-распознавателей.
Задача анализа автомата состоит в том, чтобы для конкретного автомата найти язык, распознаваемый этим автоматом.
Опишем
алгоритм, использующий квадратные
матрицы r-го порядка С0,
С1, С2, …, Сr
(где r – число состояний
автомата), элементами которых являются
регулярные выражения. Элементы матрицы
Сk обозначим через
.
Для каждой пары (i, j),
где i, j = 1,
2, …, r, элемент
матрицы С0 – это множество тех
символов входного алфавита А, каждый
из которых за один такт переводит автомат
из состояния vi
в состояние vj.
Поскольку это множество конечно, то
можно задать регулярным выражением.
Элементы матриц С1, С2, …, Сr
будем вычислять с помощью рекуррентного
соотношения
.
Из
этого соотношения следует, что если все
элементы матрицы Сk–1
– регулярные выражения, то матрица Сk
тоже будет состоять из регулярных
выражений. Можно строго доказать, что
для любого k
= 1, 2, …, r
элемент
представляет собой множество всех
входных слов, переводящих автомат из
состояния vi
в состояние vj
за несколько тактов, но так, чтобы при
этом автомат не проходил через
промежуточные состояния, номера которых
превосходят k.
Если считать, что v1
– начальное состояние автомата, а F
– множество всех заключительных
состояний, то язык L,
распознаваемый этим автоматом, можно
будет задать в виде суммы регулярных
выражений
,
где суммирование ведется по всем
заключительным состояниям автомата.
Пример
1. Пусть автомат с начальным состоянием
v1 и заключительным
состоянием v3 задан
диаграммой Мура. Дуга, помеченная
выражением a + b,
заменяет пару параллельных дуг из v3
в v3, одна из которых
имеет метку a, а другая –
метку b. Требуется получить
регулярное выражение для языка L,
распознаваемого этим автоматом. Матрица
С0 легко получается из диаграммы
Мура. В данном случае она имеет вид
.
Равенство
означает, что из состояния v3
в состояние v3
автомат может попасть за один такт либо
по слову а,
либо по слову b.
Элементы
матрицы С1, где i, j = 1, 2, 3,
находим через известные элементы матрицы
С0, используя рекуррентные
соотношения
.
Поскольку
,
то
.
Следовательно,
.
Например,
Вычислив остальные элементы матрицы
С1, получаем, чтоС1 =
.
Элементы матрицы С2 находим из
рекуррентных соотношений
,откуда,
учитывая, что
,
получаем
.
Например,
.
Это равенство означает, что из состояния
v1 в состояние v3
автомат может попасть либо за один такт
по слову b, либо за несколько
тактов по слову, которое начинается и
оканчивается символом а, а между ними
возможно многократное повторение
символа b. Это согласуется
с диаграммой Мура данного автомата.
Таким образом находим все элементы
матрицы С2. В итоге получаем
С2
=
.
Некоторые элементы матрицы С2 можно упростить, используя свойства операций над языками:
a + a·b*·b = a·(Λ + b*·b) = a·b*,
b + b·b*·b = b·(Λ + b*·b) = b·b*,
a + b·b*·a = (Λ + b·b*)·a = b*·a.
В итоге получим упрощенную матрицу С2
С2
=
.
Согласно
алгоритму, регулярное выражение для
языка L, распознаваемого
данным автоматом, будет равно элементу
матрицы С3. Поэтому нет необходимости
искать всю эту матрицу, а достаточно
лишь найти указанный элемент. Используя
рекуррентные соотношения
,
получаем
.
Таким образом, язык L можно задать регулярным выражением (b + a·b*·a)·(a + b)* = b·(a + b)* + a·b*·а·(a + b)*.
В итоге мы получили сумму двух регулярных выражений. Слагаемое b·(a + b)* задает все слова в алфавите {a, b}, начинающиеся с буквы b. Слагаемое a·b*·а·(a + b)* описывает слова, которые начинаются с буквы а, причем она должна встречаться в слове не менее двух раз. Только два указанных типа слов распознаются заданным автоматом. Такой окончательный вывод согласуется с диаграммой Мура.
Пусть автомат, распознающий некоторый язык L, задан диаграммой Мура. Решив задачу анализа для этого автомата, мы получим регулярное выражение, задающее язык L. Спрашивается, каким регулярным выражением можно задать дополнительный язык ? Рассмотрим два автомата, один из которых распознает L, а другой – . Поскольку всякое слово из множества А* обязательно принадлежит одному из языков L или (но не обоим сразу!), то каждое слово распознается каким-либо одним этих автоматов, но не распознается другим. Следовательно, оба автомата задаются одинаковыми диаграммами Мура и имеют одно и то же начальное состояние. Отличаются они лишь тем, что каждое заключительное состояние одного из автоматов считается незаключительным состоянием для другого автомата. Поэтому, изменив набор заключительных состояний в диаграмме Мура, задающей автомат для распознавания L, мы получим диаграмму автомата, распознающего . Например, если в автомате из примера 1, распознающем язык L, объявить v1 начальным состоянием, а v1 и v2 – заключительными, то полученный автомат будет распознавать дополнительный язык . Затем, решив для него задачу анализа, найдем регулярное выражение для .
Пример
2. Пусть автомат с начальным состоянием
v1 и заключительными
состояниями v2 и v3
задан диаграммой Мура. Найдем регулярное
выражение для языка L,
распознаваемого этим автоматом, а также
дополнительного языка
.
Поскольку в диаграмме Мура данного автомата ни один ориентированный путь из начальной вершины в заключительную не содержит ориентированных циклов, то L –конечный язык. Заметим также, что единственный ориентированный путь из v1 в v2 состоит из одной дуги [v1, v2], помеченной символом 0. Поэтому слово 0 распознается данным автоматом. Кроме того, имеется два ориентированных пути из v1 в v3. Один путь – это дуга [v1, v3], помеченная символом 1, а другой – последовательность дуг [v1, v2], [v2, v3], каждая из которых содержит метку 0. Следовательно, автомат распознает ещё два слова: 1 и 00. Таким образом, язык L можно задать регулярным выражением 0 + 1 + 0· 0.
Чтобы получить регулярное выражение для дополнительного языка , заключительными состояниями автомата объявим v1 и v4. Поскольку v1 является одновременно и начальным, и заключительным состоянием, то содержит пустое слово Λ. В диаграмме Мура найдем сначала все ориентированные пути конечной длины из начального состояния в заключительное. Один такой путь образован дугами [v1, v2] и [v2, v4], что соответствует слову 01. Второй путь состоит из дуг [v1, v3] и [v3, v4] и задает регулярное выражение 1·(0 + 1). Третий путь состоит из дуг [v1, v2], [v2, v3], [v3, v4]. Он распознает регулярное выражение 0·0·(0 + 1). Кроме того, есть ещё бесконечное множество путей, которые получаются из трех указанных путей добавлением к ним в конце произвольного числа петель [v4, v4]. Значит, язык можно задать регулярным выражением Λ + (0·1 + (1 + 0·0)·(0 + 1))·(0 + 1)*.