Vzorový jazyk (formální jazyky) - Pattern language (formal languages)

v teoretická informatika, a vzorový jazyk je formální jazyk které lze definovat jako množinu všech konkrétních instancí a tětiva konstant a proměnných. Vzorové jazyky představil Dana Angluin v kontextu strojové učení.[1]

Definice

Vzhledem k konečné sadě Σ konstantní symboly a spočetná sada X z proměnná symboly nesouvislé od Σ, a vzor je konečný neprázdný tětiva symbolů z Σ∪X.v délka vzoru p, označeno |p|, je pouze počet jeho symbolů. Sada všech vzorků obsahující přesně n odlišné proměnné (každá se může vyskytnout několikrát) jsou označeny Pn, soubor všech vzorů vůbec P*.A substituce je mapování F: P*P* takhle[poznámka 1]

Li p = F(q) pro některé vzory p, qP* a nějaké substituce F, pak p se říká, že je méně obecné než q, psaný pq; v takovém případě nutně |p| ≥ |q| drží. Pro vzor p, své Jazyk je definována jako sada všech méně obecných vzorů, které jsou vytvořeny pouze z konstant, formálně: L(p) = { s ∈ Σ+ : sp }, kde Σ+ označuje množinu všech konečných neprázdných řetězců symbolů z Σ.

Například pomocí konstant Σ = {0, 1} a proměnných X = { X, y, z, ...}, vzor 0X10xx1 ∈P1 a xxyP2 má délku 7, respektive 3. Instance bývalého vzoru je 00z100z0z1 a 01z101z1z1, získá se substitucí, která mapuje X na 0z a do 1z, respektive každý další symbol sám pro sebe. Oba 00z100z0z1 a 01z101z1z1 jsou také instance xxy. Ve skutečnosti, L(0X10xx1) je podmnožinou L(xxy). Jazyk vzoru X0 a X1 je sada všech bitových řetězců, které označují sudé a liché binární číslo, resp. Jazyk xx je sada všech řetězců, které lze získat zřetězením bitového řetězce se sebou, např. 00, 11, 0101, 1010, 11101110 ∈ L(xx).

Vlastnosti

NP-tvrdost členství ve vzorovém jazyce, podle snížení z NP-kompletní Problém 1 v 3 SAT: Vzhledem k CNF z m doložky s n proměnné, vzor délky 3n+4m+1 s 2n proměnné a řetězec délky 4n + 5m+1 lze zkonstruovat podle obrázku (m= 3 a n= 4 v příkladu). Velkými písmeny proměnné ve vzoru odpovídají negovaným proměnným v CNF. Řetězec odpovídá vzoru právě tehdy, když existuje přiřazení, takže v každé klauzuli je přesně jeden literál 1 (což znamená „skutečný"v CNF). V levé části, např." 0wW0 "se shoduje s" 01110 ", pouze pokud jeden z w,Ž se shoduje s „1“ (odpovídá „Nepravdivé„) a další„ 11 “(odpovídá„skutečný"), tj. pokud w odpovídá negaci Ž. V pravé části, např. „0xYZ0 "se shoduje s" 011110 ", pouze pokud přesně jeden z X,Y,Z odpovídá „11“ a ostatním „1“, tj. pokud přesně jeden literál odpovídá „skutečný".

Problém rozhodování, zda sL(p) pro libovolný řetězec s ∈ Σ+ a vzor p je NP-kompletní (viz obrázek), a tedy i problém rozhodování pq pro libovolné vzory p, q.[2]

Třída vzorových jazyků je není zavřeno pod ...

  • unie: např. pro Σ = {0,1} jako výše, L(01)∪L(10) není vzorový jazyk;
  • doplněk: Σ+ \ L(0) není vzorový jazyk;
  • průsečík: L(X0y)∩L(X1y) není vzorový jazyk;
  • Kleene plus: L(0)+ není vzorový jazyk;
  • homomorfismus: F(L(X)) = L(0)+ není vzorový jazyk, za předpokladu F(0) = 0 = F(1);
  • inverzní homomorfismus: F−1(111) = {01, 10, 000} není předpokládaný vzorový jazyk F(0) = 1 a F(1) = 11.

Třída vzorových jazyků je Zavřeno pod ...

  • zřetězení: L(p)⋅L(q) = L(pq);
  • obrácení: L(p)rev = L(prev).[3]

Li p, qP1 jsou vzory obsahující přesně jednu proměnnou pq kdyby a jen kdyby L(p) ⊆ L(q); stejná rovnocennost platí pro vzory stejné délky.[4]U vzorů různé délky se výše příklad p = 0X10xx1 a q = xxy ukázat to L(p) ⊆ L(q) může držet bez naznačení pqJakékoli dva vzory p a q, libovolných délek, generují stejný jazyk tehdy a jen tehdy, pokud jsou shodné s konzistentním přejmenováním proměnné.[5]Každý vzor p je společné zobecnění všech řetězců v jeho generovaném jazyce L(p), modulo asociativita (⋅).

Umístění v Chomského hierarchii

