Главная » Просмотр файлов » Формальные грамматики и языки

Формальные грамматики и языки (1119467), страница 2

Файл №1119467 Формальные грамматики и языки (Лекции Карпова) 2 страницаФормальные грамматики и языки (1119467) страница 22019-05-09СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

N0 = ∅, i = 12. Ni = Ni-1 ∪ { A | (A → α) ∈ P, A ∈ N и α ∈ (Ni-1 ∪ T)* }3. Если Ni ≠ Ni-1, то i = i + 1 и переход к шагу 24. Иначе N’ = NiT’ = TS’ = S• P’ состоит из правил множества P, содержащих только символыиз N’ ∪ T’• В грамматике G’ нет бесплодных символов, L (G) = L (G’)50Недостижимые символы• Символ x ∈ (T ∪ N) называется недостижимым вграмматике G = (T, N, P, S), если он не появляется ни водной сентенциальной форме этой грамматики• Алгоритм удаления недостижимых символовВход:Грамматика G = (T, N, P, S)Выход:Грамматика G’ = (T’, N’, P’, S’)Метод:Рекурсивно строятся множества символов V0, V1, ...1. V0 = {S}, i = 12.

Vi = Vi-1 ∪ {x | x ∈ (T∪N), (A → αxβ) ∈ P, A ∈ Vi-1, α,β ∈ (T∪N)∗}3. Если Vi ≠ Vi-1, то i = i + 1 и переход к шагу 24. Иначе N’ = Vi ∩ NT’ = Vi ∩ TS’ = S• P’ состоит из правил множества P, содержащих только символыиз Vi• В грамматике G’ нет недостижимых символов, L (G) = L (G’) 51Правила с пустой правой частью• ε-правилами называются все правила вида А→ε, А∈N• Контекстно-свободная грамматика называетсяграмматикой без ε-правил, если в ней не существуетправил (А → ε) ∈ P, A ≠ S и существует только одноправило (S → ε) ∈ P в том случае, когда ε ∈ L (G), и приэтом S не встречается в правой части ни одногоправила• Существует алгоритм преобразования произвольнойконтекстно-свободной грамматики к виду безε-правил, то есть её преобразования кнеукорачивающей контекстно-свободной52грамматикеУдаление ε-правил• Алгоритм удаления ε-правилВход:Выход:Грамматика G = (T, N, P, S)Грамматика G’ = (T’, N’, P’, S’)1.

X0 = {A: (А → ε) ∈ P}; i = 12. Xi = Xi-1 ∪ {A: А ∈ N, (А → α) ∈ P, α ∈ Xi-1*}3. Если Xi ≠ Xi-1, то i = i + 1 и переход к шагу 2, иначе к шагу 4В Xi входят символы из N, из которых выводится ε4. N’ = NT’ = Tв P’ входят все правила из P,кроме правил вида А → ε5. Если (А → α) ∈ P и в цепочку α входят символы измножества Xi, на основе этой цепочки α строится новоемножество цепочек {α’} путём поочерёдного исключения изα всех возможных комбинаций вхождений символов Xi,53все правила вида А → α’ добавляются в P’Удаление ε-правил• Изменять P’ нужно следующим образом: для любого А ∈ Xiправило вида B →α1Аα2А…αnАαn+1, где αi∈((N – {А}) ∪ T),заменить 2n правилами, соответствующими всем возможнымкомбинациям вхождений А между αi:B →α1α2…αnαn+1B →α1α2…αnAαn+1…B →α1α2А…αnАαn+1B →α1Аα2А…αnАαn+1• Правила вида B → ε в множество P’ не включаются6.

Если S ∈ Xi, значит ε ∈ L (G), в N’ добавляется новый символS’, который становится начальным символом грамматики G’,в P’ добавляются два новых правила: S’ → ε | S; иначе S’ = S7. G’ = (T’, N’, P’, S’)54Циклические правила• Циклом (циклическим выводом) в грамматикеG (T, N, P, S) называется вывод вида А ⇒ A• Циклы возможны только в том случае, если вграмматиках языков присутствуют цепныеправила вида А → В, где А, В ∈ N• В процессе работы алгоритма цепных правилмогут вновь возникать бесплодные инедостижимые символы и правила, ихсодержащие55Циклические правила• Алгоритм удаления цепных правилВход:Грамматика G = (T, N, P, S)Выход:Грамматика G’ = (T’, N’, P’, S’)1. Для всех символов Х из N повторять шаги 2-4, затем переходк шагу 52.

