vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

22
Vyvážená dekompozícia Vyvážená dekompozícia nedeterministického nedeterministického automatu pre regulárne automatu pre regulárne výrazy výrazy Diplomová práca Diplomová práca Prírodovedecká fakulta Univerzita Pavla Jozefa Šafárika v Košiciach Ústav Informatiky Košice 2005 Bc. Karol Seman

Upload: herne

Post on 11-Jan-2016

35 views

Category:

Documents


0 download

DESCRIPTION

Prírodovedecká fakulta Univerzita Pavla Jozefa Šafárika v Košiciach Ústav Informatiky. Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy. Diplomová práca. Košice 200 5 Bc. Karol Seman. Cie ľ práce. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

Vyvážená dekompozícia Vyvážená dekompozícia nedeterministického automatu pre nedeterministického automatu pre

regulárne výrazyregulárne výrazy

Diplomová prácaDiplomová práca

Prírodovedecká fakultaUniverzita Pavla Jozefa Šafárika v Košiciach

Ústav Informatiky

Košice 2005 Bc. Karol Seman

Page 2: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

CieCieľ práceľ práce

Analyzovať známe algoritmy a konštrukcie Analyzovať známe algoritmy a konštrukcie pre transformáciu regulárnych výrazov na pre transformáciu regulárnych výrazov na nedeterministické konečnostavové nedeterministické konečnostavové automaty s dôrazom na ich popisnú automaty s dôrazom na ich popisnú zložitosť. zložitosť.

Navrhnúť a implementovať algoritmus pre Navrhnúť a implementovať algoritmus pre konštrukciu nedeterministického konštrukciu nedeterministického konečnostavového automatu s konečnostavového automatu s bezepsilonovými prechodmi ako aj bezepsilonovými prechodmi ako aj zodpovedajúceho binárneho stromu. zodpovedajúceho binárneho stromu.

Navrhnúť a implementovať algoritmus pre Navrhnúť a implementovať algoritmus pre vytváranie tabuľky separačných bodov.vytváranie tabuľky separačných bodov.

Page 3: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

Rozdelenie prRozdelenie práceáce

Teoretický základTeoretický základ Analýza známych metódAnalýza známych metód

εε-NFA metóda-NFA metóda Pozičný automatPozičný automat Čiastočné odvodzovanieČiastočné odvodzovanie Spoločná množina nasledovníkovSpoločná množina nasledovníkov Stromová dekompozícia a Stromová dekompozícia a εε-NFA-NFA

Získanie separačného boduZískanie separačného bodu Popis, analýza a implementácia algoritPopis, analýza a implementácia algorit

movmov

Page 4: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

RegulRegulárny výrazárny výrazRegulárny výrazRegulárny výraz nad abecedou nad abecedou ∑∑ je definovaný ako konečný výraz je definovaný ako konečný výraz zložený zo zložený zo

symbolov z symbolov z ∑∑ a špeciálnych symbolov a špeciálnych symbolov (prázdna množina) a (prázdna množina) a εε (prázdny (prázdny reťazec) použitím binárnych operácií reťazec) použitím binárnych operácií ++ (zjednotenie) a (zjednotenie) a .. (zreťazenie) (zreťazenie)

a unárneho operátora a unárneho operátora ** (iterácia). (iterácia).

Binárny stromBinárny stromV strome je každý binárny operátor reprezentovaný vnútorným vrcholom V strome je každý binárny operátor reprezentovaný vnútorným vrcholom s dvoma synmi odpovedajúcimi svojim dvom podvýrazom, každý unárny s dvoma synmi odpovedajúcimi svojim dvom podvýrazom, každý unárny

operátor vnútorným vrcholom s jednym synom pre svoj jediný podvýraz a každý operátor vnútorným vrcholom s jednym synom pre svoj jediný podvýraz a každý výskyt znaku abecedy alebo špeciálneho znaku výskyt znaku abecedy alebo špeciálneho znaku alebo alebo εε reprezentovaný reprezentovaný

listom. listom.

Nedeterministický konečnostavový automatNedeterministický konečnostavový automatPätica Pätica M = (Q, ∑, ∆, qM = (Q, ∑, ∆, qss , F) , F), kde , kde QQ je konečná množina stavov, je konečná množina stavov, ∑∑ je konečná je konečná

