প্রসঙ্গমুক্ত ব্যাকরণগুলির জন্য আগে এবং পরে সেটগুলি কি সর্বদা প্রাসঙ্গিক মুক্ত থাকে?


14

যাক G একটি প্রেক্ষাপটে মুক্ত ব্যাকরণ হবে। টার্মিনাল এবং এর nonterminals একটি স্ট্রিং G একটি মনে করা হয় বাক্যগত ফর্ম এর G আপনি এটা এর প্রযোজনার প্রয়োগের দ্বারা পেতে পারেন G শুরুর প্রতীক থেকে শূন্য বা তার বেশি বার S । যাক SF(G) এর বাক্যগত ধরনের সেট হতে G

যাক αSF(G) দিন β একটি সাবস্ট্রিং হতে α - আমরা কল β একটি টুকরা এর SF(G) । এখন যাক

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

এবং

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

হয় Before(β) এবং After(β) প্রসঙ্গ-মুক্ত ভাষায়? কি হবে যদি G দ্ব্যর্থহীন হয়? তাহলে G দ্ব্যর্থহীন নয়, হয় Before(β) এবং After(β) এছাড়াও একটি দ্ব্যর্থহীন প্রসঙ্গ-মুক্ত ভাষা দ্বারা বর্ণনীয়?

এটি আমার আগের প্রশ্নের উত্তর , আমার প্রশ্নের উত্তর সহজতর করার চেষ্টা করার পরে ব্যর্থ হয়েছে। একটি নেতিবাচক উত্তর এমন জটিল প্রশ্ন তৈরি করবে যা আমি উত্তর দেওয়ার জন্য খুব পরিশ্রম করছি।

উত্তর:


8

আসুন এবং পরে ( β ) প্রথমে অনুভূতি পেতে পারি । একটি শিক্ষাদীক্ষা গাছ যা ধারণ করে বিবেচনা করুন β ; "থাকে" এর অর্থ এখানে আপনি সাবট্রিজ কেটে ফেলতে পারেন যাতে β গাছের সামনের একটি সাব-ওয়ার্ড। তারপরে, পূর্বের (পরে) সেটটি β এর বাম অংশের (ডানদিকে) সমস্ত সম্ভাব্য ফ্রন্ট রয়েছে :Before(β)After(β)βββ

tree with before and after sets
[ উত্স ]

সুতরাং আমাদের গাছের অনুভূমিকভাবে রেখাযুক্ত (উল্লম্ব রেখাযুক্ত) অংশের জন্য ব্যাকরণ তৈরি করতে হবে। এটি যথেষ্ট সহজ বলে মনে হচ্ছে যে ইতিমধ্যে পুরো গাছের জন্য আমাদের একটি ব্যাকরণ রয়েছে; আমরা শুধু নিশ্চিন্ত হন যে সমস্ত বাক্যগত ফর্ম শব্দ (বর্ণমালার পরিবর্তন), ফিল্টার দূরে ঐ যে থাকে না হয় করতে হবে (যে একটি নিয়মিত সম্পত্তি হিসাবে β সংশোধন করা হয়েছে) এবং পরে (আগে) সবকিছু দূরে কাটা β সহ β । এই কাটিয়াটিও সম্ভব হওয়া উচিত।ββββ


এখন একটি আনুষ্ঠানিক প্রমাণ। আমরা ব্যাকরণটিকে রূপরেখার হিসাবে রূপান্তর করব এবং সি এফ এল এর ক্লোজার বৈশিষ্ট্যগুলি ব্যবহার করবCFL করব এবং ফিল্টারিং এবং কাটিয়াটি করতে করব, অর্থাত আমরা একটি গঠনমূলক প্রমাণ করি না।

আসুন একটি প্রসঙ্গ-মুক্ত ব্যাকরণ। এটি দেখতে সহজ যে এসএফ ( জি ) প্রসঙ্গমুক্ত ; গঠন করা জি ' = ( এন ' , টি ' , δ ' , এন এস ) ভালো:G=(N,T,δ,S)SF(G)G=(N,T,δ,NS)

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

সঙ্গে জন্য সব টন টি এবং α ( একটি ) = এন একজন সবার জন্য একটি এন । এটি পরিষ্কার যে এল ( জি ) = এসএফ ( জি ) ; সুতরাং সম্পর্কিত উপসর্গ ক্লোজিং প্রিফ ( এসএফ ( জি ) ) এবং প্রত্যয় বন্ধের সাফ ( এসএফ ( জি ) ) প্রসঙ্গ-মুক্ত, এছাড়াও ¹α(t)=ttTα(A)=NAaNL(G)=SF(G)Pref(SF(G))Suff(SF(G))

এখন, কোন আছে এল ( β ( এন টি ) * ) এবং এল ( ( এন টি ) * β ) নিয়মিত ভাষা। যেহেতু সি এফ এল নিয়মিত ভাষাগুলির সাথে ছেদকেন্দ্রের নীচে এবং ডান / বাম অংশটি বন্ধ রয়েছে , আমরা পাইβ(NT)L(β(NT))L((NT)β)CFL

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

and

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


CFL is closed under right (and left) quotient; Pref(L)=L/Σ and similar for Suff yield prefix resp. suffix closure.


GA^AAA^G are the words recognized by G that consist of metavariables. This is the intersection of a CFG with a regular language and thus is regular. The prefix set of a CFG is a CFG (take a PDA and make every state final). Before(γ)={γγβL(Prefix(G^))} is again a CFG.
Gilles 'SO- stop being evil'

1
@Gilles, three comments on that: 1) the sentential forms typically (properly) contain the language. 2) "make every state final" -- that won't work; you'll accept prefixes of non-words, too. 3) The last step of "cutting off" a suffix seems to be tricky to get rigorous. :/ Do you have a rigorous but more compact proof than mine?
Raphael

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

Yes, Before(β) and After(β) are context-free languages. Here's how I would prove it. First, a lemma (which is the crux). If L is CF then:

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.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.