Indexovaná gramatika - Indexed grammar

Indexované gramatiky jsou zobecněním bezkontextové gramatiky v tomto neterminály jsou vybaveny seznamy vlajkynebo indexové symbolyJazyk produkovaný indexovanou gramatikou se nazývá indexovaný jazyk.

Definice

Moderní definice od Hopcrofta a Ullmana

V současných publikacích následujících po Hopcroftu a Ullmanovi (1979),[2]indexovaná gramatika je formálně definována jako n-tice G = ⟨N,T,F,P,S⟩ Kde

V produkcích i v derivacích indexovaných gramatik řetězec („stack“) σF* indexových symbolů je připojen ke každému neterminálnímu symbolu AN, označeno A[σ].[poznámka 1]Za koncovými symboly nemusí následovat zásobníky indexů σF* a řetězec α ∈ (NT)* neterminálních a koncových symbolů, α[σ] označuje výsledek připojení [σ] každému neterminálu v α; například pokud α rovná se A B C d E s A,dT terminál a B,C,EN tedy neterminální symboly α[σ] označuje A B[σ] C[σ] d E[σ].Pomocí této notace každá produkce v P musí mít formu

  1. A[σ] → α [σ],
  2. A[σ] → B[Fσ] nebo
  3. A[Fσ] → α [σ],

kde A, BN jsou neterminální symboly, FF je index, σF* je řetězec indexových symbolů a α ∈ (NT)* je řetězec neterminálních a koncových symbolů. Někteří autoři píší „..“ místo „σ"pro zásobník indexů v produkčních pravidlech; pak se načte pravidlo typu 1, 2 a 3 A[..]→α[..],   A[..]→B[F..], a A[F..]→α[..], resp.

Derivace jsou podobné jako v a bezkontextová gramatika kromě indexového zásobníku připojeného ke každému neterminálnímu symbolu. Když produkce jako např. A[σ] → B[σ]C[σ], indexový zásobník z A je zkopírován do obou B a CPravidlo navíc může vložit indexový symbol do zásobníku nebo vyskočit jeho indexový symbol „nahoře“ (tj. Úplně vlevo).

Formálně je vztah ⇒ („přímá derivace“) definován na množině (N[F*]∪T)* „sentenciálních formulářů“ takto:

  1. Li A[σ] → α[σ] je výroba typu 1, pak β A[φ] yβ α[φ] ypomocí výše uvedené definice. To znamená, že indexový zásobník na levé straně pravidla φ je zkopírován do každého neterminálu na pravé straně.
  2. Li A[σ] → B[] je tedy výroba typu 2 β A[φ] yβ B[] y. To znamená, že indexový zásobník na pravé straně je získán ze zásobníku na levé straně φ tlačením F na to.
  3. Li A[] → α[σ] je tedy výroba typu 3 β A[] yβ α[φ] y, opět pomocí definice α[σ]. To je první index F je vyskočeno ze zásobníku na levé straně, který je poté distribuován každému neterminálu na pravé straně.

Jako obvykle derivační vztah je definován jako reflexní přechodné uzavření přímé derivace ⇒ jazyk L(G) = { wT*: S w } je sada všech řetězců koncových symbolů odvozitelných od počátečního symbolu.

Původní definice Aho

Historicky byl koncept indexovaných gramatik poprvé představen Alfred Aho (1968)[3] Aho definoval indexovanou gramatiku jako n-tici (N,T,F,P,S) kde

  1. N je konečný abeceda proměnných nebo neterminální symboly
  2. T je konečná abeceda terminálních symbolů
  3. F2N × (NT)* je konečná množina tzv vlajky (každý příznak je sám o sobě souborem tzv indexové produkce)
  4. PN × (NF*T)* je konečná množina produkce
  5. SN je počáteční symbol

Přímé derivace byly následující:

  • Produkce p = (AX1η1Xkηk) z P odpovídá neterminálu AN následuje jeho (případně prázdný) řetězec příznaků ζF*. V souvislosti s, y δ, přes p, odvozuje se od y X1θ1Xkθk δ, kde θi = ηiζ -li Xi byl neterminál a prázdné slovo jinak. Staré vlajky A jsou tedy zkopírován ke každému novému terminálu produkovanému p. Každou takovou produkci lze simulovat příslušnými produkcemi typu 1 a 2 ve formálním formalismu Hopcroft / Ullman.
  • Produkce indexu p = (AX1Xk) ∈ F zápasy Afζ (vlajka F pochází z musí odpovídat prvnímu symbolu následujícímu za terminálem A) a zkopíruje zbývající řetězec indexu ζ každému novému terminálovi: y Afζ δ odvozuje se do y X1θ1Xkθk δ, kde θi je prázdné slovo, když Xi je terminál a ζ když je to terminál. Každá taková výroba odpovídá produkci typu 3 v Hopcroftově / Ullmanově formalismu.