vstupná abeceda, vstupná abeceda, ∆ ∆ Q Q (∑ (∑ {ε}) {ε}) Q Q je množina prechodov, je množina prechodov, qqss Q Q je je inicializačný stav a inicializačný stav a F F Q Q je podmnožina konečných stavov. Tu ε znamená je podmnožina konečných stavov. Tu ε znamená

prázdny reťazec. prázdny reťazec.

Page 5: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

Lemma 1.3.Lemma 1.3. Označme Označme qq ako konečný binárny strom s každým vrcholom označeným ako ako konečný binárny strom s každým vrcholom označeným ako „„navštívenýnavštívený“ alebo „“ alebo „ignorovanýignorovaný“. Celkový počet listov označených ako „navštívený“ je “. Celkový počet listov označených ako „navštívený“ je kk

≥ 2. Potom existuje uzol ≥ 2. Potom existuje uzol xx taký, že počet navštívených listov v podstrome pod uzlom taký, že počet navštívených listov v podstrome pod uzlom xx je je najviac 2/3 · najviac 2/3 · kk, ale nie menej ako 1/3 · , ale nie menej ako 1/3 · kk..

Stromová dekompozíciaStromová dekompozícia

Definícia 3.1. Definícia 3.1. Nech Nech tγ tγ je stromová reprezentácia je stromová reprezentácia γγ. Vyvážená stromová dekompozícia . Vyvážená stromová dekompozícia tγtγje získaná takto:je získaná takto:

1.1. Vystrihneme podstrom Vystrihneme podstrom tt1 (t.j. jeden uzol a všetkých jeho nasledovníkov) tak,1 (t.j. jeden uzol a všetkých jeho nasledovníkov) tak, že má že má ≥ ⅓ ≥ ⅓ a ≤ ⅔ pozícií a ≤ ⅔ pozícií tt. Nech . Nech tt2 je zvyšok po vybratí 2 je zvyšok po vybratí tt1, viď 1, viď ObrázokObrázok..2. 2. Použijeme ten istý postup na Použijeme ten istý postup na tt1, 1, tt2 ak obsahujú viac ako 1 pozíciu 2 ak obsahujú viac ako 1 pozíciu γγ..

Výška dekompozície (počet podstromov) je najviac log3/2 n, kde n je veľkosť γ.

Page 6: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

Zníženie kvadratickej veľkostiZníženie kvadratickej veľkosti Zavedenie separačných bodovZavedenie separačných bodov

Kvadratická veľkosť v metóde ε-NFA je generovaná vtedy, keď pre každý znakový prechod a každú sekvenciu ε prechodov je uvedený nový znakový prechod, ktorý nim predchádza. Vo všeobecnosti je to zbytočné, pretože potrebujeme len toľko nových prechodov, že všade kde v ε-NFA sú dva znakové

prechody medzi ktorými je ľubovoľný počet ε prechodov nahradíme dvomi znakovými prechodmi v novom automate, ktoré nasledujú hneď po sebe. To čo potrebujeme je jedinečný stav tam, kde

„sa môže stretnúť veľa prechodov“. Teda, pre každý znakový prechod v ε automate potrebujeme iba niekoľko kópií v novom automate získaných z, respektíve končiacich v tých separačných stavoch,

ktoré sú pomenované v [7].

Čiže cieľ: Čiže cieľ: nájsť separačný stav pre každé dva znakové prechody spojené postupnosťou nájsť separačný stav pre každé dva znakové prechody spojené postupnosťou εε prechodov prechodov

Výpočet založený na stromovej dekompozíciiVýpočet založený na stromovej dekompozícii

Page 7: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

Dekompozícia ε-automatu.

exβ v prípade, že počiatočný bod je v aktuálnej oblasti, inak enβ.

Keď sú prechody x a y spojené postupnosťou Keď sú prechody x a y spojené postupnosťou εε prechodov, sú oddelené v dekompozícii vystrihnutím prechodov, sú oddelené v dekompozícii vystrihnutím podautomatu (vyvážená stromová dekompozícia vyvolá dekompozíciu automatu)podautomatu (vyvážená stromová dekompozícia vyvolá dekompozíciu automatu)

Page 8: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

