Главная » Просмотр файлов » dzhon_khopkroft_radzhiv_motvani_dzheffri _ulman_vvedenie_v_teoriyu_avtomatov_yazy kov_i_vychisleniy_2008

dzhon_khopkroft_radzhiv_motvani_dzheffri _ulman_vvedenie_v_teoriyu_avtomatov_yazy kov_i_vychisleniy_2008 (852747), страница 62

Файл №852747 dzhon_khopkroft_radzhiv_motvani_dzheffri _ulman_vvedenie_v_teoriyu_avtomatov_yazy kov_i_vychisleniy_2008 (Введение в теорию автоматов) 62 страницаdzhon_khopkroft_radzhiv_motvani_dzheffri _ulman_vvedenie_v_teoriyu_avtomatov_yazy kov_i_vychisleniy_2008 (852747) страница 622021-10-05СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Докажем индукцией по длине n порождения,G*что A ⇒ w.G17.1. ÍÎÐÌÀËÜÍÛÅ ÔÎÐÌÛ ÊÎÍÒÅÊÑÒÍÎ-ÑÂÎÁÎÄÍÛÕ ÃÐÀÌÌÀÒÈÊСтр. 275275Базис. Один шаг. A → w является продукцией в G. Поскольку w ≠ ε, эта же продукция*есть и в G1, поэтому A ⇒ w.G1Индукция.Пустьв порожденииnшагов,n > 1.Тогдаоно**GGимеетвидA ⇒ Y1Y2…Ym ⇒ w. Цепочку w можно разбить на w1w2…wk так, что Yi ⇒ wi для i = 1, 2,G…, m. Пусть X1, X2, …, Xk будут теми из Yj (в порядке записи), для которых wi ≠ ε. k ≥ 1,поскольку w ≠ ε. Таким образом, A → X1X2…Xk является продукцией в G1.*Утверждаем, что X1X2…Xk ⇒ w, поскольку только Yj, которых нет среди X1, X2, …, Xk,Gиспользованы для порождения ε и не вносят ничего в порождение w. Так как каждое из по*рождений Yj ⇒ wj содержит менее n шагов, к ним можно применить предположение инG**дукции и заключить, что если wj ≠ ε, то Yj ⇒ wj.

Таким образом, A ⇒ X1X2…Xk ⇒ w.G1G1G1Завершим доказательство. Нам известно, что w ∈ L(G1) тогда и только тогда, когда*S ⇒ w. Полагая, что A = S в описанных выше рассуждениях, получаем, что w ∈ L(G1) тоG1*гда и только тогда, когда S ⇒ w и w ≠ ε. Таким образом, w ∈ L(G1) тогда и только тогда,Gкогда w ∈ L(G1) и w ≠ ε.

†7.1.4. Óäàëåíèå öåïíûõ ïðîäóêöèéЦепная продукция — это продукция вида A → B, где и A, и B являются переменными.Эти продукции могут быть полезными: в примере 5.27 мы видели, как использованиецепных продукций E → T и T → F позволило построить следующую однозначную грамматику для простых арифметических выражений.I→a | b | Ia | Ib | I0 | I1F→I | (E)T→F|T*FE→T|E+TВместе с тем, цепные продукции могут усложнять некоторые доказательства и создавать излишние шаги в порождениях, которые по техническим соображениям там совсемне нужны. Например, в продукции E → T переменную T можно расширить обоими возможными способами, заменив эту продукцию двумя: E → F | T * F.

Это изменение всееще не избавляет от цепных продукций из-за появления E → F. Дальнейшая замена F дает E → I | (E) | T * F, однако при этом остается E → I. Но если в этой продукции заменитьI всеми шестью возможными способами, то получим следующие продукции.276Стр. 276ÃËÀÂÀ 7. ÑÂÎÉÑÒÂÀ ÊÎÍÒÅÊÑÒÍÎ-ÑÂÎÁÎÄÍÛÕ ßÇÛÊÎÂE → a | b | Ia | Ib | I0 | I1 | (E) | T * FКак видно, цепных продукций для E нет.