Nx 0 = {Х}; i = 13. Nx i = Nx i-1 ∪ {В: (А → В) ∈ P, В ∈ Nx i-1*}4. Если Nx i ≠ Nx i-1, то i = i + 1 и переход к шагу 3, иначеустановить Nx i = Nx i-1 – {X} и продолжить цикл по шагу 15. N’ = N; T’ = T; S’ = Sв P’ входят все правила из P, кроме правил вида А → В6. Для всех правил (А → α) ∈ P’, если В ∈ NA, В ≠ Ав P’ добавляются правила вида В → α7. G’ = (T’, N’, P’, S’)56Приведение грамматик• В процессе работы алгоритма удаления ε-правил могут вновьвозникать бесплодные и недостижимые символы и правила, ихсодержащие• Если применить алгоритм удаления ε-правил к регулярной(автоматной) грамматике, результатом будет неукорачивающаярегулярная (автоматная) грамматика• Контекстно-свободная грамматика называетсяприведённой, если в ней нет бесполезных (бесплодных инедостижимых) символов• Алгоритм приведения контекстно-свободной грамматики1.

Обнаруживаются и удаляются все бесплодные символы2. Обнаруживаются и удаляются все недостижимые символы• Удаление символов сопровождается удалением правил57вывода, содержащих эти символыСоглашения о грамматиках• Под регулярной грамматикой будем пониматьнеукорачивающую леволинейнуюавтоматную грамматику (в их правилах нетпустых правых частей): А → Вt или А → tгде А, В ∈ N, t ∈ T• Аналогичные праволинейные грамматикиимеют правила видов: А → tВ или А → tгде А, В ∈ N, t ∈ T• Все анализируемые цепочки заканчиваютсяспециальным терминальным символом ⊥– признаком конца цепочки58Алгоритм определенияпринадлежности цепочки языку• Алгоритм определения принадлежности цепочкиязыку, порождаемому регулярной грамматикой:1.

Первый символ исходной цепочки a1a2...an⊥заменить нетерминалом A1, для которого вграмматике есть правило вывода A1 → a12. Многократно (до признака конца цепочки)выполнять шаги: полученный нетерминал Ai-1 иочередной терминал ai цепочки заменитьнетерминалом Ai, для которого в грамматике естьправило вывода Ai → Ai-1ai (i = 2, 3, ..., n)59Построение дерева разбораметодом “снизу-вверх”• Работа алгоритма разбора цепочки языка,порождаемого регулярной грамматикой:An-1всего n – 1разAi+1Ai=1a1a2an60Работа алгоритма разбора порегулярной грамматикеG = ({a, b}, {A, B, S}, P, S}a) на последнем шаге свёрткаP: A → Ab | Bb | bпроизошла к символу S: цепочкаB → Aaпринадлежит языку (a1a2...an⊥ ∈ L(G))S → A⊥SРазбор правильнойцепочки babb⊥Aприменением правилAAabb⊥A→bB → AaBbb⊥BA → BbAb⊥A → AbA⊥AS → A⊥Sbabb⊥61Работа алгоритма разбора порегулярной грамматикеG = ({a, b}, {A, B, S}, P, S}b) на последнем шаге свёрткапроизошла к символу, отличному от S: P: A → Ab | Bb | bB → Aaцепочка не принадлежит языкуS → A⊥(a1a2...an⊥ ∉ L(G))Разбор неправильнойцепочки babприменением правилAAabA→bB → AaBbBA → BbAСимвол A не являетсяAцелью грамматикиbab62Работа алгоритма разбора порегулярной грамматикеG = ({a, b}, {A, B, S}, P, S}c) для нетерминала Ak-1 и очередногоP: A → Ab | Bb | bтерминала ak не нашлосьB → Aaнетерминала Ak, для которого естьS → A⊥правило Ak → Ak-1ak: цепочка непринадлежит языку (a1a2...an⊥ ∉ L(G)) Разбор неправильнойцепочки bba⊥?применением правилBAba⊥A→bA → AbAa⊥AB → AaB⊥Правила для B⊥ вAграмматике нетbba⊥63Работа алгоритма разбора порегулярной грамматикеd) в грамматике разные нетерминалыимеют правила вывода содинаковыми правыми частями, ккакому из них производить свёртку?BA или B?AbabG = ({a, b}, {A, B, S}, P, S}P: A → Ab | Bb | bB → AaS → A⊥B → BbПопытка разборацепочки bab вграмматике сдополнительнымправилом B → Bb,неоднозначность:A → BbB → Bb64Детерминированный автомат• Детерминированный конечный автомат (ДКА) – этопятёрка (K, T, δ, H, S), где• K – конечное множество состояний• T – алфавит автомата, конечноемножество допустимых входных символов• δ – функция переходов: отображение K × T → K(отображение декартова произведениямножеств К и T на множество К)• H ∈ K – начальное состояние автомата• S ⊆ K – непустое (S ≠ ∅) конечноемножество заключительных состояний65Детерминированный автомат (ДКА)• Запись δ (A, t) = B означает, что из состояния A повходному символу t происходит переход автоматаДКА в состояние B• Автомат ДКА называют полностью определённым,если в каждом его состоянии существует функцияперехода для всех возможных входных символов, тоесть ∀ a ∈ T, ∀ q ∈ K ∃ δ (a, q) = R, где R ∈ K• Функция переходов может быть определена лишь дляподмножества K × T (частичная функция)• Если значение δ (A, t) не определено, автомат неможет продолжать работу и останавливается всостоянии “Ошибка”66Детерминированный автомат (ДКА)• Конечный автомат допускает (принимает) цепочкусимволов a1a2...an, если существуют переходыδ (A1, a2) = A2 .