Definícia 6.3.Definícia 6.3.Nech Nech xx, , yy sú dva bez- sú dva bez-εε-ové prechody automatu zostrojeného vo -ové prechody automatu zostrojeného vo Vete 5.2..Vete 5.2.. Oddeľujúci bod medzi Oddeľujúci bod medzi xx a  a yy je konečný kontrolný stav je konečný kontrolný stav

sepxsepx, , yy QQ získaný nasledujúcim algoritmom: získaný nasledujúcim algoritmom:

Ak hrany Ak hrany xx, , yy nie sú spojené cestou nie sú spojené cestou xx yy v  v MM, hodnota , hodnota sepxsepx, , yy nie je definovaná nie je definovaná (Nikdy nepočítame (Nikdy nepočítame sepxsepx, , yy pre takýto pár pre takýto pár hrán).Tu „hrán).Tu „xx yy“ reprezentuje cestu začínajúcu na hrane “ reprezentuje cestu začínajúcu na hrane xx a končiacu na hrane a končiacu na hrane yy s ľubovoľným počtom s ľubovoľným počtom εε prechodov medzi nimi prechodov medzi nimi (to zahŕňa aj 0).(to zahŕňa aj 0).

Takže predpokladajme, že existuje cesta Takže predpokladajme, že existuje cesta xx yy v  v MM. Potom spustíme nasledujúce opakovanie, uschovávanie cesty aktuálnej oblasti . Potom spustíme nasledujúce opakovanie, uschovávanie cesty aktuálnej oblasti qq. Spočiatku, . Spočiatku, qq je úplný graf je úplný graf MM, t.j. , t.j. qq := := - - 1, 1, , , ll, kde , kde = = - originálny regulárny výraz - a - originálny regulárny výraz - a 1, 1, , , ll = = - prázdny zoznam. - prázdny zoznam.

Nech Nech qq = = - - 1, 1, , , ll je aktuálna oblasť. Použitím procedúry odvodenej z  je aktuálna oblasť. Použitím procedúry odvodenej z Lemmy 6.2.Lemmy 6.2. založenej na založenej na Lemme 1.3.Lemme 1.3. nájdeme nájdeme ’ ’ rozdeľujúce rozdeľujúce qq na dva podregióny na dva podregióny qq1 = 1 = ’ - ’ - ‘1, ‘1, , , ‘‘ll‘ a ‘ a qq2 = 2 = - - ‘, ‘, ‘‘1, ‘‘1, , , ‘‘‘‘ll‘‘ ‘‘ s rovnovážnym počtom bez-s rovnovážnym počtom bez-εε-ových -ových prechodovprechodov.. Teda, počet bez- Teda, počet bez-εε-ových prechodov v každom podregióne je medzi 1/3 -ových prechodov v každom podregióne je medzi 1/3 kk až 2/3 až 2/3 kk, pričom počet všetkých , pričom počet všetkých prechodov vo vnútri prechodov vo vnútri qq je je kk ≥ 2. ≥ 2.

Teraz použijeme dosiahnuteľnosť Teraz použijeme dosiahnuteľnosť yy z  z xx ako kritérium vetvenia. Teda, zistíme kde cesta ako kritérium vetvenia. Teda, zistíme kde cesta xx yy pôjde pôjde..Ak existuje kompletná cesta Ak existuje kompletná cesta xx yy nachádzajúca sa vo vnútri nachádzajúca sa vo vnútri qq1, t.j. vo vnútri 1, t.j. vo vnútri MM’, potom sa ’, potom sa qq1 stane novou aktuálnou 1 stane novou aktuálnou

oblasťou. Teda oblasťou. Teda qq := := qq1 (Okrem iného z toho vyplýva, že 1 (Okrem iného z toho vyplýva, že xx aj aj yy padnú dovnútra padnú dovnútra qq1).1).Ak existuje kompletná cesta Ak existuje kompletná cesta xx yy nachádzajúca sa vo vnútri nachádzajúca sa vo vnútri qq2, t.j. mimo 2, t.j. mimo MM’, potom sa ’, potom sa qq2 stane novou aktuálnou oblasťou. 2 stane novou aktuálnou oblasťou.

