Як показати, що L = L (G)?


22

Вказання формальних мов, даючи формальні граматики, є частим завданням: нам потрібні граматики не лише для опису мов, а й для їх розбору, або навіть належної науки . У всіх випадках важливо, щоб граматика під рукою була правильною , тобто генерувала саме потрібні слова.

Ми часто можемо сперечатися на високому рівні, чому граматика є адекватним поданням бажаної мови, опускаючи формальне підтвердження. Але що робити, якщо ми сумніваємось чи потрібні офіційні докази з якоїсь причини? Які методи ми можемо застосувати?

Це має стати еталонним питанням . Тому, будь ласка, потурбуйтеся дати загальні, дидактично представлені відповіді, які проілюстровані хоча б одним прикладом, але, тим не менш, охоплюють багато ситуацій. Спасибі!

Відповіді:


21

Граматики за своєю суттю є рекурсивними предметами, тому відповідь здається очевидною: шляхом індукції. Однак, специфіка часто складна для отримання правильних питань. У подальшому я опишу техніку, яка дозволяє звести багато доказів правильності граматики до механічних кроків за умови певної творчої попередньої обробки.

Основна ідея - не обмежувати себе словами граматики та мови; важко зрозуміти структуру граматики таким чином. Натомість ми будемо сперечатися про набір речень, які може створити граматика. Крім того, ми розділимо одну грізну доказову мету на безліч дрібних цілей, які можна простежити.

Нехай , формальна граматика з нетерміналів , клеми , правила і починається символ . Позначимо через набір речень, які можуть бути похідні від заданого , тобто . Мова, породжена , . Припустимо, ми хочемо показати, що для деякого .N T δ S N ϑ ( G ) S δ α ϑ ( G )G=(N,T,δ,S)NTδSNϑ(G)SδG L ( G ) = ϑ ( G ) T L = L ( G ) L T αϑ(G)SαGL(G)=ϑ(G)TL=L(G)LT

Ансац

Ось як ми йдемо з цього приводу. Визначимо так щоM1,,Mk(NT)

  1. ϑ(G)=i=1kMi і
  2. Ti=1kMi=L .

Хоча 2., як правило, зрозуміло за визначенням , 1. вимагає серйозної роботи. Два елементи разом чітко означають за бажанням.L ( G ) = LMiL(G)=L

Для зручності позначення позначимо .M=i=1kMi

Скеляста дорога

Для виконання такого доказу є два основних кроки.

  • Як знайти (хороший) ? Mi
    Одна з стратегій полягає у дослідженні фаз, через які працює граматика. Не кожна граматика піддається цій ідеї; загалом це творчий крок. Це допомагає, якщо ми можемо самі визначити граматику; маючи певний досвід, ми зможемо визначити граматики, більш простежувані при такому підході.

  • Як довести 1.?
    Як і у будь-якої встановленої рівності, є два напрямки.

    • Gϑ(G)M : (структурна) індукція над виробництвами .G
    • M i SMϑ(G) : Зазвичай один індукцію , починаючи з того, який містить .MiS

Це настільки ж специфічно, як і виходить; деталі залежать від граматики та мови.

Приклад

Розглянемо мову

L={anbncmn,mN}

і граматика з заданимиδG=({S,A},{a,b,c},δ,S)δ

SScAAaAbε

для якого ми хочемо показати, що . Через які етапи працює ця граматика? Ну, спочатку він генерує а потім . Це негайно інформує наш вибір , а самеc m a n b n M iL=L(G)cmanbnMi

M0={ScmmN},M1={anAbncmm,nN},M2={anbncmm,nN}.

Оскільки і , пункт 2. вже подбаний. Назустріч 1. ми розділили доказ на дві частини, як було оголошено.M 0T = M 1T = M2=LM0T=M1T=

ϑ(G)M

Проводить структурну індукцію уздовж правил .G

IA: Оскільки ми успішно закріплюємося.S=Sc0M0

IH: Нехай для деякого безлічі пропозицій , що ми знаємо .X MXϑ(G)XM

