Главная » Просмотр файлов » Хопкрофт, Джон, Э., Мотвани, Раджив, Ульман, Джеффри, Д. - Введение в теорию автоматов, языков и вычислений

Хопкрофт, Джон, Э., Мотвани, Раджив, Ульман, Джеффри, Д. - Введение в теорию автоматов, языков и вычислений (1082271), страница 38

Файл №1082271 Хопкрофт, Джон, Э., Мотвани, Раджив, Ульман, Джеффри, Д. - Введение в теорию автоматов, языков и вычислений (Хопкрофт, Джон, Э., Мотвани, Раджив, Ульман, Джеффри, Д. - Введение в теорию автоматов, языков и вычислений) 38 страницаХопкрофт, Джон, Э., Мотвани, Раджив, Ульман, Джеффри, Д. - Введение в теорию автоматов, языков и вычислений (1082271) страница 382018-01-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 38)

Для каждого состояния можно вычислить переходы за время 0(и'), используя в-замыкание и таблицу переходов НКА для каждого входного символа. Предположим, нужно вычислить 0((~уп 0л ..., уь), а) для ДКА. Из каждого состояния о, можно достичь не более и состояний вдоль путей с меткой к, и каждое из этих состояний может иметь не более, чем и дуг с меткой а. Создав массив, проиндексироннный состояниями, можно вычислить объединение не более и множеств, состоящих из не более, чем и состояний, за время, пропорциональное и'.

Таким способом для каждого состояния д, можно вычислить множество состояний, достижимых из д, вдоль пути с меткой а (возможно, включая дуги, отмеченные и). Поскольку 1 < и, то существует не более и таких состояний дн и для каждого из них вычис- ' Обсуждение алгоритмоп транзитипного замыкания можно найти в книге А. Ч. АЛо, !. Е. Норсгой, апб Л О. (!Пшап, ГЗаса бииссигех аиИ а18омзйтж АсЫ!зоп-Фез!еу, ! 984. (А. Ахо, Дж.

Хопкрофт, Дж. Уяьман. Структуры данных и алгоритмы, Мг Издательский дом "Вяльямс", 2000,) 4.8. СВОЙСТВА РАЗРЕШИМОСТИ РЕГУЛЯРНЫХ ЯЗЫКОВ 167 ление достижимых состояний занимает время 0(п'). Таким образом, общее время вычисления достижимых состояний равно 0(л'). Для объединения множеств достижимых состояний потребуется только 0(а ) дополнительного времени, следовательно, вычисление одного перехода ДКА занимает время О(и ).

