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

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

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

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

В то же время, в отличие от автоматов, регулярные выражения позволяют определять допустимые цепочки декларативным способом. Поэтому регулярные выражения используются в качестве входного языка во многих системах, обрабатывающих цепочки. Рассмотрим два примера. 1. Команды поиска, например, команда дгер операционной системы 1Лч1Х или аналогичные команды для поиска цепочек, которые можно встретить в %'еЬ-броузерах или системах форматирования текста.

В таких системах регулярные выражения используются для описания шаблонов, которые пользователь ищет в файле. Различные поисковые системы преобразуют регулярное выражение либо в ДКА, либо в НКА и применяют этот автомат к файлу, в котором производится поиск. 2. Генераторы лексических анализаторов, такие как Ьех или Е!ех. Напомним, что лексический анализатор — это компонент компилятора, разбивающий исходную про- грамму на логические единицы (лексемы), которые состоят из одного или нескольких символов и имеют определенный смысл, Примерами лексем являются ключевые слова (например ъз(з21е), идентификаторы (любая буква, за которой следует нуль или несколько букв и/или цифр) и такие знаки, как + или <=. Г'енератор лексических анализаторов получает формальные описания лексем, являющиеся по существу регулярными выражениями, и создает ДКА, который распознает, какая из лексем по- является на его входе.

3.1.1. Операторы регулярных выражений Регулярные выражения обозначают (задают, или представляют) языки. В качестве простого примера рассмотрим регулярное выражение 01 ь10 . Оно определяет язык всех цепочек, состоящих либо из одного нуля, за которым следует любое количество единиц, либо из одной единицы, за которой следует произвольное количество нулей. В данный момент мы не рассчитываем, что читатель знает, как интерпретируются регулярные вы- ражения, поэтому наше утверждение о языке, задаваемом этим выражением, пока должно быть принято на веру. Чтобы понять, почему наша интерпретация заданного регулярного выражения правильна, необходимо определить все использованные в этом выраже- нии символы, поэтому вначале познакомимся со следующими тремя операциями над языками, соответствующими операторам регулярных выражений .

1. Объединение двух языков Е и М, обозначаемое Е () М, — это множество цепочек, которые содержатся либо в Е, либо в М, либо в обоих языках. Например, если Е = (001, 1О, 111) и М вЂ” — (е, 001), то Е 0 М = (е, !О, 001, 111). 2. Конканзенация языков Е и М вЂ” это множество цепочек, которые можно образовать путем дописывания к любой цепочке из Е любой цепочки из М. Выше в разделе 1.5.2 было дано определение конкатенации двух цепочек: результатом ее является запись одной цепочки вслед за другой. Конкатенация языков обозначается либо точкой, либо вообще никак не обозначается, хотя оператор конкатенации часто называют "точкой". Например, если Е = (001, 10,! 11) и М= (Е 001), то Е.М, или просто ЕМ, — это (001, 10, 111, 001001, 10001, 111001). Первые три цепочки в ЕМ вЂ” это цепочки из Е, соединенные с е.

Поскольку е является единицей (нейтральным элементом) для операции конкатенации, результирующие цепочки будут такими же, как и цепочки из Е. Последние же три цепочки в ЕМ образованы путем соединения каждой цепочки из Е со второй цепочкой из М, т.е. с 001. Например, 1О из Е, соединенная с 001 из М, даст 10001 для ЕМ. Будем употреблять также термины "рееилярные операции" и "регулярные операторы", принятые в русскоязычной литературе. — Прил. ред ГЛАВА 3. РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ И ЯЗЫКИ 102 3. Итераггия (" звездочка", или замыкание Клини ) языка Е обозначается Е и представг ляет собой множество всех тех цепочек, которые можно образовать путем конкатенации любого количества цепочек из Е.

При этом допускаются повторения, т.е. одна и та же цепочка из Е может быть выбрана для конкатенации более одного раза. Например, если Е = (О, 1), то Š— это все цепочки, состоящие из нулей и единиц. Если Е = (О, 11), то в Е входят цепочки из нулей и единиц, содержащие четное количество единиц, например, цепочки 011, 11110 или а, и не входят цепочки О! 011 или 101. Более форлгально язык Е можно представить как бесконечное объединение О,соЕ', где Е' = (а), Е' = Е и Е' для! > 1 равен ЕЕ...Е (конкатенация ! копий Е). Пример ЗЛЕ Поскольку идея итерации языка может показаться довольно сложной, рассмотрим несколько примеров.

Для начала возьмем Е = (О, 11). Е = (а) независимо от языка Е; нулевая степень означает выбор нулевого количества цепочек из языка Е. Е = Е, ! что означает выбор одной цепочки из Е. Таким образом, первые два члена в разложении Е дают (я,О, 11). Далее рассмотрим Е'. Выберем две цепочки из Е и, поскольку их можно выбирать с повторениями, получим четыре варианта, которые дают Е' = (00, 011, 110, 1111). Аналогично, Е представляет собой множество цепочек, образованных троекратным выбором из двух цепочек языка Е.

Следовательно, Ез имеет вид (000, 0011, 0110, 1100, 01111, 11011, 11110, 111111) Для вычисления Е необходимо вычислить Е' для каждого г и объединить все эти языки. Язык Е' содержит 2' элементов. Хотя каждое множество Е конечно, обьединение бесконечного числа множеств Е' образует, как правило, бесконечный язык, что справедливо, в частности, и для нашего примера.

Пусть теперь Š— множество всех цепочек, состояцгих из нулей. Заметим, что такой язык бесконечен, в отличие от предыдущего примера, где был рассмотрен конечный язык. Однако нетрудно увидеть, что представляет собой Е . Как всегда, Е' = (а), Е' = Е. Е' — это множество цепочек, которые люжно образовать, если взять одну цепочку из нулей и соединить ее с другой цепочкой из нулей. В результате получим цепочку, также состоящую из нулей. Фактически, любую цепочку из нулей можно записать как конкатенацию двух цепочек из нулей (не забывайте, что а — тоже "цепочка из нулей"'; она всегда может быть одной из двух соединяемых цепочек).

