Чи завжди набори "Перед і після" для безконтекстних граматик завжди без контексту?


14

Нехай G - граматика без контексту. Рядок терміналів і нетерміналів з G називається бути сентенціальной формою з G , якщо ви можете отримати його шляхом застосування постановки G нуля або більше разів для початкового символу S . Нехай SF(G) безліч пропозіціональних форм G .

Нехай αSF(G) , і нехай β буде подстрока α - ми називаємо β на фрагмент з SF(G) . Тепер нехай

Before(β)={γ | δ.γβδSF(G)}

і

After(β)={δ | γ.γβδSF(G)} .

Чи існують контекстні мови та після ( β ) ? Що робити, якщо G однозначний? Якщо G неоднозначно, чи описані до ( β ) і після ( β ) однозначною мовою без контексту?Before(β)After(β)GGBefore(β)After(β)

Це продовження мого попереднього запитання , після попередньої спроби полегшити моє запитання не вдалося. Негативна відповідь зробить обширне питання, над яким я працюю дуже важко.

Відповіді:


8

Давайте отримаємо відчуття спочатку та після ( β ) . Розглянемо дерево походження, яке містить β ; Тут "містить" означає, що ви можете відрізати підрядні частини, щоб β було підсловом фронту дерева. Тоді набір до (після) - це всі потенційні фронти частини дерева ліворуч (праворуч) від β :Before(β)After(β)βββ

дерево з наборами до і після
[ джерело ]

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


Тепер до формального доказу. Ми перетворимо граматику як окреслено і використаємо властивості закриття для фільтрації та різання, тобто виконаємо неконструктивне доведення.CFL

Нехай без контекстної граматики. Неважко помітити, що SF ( G ) без контексту; побудуємо G = ( N , T , δ , N S ) так:G=(N,T,δ,S)SF(G)G=(N,T,δ,NS)

  • N={NAAN}
  • T=NT
  • δ={α(A)α(β)Aβδ}{NAAAN}

з для всіх т T і α ( ) = N для всіх в N . Зрозуміло, що L ( G ) = SF ( G ) ; тому відповідне замикання префікса Pref ( SF ( G ) ) і закриття суфікса Suff ( SF ( G ) ) є контекстно-вільним, too¹.α(t)=ttTα(A)=NAaNL(G)=SF(G)Pref(SF(G))Suff(SF(G))

Тепер для будь-яких є L ( β ( N T ) ) і L ( ( N T ) β ) регулярні мови. Оскільки C F L закритий під перетином, а правий / лівий частник звичайними мовами, ми отримуємоβ(NT)L(β(NT))L((NT)β)CFL

Before(β)=(Pref(SF(G))  L((NT)β))/βCFL

і

.After(β)=(Suff(SF(G))  L(β(NT)))βCFL


¹ є закритим під правим (і зліва) фактор ; Pref ( L ) = L / Σ і подібне для префікса виходу Suff закриття суфікса.CFLPref(L)=L/ΣSuff


Я почав писати відповідь, тоді зрозумів, що мій доказ такий самий, як і ваш. Я б сказав так (стислий , щоб відповідати тут): сформувати граматику шляхом додавання нового терміналу А (а метапеременную) для кожного нетермінала A і виробництво A . Тоді сентенційні форми G - це слова, розпізнані G, які складаються із змінних. Це перетин CFG зі звичайною мовою і, отже, регулярний. Набір префіксів CFG - це CFG (візьміть КПК і зробіть кожний стан остаточним). B e f o r e ( γ ) =Г'А^ААА^ГГ є знову CFG. Before(γ)={γγβL(Prefix(G^))}
Жиль "ТАК - перестань бути злим"

1
@ Gilles, три коментарі до цього: 1) виразні форми, як правило, (належним чином) містять мову. 2) "зробити кожну державу остаточною" - це не спрацює; ви також приймете префікси немов. 3) Останній крок "відрізання" суфікса здається складним, щоб отримати суворий характер. : / У вас є жорсткий, але більш компактний доказ, ніж мій?
Рафаель

1) doesn't matter (change G to have or not have a nonterminal for each terminal). 2) Oops, I cut off too much: make every state that can reach a final state final. 3) Do it one terminal b at a time; in the PDA, mark the states from which one can reach a final state by consuming b as final instead. Yes, it would take more expansion to make this rigorous.
Gilles 'SO- stop being evil'

9

Before(β)After(β)L

Before(L,β)={γ | δ.γβδL}

and

After(L,β)={γ | δ.δβγL}

are CF.

Proof? For Before(L,β) construct a non-deterministic finite-state transducer Tβ that scans a string, outputting every input symbol it sees and simultaneously searches non-deterministically for β. Whenever Tβ sees the first symbol of β it forks non-deterministically and ceases outputting symbols until either it finishes seeing β or it sees sees a symbol that deviates from β, stopping in either case. If Tβ sees β in full, it accepts upon stopping, which is the only way it accepts. If it sees a deviation from β, it rejects.

The lemma can be jiggered to handle cases where β could overlap with itself (like abab -- keep looking for β even while in the midst of scanning for a prior β) or appears multiple times (actually, the original non-determinisic forking already handles that).

It's fairly clear that Tβ(L)=Before(L,β), and since the CFLs are closed under finite-state transduction, Before(L,β) is therefore CF.

A similar argument goes for After(L,β), or it could be done with string reversals from Before(L,β) , CFLs also being closed under reversal:

After(L,β)=rev(Before(rev(L),rev(β)))

Actually, now that I see the reversal argument, it would be even easier to start with After(L,β), since the transducer for that is simpler to describe and verify -- it outputs the empty string while looking for a β. When it finds β it forks non-deterministically, one fork continuing to look for further copies of β, the other fork copying all subsequent characters verbatim from input to output, accepting all the while.

What remains is to make this work for sentential forms as well as CFLs. But that is pretty straightforward, since the language of sentential forms of a CFG is itself a CFL. You can show that by replacing every non-terminal X throughout G by say X, declaring X to be a terminal, and adding all productions XX to the grammar.

I'll have to think about your question on unambiguity.

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