Prefixgrammatica

Uit testwiki
Versie door imported>ErikvanB op 2 sep 2015 om 04:09 (tenminste dat lijkt me - verderop staat eveneens "De taal <math>L(G)</math> van een prefixgrammatica")
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
Naar navigatie springen Naar zoeken springen

In de theoretische informatica is een prefixgrammatica een formele grammatica waarin de productieregels alleen aan het begin van het her te schrijven woord mogen worden toegepast; er worden dus alleen prefixen herschreven. Prefixgrammatica's genereren precies de klasse van reguliere talen.

Definitie

Een prefixgrammatica is een structuur G=(Σ,S,P), waarbij

  • Σ een eindige verzameling symbolen is, een alfabet genoemd;
  • S een eindige verzameling basiswoorden is; en
  • P een eindige verzameling productieregels van de vorm αβ is, waarbij α en β woorden zijn.

Een woord γ kan tot een woord γ herschreven worden, als er een regel αβP en een woord ω bestaan, zodat γ=αω en γ=βω. De taal L(G) van een prefixgrammatica G bestaat uit alle basiswoorden van G en uit alle woorden die in een of meer herschrijfstappen uit een van de basiswoorden kunnen worden afgeleid.

Prefixgrammatica's verschillen op verschillende punten van normale grammatica's:

  • In prefixgrammatica's zijn de symbolen niet onderverdeeld in terminaalsymbolen en variabelen. Dat betekent dat alle woorden die door een prefixgrammatica kunnen worden afgeleid tot de taal van de grammatica behoren, en niet alleen die woorden die alleen uit terminaalsymbolen bestaan.
  • In normale grammatica's wordt meestal verboden dat de linker kant van een regel het lege woord is. Bij prefixgrammatica's is dit toegestaan.
  • In prefixgrammatica's mag alleen aan het begin van het woord worden herschreven. Bij normale grammatica's mag een regel op elke plek in het woord worden toegepast.

De taal van een prefixgrammatica

De taal L(G) van een prefixgrammatica is altijd regulier. Andersom bestaat er voor elke reguliere taal een prefixgrammatica die haar genereert. Prefixgrammatica's genereren dus precies de klasse van reguliere talen.

Aangezien de stapel van een stapelautomaat in feite een woord is dat slechts aan één kant veranderd kan worden, volgt uit dit resultaat dat de taal van mogelijke stapelinhouden van een stapelautomaat regulier is, hoewel stapelautomaten contextvrije talen kunnen accepteren.

Voorbeeld

Laat de prefixgrammatica G=(Σ,S,P) gegeven zijn, met:

  • Σ={0,1}
  • S={01}
  • P={0001,01011}

Deze prefixgrammatica genereert dezelfde taal als de reguliere expressie 0(01)*11*. Het woord 0010111 kan bijvoorbeeld als volgt worden gegenereerd:

01011001110010111

Bronnen

  • Michael Frazier, C. David Page Jr. Prefix grammars: An alternative characterization of the regular languages. Information Processing Letters 51, 1994.