Следовательно, Е2 = Е. Аналогично, Е' = Е и так далее. Таким образом, бесконечное объединение Е = Е'() Е () Е 0 ... совпадает с Е в том особом случае, когда язык Е является множеством 1 2 всех нулевых цепочек. 2 Термин "замыкание Клини" связан с именем С. К.

Капни. который ввел понятие регулярного выражения и, в частности, зту операцию. 3.1. РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ 103 В качестве последнего примера рассмотрим И = (в). Заметим, что И' = (к), тогда как И' лля любого ! > 1 будет пустым множеством, поскольку мы не можем выбрать ни одной цепочки из пустого множества. Фактически, И является одним из всего двух языков, итерация которых ле является бесконечным множеством.

П 3.1.2. Построение регулярных выражений Все алгебры начинаются с некоторых элементарных выражений. Обычно это константы и/или переменные. Применяя определенный набор операторов к этим элементарным выражениям и уже построенным выражениям, можно конструировать более сложные выражения. Обычно необходимо также иметь некоторые методы группирования операторов и операндов, например, с помощью скобок. К примеру, обычная арифметическая алгебра начинается с констант (целые и действительные числа) и переменных и позволяет нам строить более сложные выражения с помощью таких арифметических операторов, как е или х. Использование оператора "звездочка'* Впервые оператор "звездочка" появился в разделе 1.5.2, где применялся к алфавиту, например Х .

С помощью этого оператора образуются все цепочки, символы которых принадлежат алфавиту Х. Оператор итерации в значительной мере похож на "звездочку", хотя существует несколько тонких отличий в типах. Предположим, что Š— это язык, содержащий цепочки длины 1, и для каждого символа а из Х существует цепочка а в Е.

Тогда, хотя Е и Х "выглядят*' одинаково, они принадлежат к различным типам; Е представляет собой множество цепочек, а Х— множество символов. С другой стороны, Е обозначает тот же язык, что и Х . Алгебра регулярных выражений строится по такой же схеме: используются константы и переменные для обозначения языков и операторы для обозначения трех операций из раздела 3.!.1 — объединение, точка и звездочка. Регулярные выражения можно определить рекурсивно. В этом определении не только характеризуются правильные регулярные выражения, но и лля каждого регулярного выражения Е описывается представленный им язык, который обозначается через Е(Е).

Базис. Базис состоит из трех частей. 1. Константы я и И являются регулярными выражениями, определяющими языки (в) и И, соответственно, т.е. Цк) = (я) и ЦИ) =- И. 2. Если а — произвольный символ, то а — регулярное выражение, определяющее язык (и), т.е.

Ца) = (а). Заметим, что для записи выражения, соответствующего символу, используется жирный шрифт. Это соответствие, т.е. что а относится к и, должно быть очевидным. 104 ГЛАВА 3. РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ И ЯЗЫКИ 3. Переменная, обозначенная прописной курсивной буквой, например, Ц представляет произвольный язык. Индукции.

Индуктивный шаг состоит из четырех частей, по одной для трех операторов и для введения скобок. 1. Если Е и Š— регулярные выражения, то Е+ Š— регулярное выражение, определяющее объединение языков Е(Е) и ЦЕ), т.е. Е(Е + Е) = Е(Е) () ЦЕ). 2. Если Е и Š— регулярные выражения, то ЕŠ— регулярное выражение, определяющее конкатенацию языков Е(Е) и Е(Е). Таким образом, Е(ЕЕ) = ЦЕ)ЦЕ). Заметим, что для обозначения оператора конкатенации — как операции над языками, так и оператора в регулярном выражении — можно использовать точку. Например, регулярное выражение 0.1 означает то же, что и 01, и представляет язык (О!).

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

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

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