Tento formalismus je např. používá Hayashi (1973, s. 65-66).[4]

Příklady

V praxi mohou hromady indexů počítat a pamatovat si, jaká pravidla byla použita a v jakém pořadí. Například indexované gramatiky mohou popsat kontextový jazyk slovních trojic { www : w ∈ {A,b}* }:

S[σ]S[]T[]A T[σ]
S[σ]S[]T[]b T[σ]
S[σ]T[σ] T[σ] T[σ]      T[]ε

Odvození abbabbabb je tedy

S[]S[G]S[např]S[fgg]T[fgg] T[fgg] T[fgg]A T[např] T[fgg] T[fgg]ab T[G] T[fgg] T[fgg]abb T[] T[fgg] T[fgg]abb T[fgg] T[fgg]...abb abb T[fgg]...abb abb abb.

Jako další příklad lze uvést gramatiku G = ⟨ {S,T,A,B,C}, {A,b,C}, {F,G}, P, S ⟩ Vytváří jazyk { AnbnCn: n ≥ 1}, kde je výrobní sada P skládá se z

S[σ] → T[]A[] → A A[σ]A[] → A
T[σ] → T[]B[] → b B[σ]B[] → b
T[σ] → A[σ] B[σ] C[σ]      C[] → C C[σ]      C[] → C

Příkladem odvození je

S[]T[G]T[fg]A[fg] B[fg] C[fg]aA[G] B[fg] C[fg]aA[G] bB[G] C[fg]aA[G] bB[G] cC[G]aa bB[G] cC[G]aa bb cC[G]aa bb cc.

Oba příklady jazyků nejsou čerpací lemma.

Vlastnosti

Hopcroft a Ullman mají tendenci považovat indexované jazyky za „přirozenou“ třídu, protože jsou generovány několika formalizmy jinými než indexovanými gramatikami, viz.[5]

Hayashi[4] zobecnil čerpací lemma naopak indexované gramatiky. Naopak Gilman[10][11] dává "zmenšující se lemma" pro indexované jazyky.

Lineární indexované gramatiky

Gerald Gazdar definoval druhou třídu, lineární indexované gramatiky (LIG),[14] tím, že bude vyžadováno, aby byl v každé produkci uveden nejvýše jeden neterminál jako příjem zásobníku,[poznámka 2]vzhledem k tomu, že v běžné indexované gramatice dostávají všichni terminálové kopie zásobníku. Formálně je lineární indexovaná gramatika definována podobně jako běžná indexovaná gramatika, ale požadavky na formu produkce jsou upraveny tak, aby:

  1. A[σ] → α[] B[σ] β[],
  2. A[σ] → α[] B[] β[],
  3. A[] → α[] B[σ] β[],

kde A, B, F, σ, α se používají jako výše, a β ∈ (NT)* je řetězec neterminálních a koncových symbolů jako α.[Poznámka 3] Rovněž přímý derivační vztah ⇒ je definován podobně jako výše. Tato nová třída gramatik definuje přísně menší třídu jazyků,[15] který patří k mírně kontextově citlivé třídy.

Jazyk { www : w ∈ {A,b}* } je generovatelný indexovanou gramatikou, ale ne lineární indexovanou gramatikou, zatímco oba { ww : w ∈ {A,b}* } a { An bn Cn : n ≥ 1} jsou generovatelné lineární indexovanou gramatikou.

Pokud jsou přijata původní i upravená produkční pravidla, zůstane jazyková třída indexovanými jazyky.[16]

Příklad

Necháme-li σ označovat libovolnou sbírku symbolů zásobníku, můžeme definovat gramatiku pro jazyk L = {An bn Cn | n ≥ 1 }[poznámka 4] tak jako

S[σ]tak jako[] C
S[σ]T[σ]
T[]T[σ] b
T[]ε

K odvození řetězce abc máme kroky:

S[] ⇒ tak jako[F]Cv[F]Cv[]před naším letopočtemabc