IS: Нехай довільним. Ми повинні показати , що незалежно від форми має і те , що правило застосовується наступний, ми не залишаємо . Ми робимо це шляхом повного розрізнення випадків. За допомогою індукційної гіпотези ми знаємо, що (саме) застосовується один із таких випадків:α MαXϑ(G)MαM

  • w = S c m m N MwM0 , тобто для деяких . Можна застосувати два правила, обидва з яких виводять речення в : w=ScmmN
    M
    • ScmScm+1M0 і
    • ScmAcm=a0Ab0cmM1 .
  • w = a n A b n c m m , n NwM1 , тобто для деяких : w=anAbncmm,nN
    • wan+1Abn+1cmM1 і
    • wanbncmM2 .
  • w T wM3 : оскільки , подальший похід неможливий.wT

Оскільки ми успішно охопили всі випадки, індукція завершена.

ϑ(G)M

Виконуємо один (простий) доказ на . Зверніть увагу, як ми ланцюжок доказів так "пізніше" може закріпити за допомогою "раніше" .М i М iMiMiMi

  • m S c 0 = S S S cM1 : Виконуємо індукцію над , закріплюючи в і використовуючи на кроці.mSc0=SSSc
  • m n A c m S S c m A c m A a A bM2 : фіксуємо довільним значенням та індукуємо над . Ми закріплюємо в , використовуючи цей за попереднім доказом. Крок прогресує через .mnAcmSScmAcmAaAb
  • M3 : Для довільних ми використовуємо колишній доказ для .m,nNSanAbncmanbncm

Це завершує другий напрямок доказування 1., і ми закінчили.

Ми можемо бачити, що ми сильно використовуємо, що граматика лінійна . Для нелінійних граматик нам потрібні з більш ніж одним змінним параметром (у доказі), який може стати некрасивим. Якщо ми маємо контроль над граматикою, це вчить нас робити це просто. Розглянемо як стримуючий приклад цю граматику, еквівалентну :MiG

SaAbCεAaAbεCcCε

Вправа

Дайте граматику для

L={bkal(bc)manbok,l,m,n,oN,ko,2l=n,m2}

і довести її правильність.

Якщо у вас є проблеми, граматика:

Розглянемо з виробництвамиG=({S,Br,Bl,A,C},{a,b,c},δ,S)

SbSbBlBrBlbBlbABrBrbAbAaAaaCCbcCbcbc

і :Mi

M0={biSbiiN}M1={biBlbooN,io}M2={bkBrbikN,ik}M3={bkaiAa2ibok,o,iN,ko}M4={bkal(bc)iCa2lbok,o,l,iN,ko}M5=L

Що з нелінійними граматиками?

Характерною особливістю класу безконтекстних мов є мова Dyck : по суті, кожна безконтекстна мова може бути виражена як перетин мови Dyck та звичайної мови. На жаль, мова Дайка не є лінійною, тобто ми не можемо дати жодної граматики, яка по суті відповідає такому підходу.

Ми, звичайно, можемо все-таки визначити і зробити доказ, але це, мабуть, буде більш важким із вкладеними індукціями та чим ні. Я знаю один загальний спосіб, який мені може допомогти певною мірою. Ми змінюємо ансац, показуючи, що ми створюємо принаймні всі необхідні слова, і що ми створюємо потрібну кількість слів (на довжину). Формально ми це показуємоMi

  1. ϑ(G)L і
  2. n N|L(G)Tn|=|LTn|для всіх .nN

Таким чином, ми можемо обмежитися "легким" напрямком від початкового ансацу та експлуатаційної структури в мові, ігноруючи надскладні функції, які може мати граматика. Звичайно, немає безкоштовного обіду: ми отримуємо все нове завдання підрахунку слів, які генерує для кожного . На щастя, це часто простежується; см тут і тут для details¹. Ви можете знайти приклади моєї дипломної роботи .n NG nN

Для неоднозначних і безконтекстних граматик, я боюся, ми повернулися до ансацу та думок.


  1. Використовуючи саме цей метод підрахунку, ми отримуємо як бонус, що граматика однозначна. У свою чергу, це також означає, що методика повинна мати збій для неоднозначних граматик, як ми ніколи не можемо довести 2.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.