Teda Teda qq := := qq2 (V tomto prípade 2 (V tomto prípade xx a a yy padnú do padnú do qq2).2).Kroky (c) a (d) sa opakujú kým procedúra nenájde prípad, že ani Kroky (c) a (d) sa opakujú kým procedúra nenájde prípad, že ani qq1 ani 1 ani qq2 neobsahujú kompletnú cestu2 neobsahujú kompletnú cestu spájajúcu spájajúcu xx s  s yy. .

Nezabudnime však, že v Nezabudnime však, že v qq cesta cesta xx yy existuje. Toto je možné len vtedy, keď cesta ide cez hranice medzi existuje. Toto je možné len vtedy, keď cesta ide cez hranice medzi qq1 a 1 a qq2. Tieto dve 2. Tieto dve podoblasti boli oddelené hranicou nejakého automatu podoblasti boli oddelené hranicou nejakého automatu MM’; oblasť ’; oblasť qq1 je umiestnená vo vnútri 1 je umiestnená vo vnútri MM’, zatiaľ čo ’, zatiaľ čo qq2 je mimo 2 je mimo MM’.’.

Ak Ak xx padne dovnútra padne dovnútra MM’, vráti hodnotu ’, vráti hodnotu sepx, ysepx, y rovnú rovnú exex’.’.Obrátene, ak Obrátene, ak xx je mimo je mimo MM’, ’, sepx, ysepx, y bude mať hodnotu bude mať hodnotu enen’.’.V oboch prípadoch sa V oboch prípadoch sa sepx,ysepx,y nachádza vo vnútri nachádza vo vnútri qq, pretože celá cesta , pretože celá cesta xx yy sa nachádza v  sa nachádza v qq. Je tiež jasné, že pre . Je tiež jasné, že pre xx yy, ,

rozdeľovaním variant sa pokúša dosiahnuť konfiguráciu, v ktorej rozdeľovaním variant sa pokúša dosiahnuť konfiguráciu, v ktorej xx, , yy padnú do odlišných podregiónov, pretože počet bez padnú do odlišných podregiónov, pretože počet bez εε--ových hrán v aktuálnej oblasti ide náhle dole ku ových hrán v aktuálnej oblasti ide náhle dole ku kk = 1. Čiže, skôr či neskôr procedúra musí vrátiť hodnotu = 1. Čiže, skôr či neskôr procedúra musí vrátiť hodnotu sepx,ysepx,y, keď , keď xx yy. . Z toho však nevyplýva, že dve hrany musia ležať cez hranice Z toho však nevyplýva, že dve hrany musia ležať cez hranice MM’ v odlišných oblastiach, keď chvíľa oddeľovania nastane. ’ v odlišných oblastiach, keď chvíľa oddeľovania nastane. Obrázok č. 11Obrázok č. 11 ukazuje všetky možné pozície. ukazuje všetky možné pozície.

Pre Pre xx = = yy procedúra môže skončiť s aktuálnou oblasťou procedúra môže skončiť s aktuálnou oblasťou , obsahujúcou jedinú bez-, obsahujúcou jedinú bez-εε-ovú hranu -ovú hranu xx, s kompletnou cestou , s kompletnou cestou xx yy. Ak . Ak nastane tento prípad, tak podľa definície výsledná hodnota nastane tento prípad, tak podľa definície výsledná hodnota sepx, ysepx, y bude uzol, na ktorý hrana bude uzol, na ktorý hrana xx ukazuje ukazuje

Page 9: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

Postup prácePostup práce

Page 10: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

Štruktúra regulárneho výrazuŠtruktúra regulárneho výrazuRegulárny výrazRegulárny výraz ľubovoľný počet zjednotení (jedno alebo viac), ľubovoľný počet zjednotení (jedno alebo viac),

ktoré sú oddelené znakom „+“ktoré sú oddelené znakom „+“ZjednotenieZjednotenie jednoduchšie regulárne výrazy, v ktorých sa jednoduchšie regulárne výrazy, v ktorých sa

nevyskytuje „+“nevyskytuje „+“ZreťazenieZreťazenie ľubovoľný počet elementárnych výrazov, ktoré ľubovoľný počet elementárnych výrazov, ktoré

môžu byť oddelené znakom „·“, ale môže sa aj môžu byť oddelené znakom „·“, ale môže sa aj vynechaťvynechať