Podobně:

S[] ⇒ tak jako[F]CaaS[ff]ccaaT[ff]ccaaT[F]bccaaT[]bbccaabbcc

Výpočtová síla

Lineárně indexované jazyky jsou podmnožinou indexovaných jazyků, a proto mohou být všechny LIG překódovány jako IG, čímž jsou LIG přísně méně výkonné než IG. Konverze z LIG na IG je relativně jednoduchá.[17] Pravidla LIG obecně vypadají přibližně jako , modulovat push / pop část pravidla přepsání. Symboly a představují řetězce terminálních a / nebo nekoncových znaků a jakýkoli jiný než koncový symbol v obou musí mít podle definice LIG prázdný zásobník. To je samozřejmě v rozporu s tím, jak jsou definovány IG: v IG musí mít non-terminály, jejichž zásobníky nejsou tlačeny nebo vysunuty z, přesně stejný zásobník jako přepsaný non-terminál. Nějak tedy musíme mít dovnitř neterminály a které se navzdory neprázdným zásobníkům chovají, jako by měly prázdné zásobníky.

Zvažte pravidlo jako příklad. Při převodu na IG je náhrada za musí být nějaké který se chová přesně jako bez ohledu na to, co je. Abychom toho dosáhli, můžeme jednoduše mít dvojici pravidel, která platí jakákoli kde není prázdný a vysunuje symboly ze zásobníku. Když je pak zásobník prázdný, lze jej přepsat na .

Obecně to můžeme použít k odvození IG z LIG. Takže například pokud LIG pro jazyk je následující:

Senciální pravidlo zde není pravidlem IG, ale pomocí výše uvedeného algoritmu převodu můžeme definovat nová pravidla pro , změna gramatiky na:

Každé pravidlo nyní odpovídá definici IG, ve které všechny terminály na pravé straně pravidla přepisu obdrží kopii zásobníku přepsaného symbolu. Indexované gramatiky jsou proto schopné popsat všechny jazyky, které mohou lineárně indexované gramatiky popsat.

Vztah k jinému formalizmu

Vijay-Shanker a Weir (1994)[18] ukazuje, že lineární indexované gramatiky, Kombinované kategoriální gramatiky, Stromové gramatiky, a Vedoucí gramatiky všichni definují stejnou třídu řetězcových jazyků. Jejich formální definice lineárních indexovaných gramatik[19] se liší od výše.[je zapotřebí objasnění ]

LIG (a jejich slabě ekvivalenty ) jsou přísně méně expresivní (což znamená, že vytvářejí vlastní podmnožinu) než jazyky generované jinou rodinou slabě ekvivalentního formalismu, mezi něž patří: LCFRS, MCTAG, MCFG a minimalistické gramatiky (MG). Druhá rodina může být (také) analyzována polynomiální čas.[20]

Distribuované indexové gramatiky

Další forma indexovaných gramatik zavedená Staudacherem (1993),[12] je třída gramatik s distribuovaným indexem (DIG). To, co odlišuje DIG od Aho's Indexed Grammars, je šíření indexů. Na rozdíl od Aho IG, které během operace přepisování distribuují celý zásobník symbolů na všechny neterminály, DIG rozdělují stack na subacky a distribuují subacky na vybrané non-terminály.

Obecné schéma pravidel pro binarně distribuující pravidlo DIG je forma

X[F1...FiFi+1...Fn] → α Y[F1...Fi] β Z[Fi+1...Fn] γ

Kde α, β a γ jsou libovolné koncové řetězce. Pro ternárně distribuující řetězec:

X[F1...FiFi+1...FjFj+1...Fn] → α Y[F1...Fi] β Z[Fi+1...Fj] y Ž[Fj+1...Fn] η

A tak dále pro vyšší počet neterminálů na pravé straně pravidla přepsání. Obecně platí, že pokud existují m non-terminály na pravé straně pravidla přepsání je zásobník rozdělen m způsoby a distribuovány mezi nové neterminály. Všimněte si, že existuje speciální případ, kdy je oddíl prázdný, což z pravidla dělá pravidlo LIG. Jazyky distribuovaného indexu jsou proto nadmnožinou jazyků s lineárním indexem.

Viz také