. .δ (An-1, an) = Sδ (H, a1) = A1– алфавит автоматагде ai ∈ T, i = 1, 2, …, nAj ∈ K, j = 1, 2 , …, n – 1 – состояния автоматаH– начальное состояниеS– одно из заключительных состояний• Множество цепочек, допускаемых конечнымавтоматом, составляет определяемый им язык• Автоматы эквивалентны, если они задают один язык• Все конечные автоматы являютсяраспознавателями для регулярных языков67ДКА и леволинейные грамматики• Построение ДКА по леволинейной грамматикеВход: Леволинейная грамматика G = (T, N, P, S)Выход: Конечный автомат ДКА = (K, V, δ, H, C), L(G) = L(ДКА)• Привести грамматику G к автоматному виду• Установить, чтоK = N ∪ {H}V=T• Для каждого правила A → t ∈ P, где t ∈ T и А ∈ N вфункцию перехода включается правило δ (H, t) = A• Для каждого правила A → Bt ∈ P, где t ∈ T и А, B ∈ N вфункцию перехода включается правило δ (B, t) = A• В множество конечных состояний автомата включаетсяэлемент, соответствующий цели грамматики G: C = {S}68ДКА и леволинейные грамматики• Построение леволинейной грамматики по ДКАВход: Конечный автомат ДКА = (K, V, δ, H, C)Выход: Леволинейная грамматикаG = (T, N, P, S), L (G) = L (ДКА)•N = K \ {H}T=V• Для всех возможных состояний из множества К и всехвозможных входных символов из множества V:• Если δ (A, t) = ∅, где A∈ K, t ∈ V, никаких действий невыполняется• Если δ (A, t) = B, где A∈ K, B ∈ K, t ∈ V:• если А = Н, в Р включается правило B → t• если А ≠ Н, в Р включается правило B → Аt69ДКА и леволинейные грамматики• Построение леволинейной грамматики по ДКА• Если множество конечных состояний С автомата ДКАсодержит только одно состояние С = {C0}, целевымсимволом S грамматики G становится символ множестваN, соответствующий этому состоянию: S = C0• Если множество конечных состояний С автомата ДКАсодержит более одного состояния С = {C1, C2, …, Cn}, n > 1, вмножество нетерминальных символов N грамматики Gдобавляется новый нетерминальный символ S: N = N ∪ {S}• В множество правил Р грамматики G добавляются правилаS → C1 | C2 | …| Cn• G = (T, N, P, S)70Диаграмма состояний• Диаграмма состояний конечного автомата – этонеупорядоченный ориентированный помеченный граф,который строится следующим образом:• вершины графа (называемые состояниями)помечаются нетерминалами грамматики• добавляется ещё одна вершина (называемаяначальным состоянием), помечаемая символом,отличным от нетерминальных (например, H)• для каждого правила вида W → t соединяются дугойсостояния от H к W, дуга помечается символом t• для каждого правила вида W → Vt соединяются дугойсостояния от V к W, дуга помечается символом t71ДC и леволинейные грамматики• Построение леволинейной грамматики по ДC• Каждой дуге из начального состояния Н в состояние W,помеченной символом t, соответствует правило W → t• Каждой дуге из состояния V в состояние W, помеченнойсимволом t, соответствует правило W → Vt• Заключительное состояние S объявляется начальнымсимволом грамматики72Алгоритм разбора цепочки подиаграмме состояний• Текущим объявляется состояние H• Многократно (до тех пор, пока не прочитанпризнак конца цепочки) выполняютсяследующие шаги: читается очередной символисходной цепочки и осуществляется переход изтекущего состояния в новое состояние по дуге,помеченной прочитанным символом; новоесостояние становится текущим73Алгоритм разбора цепочки подиаграмме состояний• Прочитана вся цепочка; на каждом шаге находиласьединственная дуга, помеченная очередным символоманализируемой цепочки; в результате последнего переходадостигнуто состояние S, цепочка принадлежит языку L (G)• Прочитана вся цепочка; на каждом шаге находиласьединственная дуга; в результате последнего шага достигнутосостояние, отличное от S, цепочка не принадлежит языку L (G)• На некотором шаге не нашлось дуги, выходящей из текущегосостояния и помеченной очередным анализируемымсимволом, цепочка не принадлежит языку L (G)• На некотором шаге оказалось, что из текущего состояния естьнесколько дуг, помеченных очередным символом, ведущих в74разные состояния, разбор недетерминированПрограмма анализатораHabAbBbaCaГрамматика:S → C⊥С → Ab | BaA → a | CaB → b | CbAnalyze () { FA_State= H;try { do { switch (FA_State){ case H:if (c == ‘a’) { GetS (); FA_State = A; }else if (c == ‘b’) { GetS (); FA_State = B; }elseFA_State = Error;break;case A:if (c == ‘b’) { GetS (); FA_State = C; }elseFA_State = Error;break;⊥case B:if (c == ‘a’) { GetS (); FA_State = C; }elseFA_State = Error;break;case C:if (c == ‘a’) { GetS (); FA_State = A; }else if (c == ‘b’) { GetS (); FA_State = B; }FA_State = S;else if (c == ‘⊥’)elseFA_State = Error;break;case Error: throw c;}} while (FA_State != S);}catch (char c) { cout << “Плохой символ ” << c << endl; }75}SРазбор цепочки анализатором• При анализе цепочки abba⊥ возникаеттакая последовательность переходов:⊥H→A→C→B→C→Sabba• Каждая смена состояния означает “свёртку”сентенциальной формы путём замены вней пары “нетерминал-терминал” Nt нанетерминал L, где L → Nt есть правиловывода в грамматикеГрамматика:S → C⊥С → Ab | BaA → a | CaB → b | Cb• Возникает такая последовательность свёрток,соответствующая сменам состояний:abba⊥ ← Abba⊥ ← Cba⊥ ← Ba⊥ ← C⊥ ← S76Недетерминированность разбора• Дана грамматика G = ({a,b, ⊥}, {S,A,B}, P, S)где P: S → A⊥A → a | BbB → b | Bb• Для этой грамматики разбор будетнедетерминированным, так как унетерминальных символов A и B естьодинаковые правые части – Bb• Такой грамматике будет соответствоватьнедетерминированный конечный автомат77Недетерминированный автомат• Недетерминированный конечный автомат (НКА) –это пятёрка (K, T, δ, H, S), где• K – конечное множество состояний• T – конечное множество допустимых входныхсимволов (алфавит автомата)• δ – функция переходов: отображение K × T → ρ (K)(отображение декартова произведения множеств К иT в множество подмножеств К)• H ⊂ K – конечное множество начальных состояний• S ⊂ K – конечное множество заключительныхсостояний78Детерминированный автомат (ДКА)• Запись δ (A, t) = {B1, B2, …, Bn} означает, что изсостояния A по входному символу t происходитпереход автомата ДКА в любое из состояний Bi(i = 1, 2, …, n)Класс языков, определяемых НКА, совпадает склассом языков, определяемых ДКА• Для языка L эквивалентны утверждения:1.

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

Тип файла
PDF-файл
Размер
710,39 Kb
Тип материала
Высшее учебное заведение

Список файлов лекций

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