Elementárny výrazElementárny výraz ľubovoľný počet (aj nula) a kombinácia znakov ľubovoľný počet (aj nula) a kombinácia znakov „*“ a „„*“ a „“ nasledovaná primitívnym výrazom“ nasledovaná primitívnym výrazom

Primitívny výrazPrimitívny výraz tvorí ho písmeno malej abecedy alebo celé tvorí ho písmeno malej abecedy alebo celé zjednotenie uzavreté v zátvorkách, ktoré môže zjednotenie uzavreté v zátvorkách, ktoré môže opäť obsahovať zreťazenia, elementárne opäť obsahovať zreťazenia, elementárne výrazy, primitívne výrazy alebo písmenávýrazy, primitívne výrazy alebo písmená

PísmenoPísmeno písmená malej abecedy v rozpätí od „a“ po „z“písmená malej abecedy v rozpätí od „a“ po „z“

RV → ZjRV → Zj$$

Zj Zj → Zr {+ Zr}→ Zr {+ Zr}

Zr → El {[·] El}Zr → El {[·] El}

El → {* | ^} PrEl → {* | ^} Pr

Pr → Ps | (Zj)Pr → Ps | (Zj)

Ps → a | … | zPs → a | … | z

Page 11: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

Reg výraz Reg výraz → Binárny strom→ Binárny strom

a + *(b + c · d) a + *(b + c · d)

Page 12: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

Reg výraz Reg výraz → → εε-NFA-NFAPoužijeme nasledujúce prepisujúce pravidlá:Použijeme nasledujúce prepisujúce pravidlá:

Page 13: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

PrPríkladíkladBinárny strom Binárny strom

KSAKSA

KaždýKaždý stavstav

BUNV BUNV náhodne náhodne

pomenujemepomenujeme

a ∙ ◊( (*b + c) ∙ d) ∙ e + * (f ∙ ( (g ∙ h) + i))a ∙ ◊( (*b + c) ∙ d) ∙ e + * (f ∙ ( (g ∙ h) + i))

Page 14: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

0 0 0 0 0 0 0 0 0 0 0 0 a 1 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

3 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

4 0 0 0 e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

5 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

6 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

7 0 0 0 0 0 0 d 0 0 0 0 0 0 0 0 0 0 0 0 0 0

8 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0

9 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0

10 0 0 0 0 0 0 0 0 1 0 b 0 0 0 0 0 0 0 0 0 0

11 0 0 0 0 0 1 0 0 0 c 1 0 0 0 0 0 0 0 0 0 0

12 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 f

13 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0

14 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0

15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0

16 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0

17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 h 0 0 0 0 0

18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 g 0 0 0

19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 i 0 0 0 0

20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0

Tabuľka reprezentujúca Tabuľka reprezentujúca NFANFA

Page 15: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

Reg výraz Reg výraz → Binárny strom→ Binárny strom (s en,ex) (s en,ex)

a · b + c · d a · b + c · d

Page 16: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

a b c d

a ndf 3 ndf ndf

b 1 ndf ndf ndf

c ndf ndf ndf 5

d ndf ndf 1 ndf

Reg výraz Reg výraz → Separačná tab.→ Separačná tab.

Page 17: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

Transformačná tabuľka

Pole o veľkosti 2 x m, kde m je počet znakov „a“ až „z“Prvý stĺpec udáva hodnotu z regulárneho výrazu, druhý jeho index. Údaje sú zoradené podľa ich poradia v regulárnom výraze

Tabuľka automatuPole o veľkosti m x m (m počet znakov „a“ až „z“), indexy tvoria stavy automatu a hodnoty určujú pomenovanie hrán medzi stavmi

Binárny strom

Pole o veľkosti 8 x n (n je veľkosť regulárneho výrazu), prvý stĺpec je index vrcholu stromu, druhý jeho hodnota, ďalej nasledujú rodič vrcholu, jeho potomkovia, počet vrcholov pod daným vrcholom a vstupný a výstupný bod v prislúchajúcom automate. Hodnota „-1“ určuje „nedefinované“

Automat – usporiadané trojice

Usporiadané trojice (môže sa jednať aj o pole 3 x k, kde k je počet všetkých hrán v automate), prvá hodnota je počiatočný stav automatu, druhá pomenovanie hrany a tretia koncový stav

Separačná tabuľka