Poznámky

  1. ^ „[“ a „]“ jsou metaznačky, které označují zásobník.
  2. ^ všichni ostatní neterminálové obdrží prázdný stack
  3. ^ A b Aby bylo možné vygenerovat jakýkoli řetězec, je nutné připustit, aby některé produkce neměly na pravé straně žádný neterminální symbol. Gazdar však o této otázce nemluvil.
  4. ^ Srov. správně indexovanou gramatiku pro daný jazyk výše. Poslední pravidlo, viz. T[] → ε, lineární indexované gramatiky neodpovídá Gazdarově definici v užším slova smyslu, srov. [Poznámka 3]

Reference

  1. ^ A b Hopcroft, John E .; Jeffrey D. Ullman (1979). Úvod do teorie automatů, jazyků a výpočtu. Addison-Wesley. ISBN  978-0-201-02988-8.
  2. ^ Hopcroft a Ullman (1979),[1] Oddíl 14.3, s. 389 390. Tato část je ve 2. vydání 2003 vynechána.
  3. ^ Aho, Alfred (1968). "Indexované gramatiky - rozšíření bezkontextových gramatik". Deník ACM. 15 (4): 647–671. doi:10.1145/321479.321488.
  4. ^ A b Hayashi, Takeshi (1973). "Na odvozovacích stromech indexovaných gramatik: Rozšíření uvwxy-teorém". Publikace Výzkumného ústavu pro matematické vědy. 9: 61–92. doi:10,2977 / prims / 1195192738.
  5. ^ Hopcroft a Ullman (1979),[1] Bibliografické poznámky, s. 394-395
  6. ^ Alfred Aho (1969). "Vnořené automaty zásobníku". Deník ACM. 16 (3): 383–406. doi:10.1145/321526.321529.
  7. ^ Michael J. Fischer (1968). „Grammars with Macro-Like Productions“. Proc. 9. Ann. IEEE Symp. o teorii přepínání a automatů (SWAT). str. 131–142. doi:10.1109 / SWAT.1968.12.
  8. ^ Sheila A. Greibach (1970). „Plná náhrada AFL a vnořená náhrada“. Informace a kontrola. 16 (1): 7–35. doi:10.1016 / s0019-9958 (70) 80039-0.
  9. ^ T.S.E. Maibaum (1974). „Obecný přístup k formálním jazykům“. Journal of Computer and System Sciences. 8 (3): 409–439. doi:10.1016 / s0022-0000 (74) 80031-0.
  10. ^ Robert H. Gilman (1996). "Zmenšující se lemma pro indexované jazyky". Teoretická informatika. 163 (1–2): 277–281. arXiv:matematika / 9509205. doi:10.1016/0304-3975(96)00244-7.
  11. ^ Robert H. Gilman (září 1995). "Zmenšující se lemma pro indexované jazyky". arXiv:matematika / 9509205.
  12. ^ A b Staudacher, Peter (1993), Nové hranice nad rámec kontextu: DI-gramatiky (DIG) a DI-automaty. (PDF), str. 358–367, archivovány od originál (PDF) dne 2006-07-19
  13. ^ David J. Weir; Aravind K. Joshi (1988). „Kombinované kategoriální gramatiky: generativní síla a vztah k lineárním bezkontextovým přepisovacím systémům“ (PDF). Proc. 26. setkání doc. Comput. Ling. str. 278–285.
  14. ^ Podle Staudachera (1993, s. 361 vlevo, oddíl 2.2),[12] název „lineární indexované gramatiky“ nebyl použit v článku Gazdar z roku 1988, ale objevil se později, např. ve Weir a Joshi (1988).[13]
  15. ^ Gazdar, Gerald (1988). "Použitelnost indexovaných gramatik na přirozené jazyky". V U. Reyle a C. Rohrer (ed.). Rozbor přirozeného jazyka a lingvistické teorie. Studium lingvistiky a filozofie. 35. D. Reidel Publishing Company. str. 69–94. ISBN  978-1-55608-055-5.
  16. ^ Gazdar (1988), dodatek, s. 89
  17. ^ Gazdar 1988, dodatek, s. 89-91
  18. ^ Vijay-Shanker, K .; Weir, David J. 1994. (1994). „Rovnocennost čtyř rozšíření bezkontextových gramatik“. Teorie matematických systémů. 27 (6): 511–546. doi:10.1007 / bf01191624.
  19. ^ str. 517-518
  20. ^ Johan F.A.K. van Benthem; Alice ter Meulen (2010). Příručka logiky a jazyka (2. vyd.). Elsevier. p. 404. ISBN  978-0-444-53727-0.

externí odkazy