Заметим, что продукция E → a не являетсяцепной, единственный символ в ее теле — терминал, а не переменная.Представленная выше техника расширения цепных продукций до их исчезновенияработает довольно часто. Однако она терпит неудачу, если в грамматике есть цикл изцепных продукций, вроде A → B, B → C и C → A. Техника, гарантирующая результат,*включает первоначальное нахождение всех пар переменных A и B, для которых A ⇒ Bполучается с использованием последовательности лишь цепных продукций.

Заметим, что*A ⇒ B возможно и без использования цепных продукций, например, с помощью продукций A → BC и C → ε.Определив все подобные пары, любую последовательность шагов порождения, в которой A ⇒ B1 ⇒ B2 ⇒ … ⇒ Bn ⇒ α с нецепной продукцией Bn → α, можно заменитьпродукцией A → α. Однако вначале рассмотрим индуктивное построение пар (A, B), для*которых A ⇒ B получается с использованием лишь цепных продукций. Назовем такуюпару цепной парой (unit pair).*Базис.

(A, A) является цепной парой для любой переменной, т.е. A ⇒ A за нульшагов.Индукция. Предположим, что пара (A, B) определена как цепная, и B → C — продукция с переменной C. Тогда (A, C) — цепная пара.Пример 7.10. Рассмотрим грамматику выражений из примера 5.27, воспроизведенную выше. Базис дает цепные пары (E, E), (T, T), (F, F) и (I, I). На индуктивном шагеможно сделать следующие порождения пар.1.(E, E) и продукция E → T дают пару (E, T).2.(E, T) и продукция T → F — пару (E, F).3.(E, F) и F → I дают пару (E, I).4.(T, T) и T → F — пару (E, I).5.(T, F) и F → I — пару (T, I).6.(F, F) и F → I — пару (F, I).Больше пар, которые можно было бы вывести, нет.

На самом деле эти десять пар представляют все порождения, использующие только цепные продукции. †Способ построения пар теперь очевиден. Нетрудно доказать, что предложенный алгоритм обеспечивает порождение всех нужных пар. Зная эти пары, можно удалитьцепные продукции из грамматики и показать эквивалентность исходной и полученнойграмматик.7.1. ÍÎÐÌÀËÜÍÛÅ ÔÎÐÌÛ ÊÎÍÒÅÊÑÒÍÎ-ÑÂÎÁÎÄÍÛÕ ÃÐÀÌÌÀÒÈÊСтр. 277277Теорема 7.11.

Приведенный выше алгоритм находит все цепные пары грамматики G,и только их.Доказательство. С помощью индукции по порядку обнаружения пар нетрудно пока*зать, что если пара (A, B) обнаружена, то A ⇒ B получается с использованием лишьGцепных продукций. Это оставляется в качестве упражнения.*Предположим, что A ⇒ B получено с использованием лишь цепных продукций. ПоGкажем с помощью индукции по длине порождения, что пара (A, B) будет обнаружена.Базис. Нуль шагов. Тогда A = B, и пара (A, B) обнаруживается согласно базису.*Индукция.

Предположим, что A ⇒ B получено за n шагов, n > 0, и на каждом из нихG*применялась цепная продукция. Тогда порождение имеет вид A ⇒ C ⇒ B. ПорождениеG*A ⇒ C состоит из n – 1 шагов, и по предположению индукции пара (A, C) обнаруживаGется. Наконец, используем индуктивную часть алгоритма, чтобы по паре (A, C) и продукции C → B обеспечить обнаружение пары (A, B). †Для удаления цепных продукций по КС-грамматике G = (V, T, P, S) построим КСграмматику G1 = (V1, T, P1, S) следующим образом.1.Найдем все цепные пары грамматики G.2.Для каждой пары (A, B) добавим к P1 все продукции A → α, где B → α — нецепнаяпродукция из P.

Заметим, что при A = B все нецепные продукции для B из P простодобавляются к P1.Пример 7.12. Продолжим пример 7.10, где был выполнен шаг 1 описанного построениядля грамматики выражений из примера 5.27. На рис. 7.1 представлен шаг 2 алгоритма, строящий новое множество продукций. При этом первый член пары становится головой продукций, а в качестве их тел используются все тела нецепных продукций для второго члена.На заключительном шаге из грамматики (см. рис. 7.1) удаляются все цепные продукции. В итоге получается следующая грамматика без цепных продукций, которая порождает то же самое множество выражений, что и грамматика, изображенная на рис. 5.19.E → E + T | T * F | (E) | a | b | Ia | Ib | I0 | I1T → T * F | (E) | a | b | Ia | Ib | I0 | I1F → (E) | a | b | Ia | Ib | I0 | I1I → a | b | Ia | Ib | I0 | I1†Теорема 7.13.

