Welkom op de Nederland Computer Kennisnetwerk!  
 
Zoeken computer kennis
Home Hardware Netwerken Programmering Software Computerstoring Besturingssysteem
Computer Kennis >> Programmering >> Computer Programming Languages >> Content
Hoe kan je aantonen dat een taal niet contextvrij is?
Er zijn verschillende manieren om aan te tonen dat een taal niet contextvrij is. De meest gebruikelijke methoden zijn gebaseerd op het bewijzen dat de taal eigenschappen schendt die inherent zijn aan contextvrije talen (CFL's):

1. Pomplemma voor contextvrije talen: Dit is de meest gebruikte techniek. Het pomplemma stelt dat er voor elke CFL L een constante *p* (de pomplengte) bestaat, zodat elke string *w* in L met lengte |w| ≥ *p* kan geschreven worden als *uvxyz*, waarbij:

* |vxy| ≤ *p*

* |vy| ≥ 1

* *uv i xy i z* ∈ L voor alle *i* ≥ 0

Om te bewijzen dat een taal *niet* contextvrij is, gebruik je het pomplemma:

1. Stel: Neem ter wille van de tegenspraak aan dat de taal *L* contextvrij is.

2. Kies een tekenreeks: Selecteer een string *w* in *L* met een lengte die minstens gelijk is aan de pomplengte *p* (je zult vaak strategisch *w* moeten kiezen).

3. Pomp de string: Probeer *w* te ontbinden in *uvxyz*, dat voldoet aan de voorwaarden van het lemma.

4. Zoek een tegenstrijdigheid: Laat dat zien voor sommige *i*, *uv i xy i z* is *niet* in *L*. Dit is in tegenspraak met het pompende lemma, wat bewijst dat de oorspronkelijke aanname (dat *L* contextvrij is) onjuist moet zijn.

Voorbeeld: Laten we eens kijken naar de taal L ={a n b n c n | n ≥ 0}. Met behulp van het pomplemma:

1. Stel: L is contextvrij.

2. Kies een tekenreeks: Stel *w* =a p b p c p (waarbij *p* de pomplengte is).

3. Pomp de string: Hoe je *w* ook ontbindt in *uvxyz*, pompen zal onvermijdelijk de a n schenden b n c n structuur. Als *vxy* bijvoorbeeld alleen 'a's bevat, zal het pompen het aantal 'a's verhogen zonder het aantal 'b's en 'c's te vergroten. Soortgelijke problemen doen zich voor als *vxy* alleen 'b's of 'c's bevat, of een mengsel dat niet de gelijke verhouding handhaaft.

4. Tegenstrijdigheid: Daarom bestaat er een *i* zodat *uv i xy i z* ∉ L, wat in tegenspraak is met het pomplemma. L is dus niet contextvrij.

2. Sluitingseigenschappen: Contextvrije talen worden onder bepaalde bewerkingen gesloten (vereniging, aaneenschakeling, Kleene-ster, kruising met een reguliere taal). Als je kunt aantonen dat een taal *niet* gesloten is onder een van deze bewerkingen, kan deze niet contextvrij zijn. Deze methode wordt minder vaak gebruikt voor direct bewijs dan het pomplemma, maar kan nuttig zijn in combinatie met andere technieken.

3. Ogdens lemma: Dit is een krachtigere versie van het pomplemma, waarmee u gemarkeerde posities binnen de string *w* kunt kiezen. Het is nuttig voor talen waarin het eenvoudige pomplemma moeilijk toe te passen is.

4. Stelling van Parikh: Deze stelling heeft betrekking op het aantal keren dat elk symbool voorkomt in strings van een taal. Hoewel het niet direct wordt gebruikt om te bewijzen dat een taal *niet* contextvrij is, kan het soms helpen aantonen dat de structuur van een taal onverenigbaar is met de beperkingen die door CFL's worden opgelegd. Het wordt vaak gebruikt in combinatie met andere technieken.

Samenvattend is het pomplemma de meest gebruikelijke en over het algemeen effectieve methode om te bewijzen dat een taal niet contextvrij is. De keuze van de methode hangt echter af van de structuur van de specifieke taal en het gemak waarmee elke techniek kan worden toegepast. Ogden's Lemma biedt meer kracht wanneer dat nodig is, en sluitingseigenschappen kunnen aanvullend bewijs leveren.

Previous: Next:
  Computer Programming Languages
·Hoe Hack 
·Hoe je leden Rechtvaardigen Me…
·Kun je Have VS Kleuren voor SQ…
·Hoe een wetsvoorstel Verslag o…
·Afmelden bij van Webdav 
·Hoe om te controleren of een v…
·Netto Architectuur Certificeri…
·Wat is Data Persistence ? 
·Welke computertaal gebruikt 10…
  Related Articles
Waarom gebruiken we functies bij het pro…
Welke rol speelt een tolk bij het progra…
Wat is de rol van een compiler bij compu…
Wat is het doel van een voorwaardelijke …
Wat is de hiërarchie van programmeertal…
Wat is de analoge definitie in de inform…
Wat is redex en hoe verhoudt dit zich to…
Wat is assembleertaal en hoe wordt het g…
Wat is assemblagecode en hoe wordt deze …
  Programmering Articles
·Tutorial op Enterprise Java Bean 
·Hoe te Offset Assembler Bereken 
·Hoe maak je een string te converteren na…
·Is er een Java die uw computer verandert…
·Hoe maak ik een applet te bouwen met Ecl…
·Hoe maak je een Letter bewerken in Acajo…
·Toegang tot een Query List Box 
·Hoe maak je een eenvoudige rekenmachine …
·Hoe naar Place Tekst Over een beeldbesta…
Copyright © Computer Kennis https://www.nldit.com