Pole o veľkosti m x m, vertikálny index udáva počiatočný bod cesty, horizontálny koncový bod a prislúchajúca hodnota je daný separačný bod medzi počiatočným a koncovým bodom

Štruktúra výstupných dátŠtruktúra výstupných dátTreeTab

Value : String[3]Parent : IntegerChild1 : IntegerChild2 : Integer

AutoTab

StPoint : IntegerEndPoint : IntegerState : Char

Tree2Tab

Value : String[3]Parent : IntegerChild1 : IntegerChild2 : IntegerCount : Integeren : Integerex : IntegerChildren : array of Boolean

Page 18: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

Zložitosti algoritmovZložitosti algoritmov

Page 19: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

Ďakujem za pozornosťĎakujem za pozornosť

a prajem pekný deň

Page 20: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

AbstraktAbstraktV práci skúmame niekoľko metód na získanie

nedeterministického konečného automatu bez ε hrán z regulárnych výrazov. Zameriame sa na

veľkosť (počet prechodov) výsledného automatu a na časovú zložitosť prevodu. Ukážeme ako sa

v súčasnosti [7,13] podarilo vylepšiť veľkosť výsledného automatu z O(n2) na O(n(log n)2) ,

taktiež O(n log n) pre ohraničenú abecedu (kde n je veľkosť regulárneho výrazu). Potom

podrobne prezentujeme prevod cez ε-NFA a algoritmus na získanie separačného bodu, ktorý

je srdcom dekompozície nedeterministického konečnostavového automatu a nový

zovšeobecnený algoritmus na získanie všetkých separačných bodov.

Page 21: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

Veľkosť automatuVeľkosť automatu

O(n(log n)2)

O(|Σ| n log n)

Page 22: Vyvážená dekompozícia nedeterministického automatu pre regulárne výrazy

Veta 5.2.Veta 5.2.Každý regulárny výraz Každý regulárny výraz dĺžky dĺžky nn ≥ 1 môže byť nahradený ekvivalentným ≥ 1 môže byť nahradený ekvivalentným

nedeterministickým automatom nedeterministickým automatom MM s najviac 2 s najviac 2nn stavmi a  stavmi a nn prechodmi bez prechodmi bez εε hrán nasledovne:hrán nasledovne:

• Pre každý podvýraz Pre každý podvýraz z z odpovedajúci podstromu pod nejakým uzlom odpovedajúci podstromu pod nejakým uzlom v strome reprezentujúcom v strome reprezentujúcom , existuje podautomat , existuje podautomat MM v  v MM, ktorý je podgraf , ktorý je podgraf v grafe reprezentujúcom v grafe reprezentujúcom MM..

• Pre každý Pre každý ’, podvýraz ’, podvýraz odpovedajúci nejakému podstromu s vrchným odpovedajúci nejakému podstromu s vrchným uzlom nachádzajúcim sa v podstrome uzlom nachádzajúcim sa v podstrome , , MM’ je podautomat ’ je podautomat MM, t.j. , t.j. podgraf vnorený do seba v podgrafe podgraf vnorený do seba v podgrafe MM..

• MM má jednoduchý vstupný bod, stav má jednoduchý vstupný bod, stav enen QQ a jednoduchý výstupný a jednoduchý výstupný bod, stav bod, stav exex QQ, kde , kde enen exex, teda reťazec , teda reťazec aa1 1 akak ΣΣ* je v * je v LL((ββ) ) vtedy a len vtedy, keď existuje cesta spájajúca hranami, vo vnútri podgrafu vtedy a len vtedy, keď existuje cesta spájajúca hranami, vo vnútri podgrafu MM, stav , stav enen s s exex nazvaná nazvaná aa1 1 aak.k.

• Hociktorá cesta idúca do podgrafu Hociktorá cesta idúca do podgrafu MM z okolitého prostredia musí ísť cez z okolitého prostredia musí ísť cez stav stav enen. A takisto, . A takisto, MM nemá hrany končiace v nemá hrany končiace v enen..

• Hociktorá cesta opúšťajúca podgraf Hociktorá cesta opúšťajúca podgraf MM do okolitého prostredia musí ísť do okolitého prostredia musí ísť cez stav cez stav exex. A tiež, nie sú žiadne hrany z okolitého prostredia končiace v . A tiež, nie sú žiadne hrany z okolitého prostredia končiace v exex..