Если грамматика G1 построена по грамматике G с помощью алгоритмаудаления цепных продукций, описанного выше, то L(G1) = L(G).278Стр. 278ÃËÀÂÀ 7. ÑÂÎÉÑÒÂÀ ÊÎÍÒÅÊÑÒÍÎ-ÑÂÎÁÎÄÍÛÕ ßÇÛÊÎÂПараПродукции(E, E)E→E+T(E, T)E→T*F(E, F)E → (E)(E, I)E → a | b | Ia | Ib | I0 | I1(T, T)T→T*F(T, F)T → (E)(T, I)T → a | b | Ia | Ib | I0 | I1(F, F)F → (E)(F, I)F → a | b | Ia | Ib | I0 | I1(I, I)I → a | b | Ia | Ib | I0 | I1Рис.

7.1. Грамматика, построенная на шаге 2 алгоритма удаления цепных продукцийДоказательство. Докажем, что w ∈ L(G1) тогда и только тогда, когда w ∈ L(G).*(Достаточность) Предположим, S ⇒ w. Поскольку каждая продукция грамматикиG1G1 эквивалентна последовательности из нуля или нескольких цепных продукций G, за*которой следует нецепная продукция G, из α ⇒ β следует α ⇒ β. Таким образом, кажG1Gдый шаг порождения в G1 может быть заменен одним или несколькими шагами в G. Со*брав эти последовательности шагов вместе, получим, что S ⇒ w.G(Необходимость) Предположим, что w ∈ L(G). Тогда в соответствии с эквивалент*ностями из раздела 5.2 цепочка w имеет левое порождение, т.е.

S ⇒ w. Где бы в левомlmпорождении ни использовалась цепная продукция, переменная ее тела становитсякрайней слева в выводимой цепочке и сразу же заменяется. Таким образом, левое порождение в G можно разбить на последовательность “шагов”, в которых нуль или несколько цепных продукций сопровождаются нецепной. Заметим, что любая нецепнаяпродукция, перед которой нет цепных, сама по себе образует такой “шаг”. Но по построению грамматики G1 каждый из этих шагов может быть выполнен одной ее про*дукцией.

Таким образом, S ⇒ w. †G1Подведем итог различным упрощениям грамматик, описанным выше. Нам желательно преобразовывать любую КС-грамматику в эквивалентную, которая не имеет беспо-7.1. ÍÎÐÌÀËÜÍÛÅ ÔÎÐÌÛ ÊÎÍÒÅÊÑÒÍÎ-ÑÂÎÁÎÄÍÛÕ ÃÐÀÌÌÀÒÈÊСтр. 279279лезных символов, ε-продукций и цепных продукций. При этом немаловажен порядокприменения преобразований. Безопасным является следующий.1.Удалить ε-продукции.2.Удалить цепные продукции.3.Удалить бесполезные символы.Заметим, что подобно тому, как в разделе 7.1.1 результат удаления бесполезных символов зависел от порядка соответствующих шагов, данные три шага должны быть упорядочены именно так, иначе в грамматике могут остаться удаляемые элементы.Теорема 7.14. Если G — КС-грамматика, порождающая язык, в котором есть хотя быодна непустая цепочка, то существует другая грамматика G1, не имеющая бесполезныхсимволов, ε-продукций и цепных продукций, у которой L(G1) = L(G) – {ε}.Доказательство.

Начнем с удаления ε-продукций методом, описанным в разделе 7.1.3. Если затем удалить цепные продукции (см. раздел 7.1.4), то ε-продукции не появятся, поскольку каждое из тел новых продукций совпадает с некоторым телом одной изстарых. Наконец, удалим бесполезные символы методом раздела 7.1.1. Поскольку этопреобразование только удаляет продукции и символы, не вводя новых, то получаемаяграмматика будет по-прежнему свободна от цепных и ε-продукций.

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

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

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