V rafinovaném Chomského hierarchie, třída vzorových jazyků je správná nadtřída a podtřída singletonu[poznámka 2] a indexované jazyky, ale neporovnatelné s jazykovými třídami mezi nimi; kvůli druhému není třída vzorového jazyka v tabulce výslovně uvedena níže.

Třída vzorových jazyků je nesrovnatelná s třídou konečné jazyky, s třídou běžné jazyky a se třídou bezkontextové jazyky:

  • vzorový jazyk L(xx) není bezkontextový (tedy ani.) pravidelný ani konečný ) v důsledku čerpací lemma;
  • konečný (tedy také běžný a bezkontextový) jazyk {01, 10} není vzorový jazyk.

Každý singletonový jazyk je triviálně vzorovým jazykem generovaným vzorem bez proměnných.

Každý vzorový jazyk může být vytvořen pomocí indexovaná gramatika: Například pomocí Σ = { A, b, C } a X = { X, y },vzor A X b y C X A y b je generován gramatikou s neterminálními symboly N = { SX, Sy, S } ∪ X, terminálové symboly T = Σ, indexové symboly F = { AX, bX, CX, Ay, by, Cy }, počáteční symbol SXa následující pravidla produkce:

SX[σ]SX[AX σ]| SX[bX σ]| SX[CX σ]| Sy[σ]
Sy[σ]Sy[Ay σ]| Sy[by σ]| Sy[Cy σ]| S[σ]
S[σ]A X[σ] b y[σ] C X[σ] A y[σ] b
X[AX σ]AX[σ]y[AX σ]y[σ]
X[bX σ]bX[σ]y[bX σ]y[σ]
X[CX σ]CX[σ]y[CX σ]y[σ]
X[Ay σ]X[σ]y[Ay σ]Ay[σ]
X[by σ]X[σ]y[by σ]by[σ]
X[Cy σ]X[σ]y[Cy σ]Cy[σ]
X[]→ εy[]→ ε

Příklad odvození je:

SX[]  ⇒   SX[bX]  ⇒   SX[AX bX]  ⇒   Sy[AX bX]  ⇒   Sy[Cy AX bX]  ⇒   S[Cy AX bX]  ⇒   A X[Cy AX bX] b y[Cy AX bX] C X[Cy AX bX] A y[Cy AX bX] b  ⇒   A X[AX bX] b y[Cy AX bX] C X[Cy AX bX] A y[Cy AX bX] b  ⇒   A A X[bX] b y[Cy AX bX] C X[Cy AX bX] A y[Cy AX bX] b  ⇒   A ab X[] b y[Cy AX bX] C X[Cy AX bX] A y[Cy AX bX] b  ⇒   A ab b y[Cy AX bX] C X[Cy AX bX] A y[Cy AX bX] b  ⇒ ... ⇒   A ab b C y[] C X[Cy AX bX] A y[Cy AX bX] b  ⇒   A ab b C C X[Cy AX bX] A y[Cy AX bX] b  ⇒ ... ⇒   A ab b C C ab X[] A y[Cy AX bX] b  ⇒   A ab b C C ab A y[Cy AX bX] b  ⇒ ... ⇒   A ab b C C ab A C y[] b  ⇒   A ab b C C ab A C b

Podobným způsobem lze sestavit indexovou gramatiku z jakéhokoli vzoru.

Vzory učení

Vzhledem k ukázkové sadě S řetězců, vzor p je nazýván popisný z S -li SL(p), ale ne SL(q) ⊂ L(p) pro jakýkoli jiný vzor q.

Vzhledem k jakékoli vzorové sadě S, popisný vzor pro S lze vypočítat pomocí

  • výčet všech vzorů (až po proměnné přejmenování) ne delší než nejkratší řetězec v S,
  • výběr z nich vzory, které generují nadmnožinu S,
  • výběr z nich vzory maximální délky, a
  • výběr z nich vzor, ​​který je minimální vzhledem k ≤.[6]

Na základě tohoto algoritmu může být třída vzorových jazyků v limitu z pozitivních příkladů.[7]

Poznámky

  1. ^ Angluinův pojem substituce se liší od obvyklého pojmu substituce řetězce.
  2. ^ tj. jazyky skládající se z jednoho řetězce; odpovídají lineární gramatiky

Reference

  1. ^ Dana Angluin (1980). Msgstr "Hledání vzorů společných pro sadu řetězců". Journal of Computer and System Sciences. 21: 46–62. doi:10.1016/0022-0000(80)90041-0.
  2. ^ Věta 3.6, str.50; Dodatek 3.7, s. 52
  3. ^ Věta 3.10, s. 53
  4. ^ Lemma 3,9, str. 52; Důsledek 3.4, str.50
  5. ^ Věta 3.5, str.50
  6. ^ Věta 4.1, s. 53
  7. ^ Dana Angluin (1980). „Induktivní odvození formálních jazyků z pozitivních dat“ (PDF). Informace a kontrola. 45 (2): 117–135. doi:10.1016 / s0019-9958 (80) 90285-5.; zde: Příklad 1, s. 125