Заметим, что количество входных символов считается постоянным и не зависит от и. Таким образом, как в этой, так и в других оценках времени работы количество входных символов не рассматривается, Размер входного алфавита влияет только на постоянный коэффициент, скрытый в обозначении "О большого". Итак, время преобразования НКА в ДКА, включая ситуацию, когда НКА содержит епереходы, равно 0(а~2"). Конечно, на практике обычно число состояний, которые строятся, намного меньше 2".

Иногда нх всего лишь л. Поэтому можно установить оценку времени работы равной 0(л~з), где я — это число состояний, которые в действительности есть у ДКА. Преобразование ДКА в НКА Это простое преобразование, занилзаюп(ее время О(п) для ДКА с л состояниями. Все, что необходимо сделать, — изменить таблицу переходов для ДКА, заключив в скобки () состояния, а также добавить столбец для я, если нужно получить е-НКА. Поскольку число входных символов (т.е. ширина таблицы переходов) считается постоянным, копирование и обработка таблицы занимает время 0(п). Преобразование автомата в регулярное выражение Рассмотрев конструкцию из раздела 3.2.1, заметим, что на каждом из и этапов (где и — число состояний ДКА) размер конструируемого регулярного выражения может увеличиться в четыре раза, так как каждое выражение строится нз четырех выражений предыдущего цикла.

Таким образом, простая запись и' выражений может занять время 0(п'4"). Улучшенная конструкция из раздела 3.2.2 уменьшает постоянный коэффициент, но не влияет на экспоненциальность этой задачи (в наихудшем случае). Аналогичная консзрукция требует такого же времени работы, если преобразуется НКА, нли даже е-НКА, но зто здесь не доказывается. Однако использование конструкции для НКА имеет большое значение. Если сначала преобразовать НКА в ДКА, а затем ДКА — в регулярное выражение, то на это потребуется время 0(гг'4" ), которое являет- ся дважды экспоненциальным.

Преобразование регулярного выражения в автомат Для преобразования регулярного выражения в е-НКА потребуется линейное время. Необходимо эффективно проанализировать регулярное выражение, используя метод, занимающий время 0(п) для регулярного выражения длины п~. В результате получим де- Методы анализа,'с помощью которых можно выполнить эту задачу за время О(п), обсуждаются в книге А. У. Ано, й. 8е1н(, апб 1. О. ()1!щап, Сотрнег Тзеггяп Ржвс~р(еа Тоо(к апг( Тесящдлек АддЬоп-'1Уез(еу, 1986, (А.

Ахо, Р. Сети, Дж. Ульыан. Комппяяяюры. принципы, инструменты и технологии, М; Издательский доы "Вильямс", 2001.) ГЛАВА 4. СВОЙСТВА РЕГУЛЯРНЫХ ЯЗЫКОВ 168 рево с одним узлом для каждого символа регулярного выражения (хотя скобки в этом дереве не встречаются, поскольку они только управляют разбором выражения). Полученное дерево заданного регулярного выражения можно обработать, конструируя к-НКА для каждого узла.

Правила преобразования регулярного выражения, представленные в разделе 3.2.3, никогда не добавляют более двух состояний и четырех дуг для каждого узла дерева выражения. Следовательно, как число состояний, так и число дуг результирующего к-НКА равны 0(и). Кроме того, работа по созданию этих элементов в каждом узле дерева анализа является постоянной при условии, что функция, обрабатывающая каждое поддерево, возвращает указатели в начальное и допускающие со- стояиня этого автомата. Приходим к выводу, что построение к-НКА по регулярному выражению занимает время, линейно зависящее от размера выражения. Можно исключить к-переходы из к- НКА с и состояниями, преобразовав его в обычный НКА за время 01пз) и не увеличив числа состояний. Однако преобразование в ДКА может занять экспоненциальное время. 4.3.2.

Проверка пустоты регулярных языков На первый взгляд ответ на вопрос "является ли регулярный язык Т. пустым?" кажется очевидным: язык О пуст, а все остальные регулярные языки — нет. Однако, как говорилось в начале раздела4.3, при постановке задачи явный перечень цепочек языка Т. не приводится. Обычно задается некоторое представление языка Т„и нужно решить, обозначает ли оно язык О, или нет. Если язык задан с помощью конечного автомата любого вида, то вопрос пустоты состоит в том, есть ли какие-нибудь пути из начального состояния в допускающие. Если есть, то язык непуст, а если все допускающие состояния изолированы от начального, то язык пуст.

Ответ на вопрос, можно ли перейти в допускающее состояние из начального, является простым примером достижимости в графах, подобным вычислению кямыкання, рассмотренному в разделе 2.5.3. Искомый алгоритм можно сформулировать следующим рекурсивным образом. Базис. Начальное состояние всегда достижимо из начального состояния. Индукции. Если состояние з достижимо из начального, и есть дуга из д в состояние р с любой меткой (входным символом или к, если рассматривается к-НКА), то р также достижимо.

Таким способом можно вычислить все множество достижимых состояний. Если среди них есть допускающее состояние, то ответом на поставленный вопрос будет "нет" (язык данного автомата не пуст), в противном случае ответом будет "да" (язык пуст). Заметим, что если автомат имеет и состояний, то вычисление множества достижимых состояний миимает время не более 0(л~) (практически это время пропорционально числу дуг на диаграмме переходов автомата, которое может быть и меньше и ). г 4.3.

СВОЙСТВА РАЗРЕШИМОСТИ РЕГУЛЯРНЫХ ЯЗЫКОВ 169 Если язык 2, представлен регулярным выражением, а не автоматом, то можно преобразовать это выражение в в-НКА, а далее продолжить так, как описано выше. Поскольку автомат, полученный в результате преобразования регулярного выражения длины л, содержит не более О(п) состояний и переходов, для выполнения алгоритма потребуется время О(п). Можно проверить само выражение — пустое оно, или нет.

Сначала заметим, что если в данном выражении ни разу не встречается О, то его язык гарантированно не пуст. Если же в выражении встречается Я, то язык такого выражения ие обязательно пустой. Ис- пользуя следующие рекурсивные правила, можно определить, представляет ли заданное регулярное выражение пустой язык. Базис. И обозначает пустой язык, но к и а для любого входного символа а обознача- ют не пустой язык. Индукции. Пусть Я вЂ” регулярное выражение. Нужно рассмотреть четыре варианта, соответствующие возможным способам построения этого выражения. 1. Я = Я, ь Яз.

7(Я) пуст тогда и только тогда, когда оба языка ЦЯ~) и А(Я,) пусты. 2. Я = Я~Яд ЦЯ) пуст тогда и только тогда, когда хотя бы один из языков ЦЯ~) и Цяг) пуст. 3. Я = Я,, ЦЯ) не пуст: он содержит цепочку е 4. Я = (Я~), 7(Я) пуст тогда и только тогда, кода ЦЯ,) пуст, так как эти языки равны. 4.3.3. Проверка принадлежности регулярному языку Следующий важный вопрос состоит в том, принадлежит лн данная цепочка н данному регулярному языку 7.. В то время, как цепочка ж задается явно, язык 7.

представляется с помощью автомата или регулярного выражения. Если язык 7. задан с помощью ДКА, то алгоритм решения данной задачи очень прост. Имитируем ДКА, обрабатывающий цепочку входных символов н, начиная со стартового состояния. Если ДКА заканчивает в допускающем состоянии, то цепочка зг принадлежит этому языку, в противном случае — нет.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6455
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее