220 likes | 328 Views
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.
E N D
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 2005 Bc. Karol Seman
Cieľ práce • Analyzovať známe algoritmy a konštrukcie pre transformáciu regulárnych výrazov na nedeterministické konečnostavové automaty s dôrazom na ich popisnú zložitosť. • Navrhnúť a implementovať algoritmus pre konštrukciu nedeterministického konečnostavového automatu s bezepsilonovými prechodmi ako aj zodpovedajúceho binárneho stromu. • Navrhnúť a implementovať algoritmus pre vytváranie tabuľky separačných bodov.
Rozdelenie práce • Teoretický základ • Analýza známych metód • ε-NFA metóda • Pozičný automat • Čiastočné odvodzovanie • Spoločná množina nasledovníkov • Stromová dekompozícia a ε-NFA • Získanie separačného bodu • Popis, analýza a implementácia algoritmov
Regulárny výraz Regulárny výraz nad abecedou ∑ je definovaný ako konečný výraz zložený zo symbolov z ∑ a špeciálnych symbolov (prázdna množina) a ε (prázdny reťazec) použitím binárnych operácií + (zjednotenie) a . (zreťazenie) a unárneho operátora * (iterácia). Binárny strom 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 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 alebo ε reprezentovaný listom. Nedeterministický konečnostavový automat Pätica M = (Q, ∑, ∆, qs , F), kde Q je konečná množina stavov, ∑ je konečná vstupná abeceda, ∆ Q (∑ {ε}) Q je množina prechodov, qs Q je inicializačný stav a F Q je podmnožina konečných stavov. Tu ε znamená prázdny reťazec.
Stromová dekompozícia Lemma 1.3. Označme q ako konečný binárny strom s každým vrcholom označeným ako „navštívený“ alebo „ignorovaný“. Celkový počet listov označených ako „navštívený“ je k ≥ 2. Potom existuje uzol x taký, že počet navštívených listov v podstrome pod uzlom x je najviac 2/3 · k, ale nie menej ako 1/3 · k. • Definícia 3.1. Nech tγ je stromová reprezentácia γ. Vyvážená stromová dekompozícia tγ • je získaná takto: • Vystrihneme podstrom t1 (t.j. jeden uzol a všetkých jeho nasledovníkov) tak,že má • ≥ ⅓ a ≤ ⅔ pozícií t. Nech t2 je zvyšok po vybratí t1, viď Obrázok. • 2. Použijeme ten istý postup na t1, t2 ak obsahujú viac ako 1 pozíciu γ. Výška dekompozície (počet podstromov) je najviac log3/2 n, kde n je veľkosť γ.
Zníženie kvadratickej veľkosti • Zavedenie 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ľkonový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 novomautomate, 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 ε automatepotrebujeme iba niekoľko kópií v novom automate získaných z, respektíve končiacichv tých separačných stavoch, ktoré sú pomenované v [7]. Čiže cieľ: nájsť separačný stav pre každé dva znakové prechody spojené postupnosťou ε prechodov Výpočet založený na stromovej dekompozícii
Dekompozícia ε-automatu. Keď sú prechody x a y spojené postupnosťou ε prechodov, sú oddelené v dekompozícii vystrihnutím podautomatu (vyvážená stromová dekompozícia vyvolá dekompozíciu automatu) exβv prípade, že počiatočný bod je v aktuálnej oblasti, inak enβ.
Definícia 6.3. • Nech x, y sú dva bez-ε-ové prechody automatu zostrojeného vo Vete 5.2.. Oddeľujúci bod medzi x a y je konečný kontrolný stav sepx, yQ získaný nasledujúcim algoritmom: • Ak hrany x, y nie sú spojené cestou xy v M, hodnota sepx, y nie je definovaná (Nikdy nepočítame sepx, y pre takýto pár hrán).Tu „xy“ reprezentuje cestu začínajúcu na hrane x a končiacu na hrane y s ľubovoľným počtom ε prechodov medzi nimi (to zahŕňa aj 0). • Takže predpokladajme, že existuje cesta xy v M. Potom spustíme nasledujúce opakovanie, uschovávanie cesty aktuálnej oblasti q. Spočiatku, q je úplný graf M, t.j. q := - 1, , l, kde = - originálny regulárny výraz - a 1, , l = - prázdny zoznam. • Nech q = - 1, , l je aktuálna oblasť. Použitím procedúry odvodenej z Lemmy 6.2. založenej na Lemme 1.3.nájdeme ’ rozdeľujúce q na dva podregiónyq1 = ’ - ‘1, , ‘l‘ a q2 = - ‘, ‘‘1, , ‘‘l‘‘ s rovnovážnym počtom bez-ε-ových prechodov. Teda, počet bez-ε-ových prechodov v každom podregióne je medzi 1/3 k až 2/3 k, pričom počet všetkých prechodov vo vnútri q je k ≥ 2. • Teraz použijeme dosiahnuteľnosť y z x ako kritérium vetvenia. Teda, zistíme kde cesta xy pôjde. • Ak existuje kompletná cesta xy nachádzajúca sa vo vnútri q1, t.j. vo vnútri M’, potom sa q1 stane novou aktuálnou oblasťou. Teda q := q1 (Okrem iného z toho vyplýva, že x aj y padnú dovnútra q1). • Ak existuje kompletná cesta xy nachádzajúca sa vo vnútri q2, t.j. mimo M’, potom sa q2 stane novou aktuálnou oblasťou. Teda q := q2 (V tomto prípade x a y padnú do q2). • Kroky (c) a (d) sa opakujú kým procedúra nenájde prípad, že ani q1 ani q2 neobsahujú kompletnú cestu spájajúcu x s y. Nezabudnime však, že v q cesta xy existuje. Toto je možné len vtedy, keď cesta ide cez hranice medzi q1 a q2. Tieto dve podoblasti boli oddelené hranicou nejakého automatu M’; oblasť q1 je umiestnená vo vnútri M’, zatiaľ čo q2 je mimo M’. • Ak x padne dovnútra M’, vráti hodnotu sepx, y rovnú ex’. • Obrátene, ak x je mimo M’, sepx, y bude mať hodnotu en’. • V oboch prípadoch sa sepx,y nachádza vo vnútri q, pretože celá cesta xy sa nachádza v q. Je tiež jasné, že pre xy, rozdeľovaním variant sa pokúša dosiahnuť konfiguráciu, v ktorej x, y 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 k = 1. Čiže, skôr či neskôr procedúra musí vrátiť hodnotu sepx,y, keď xy. Z toho však nevyplýva, že dve hrany musia ležať cez hranice M’ v odlišných oblastiach, keď chvíľa oddeľovania nastane. Obrázok č. 11 ukazuje všetky možné pozície. • Pre x = y procedúra môže skončiť s aktuálnou oblasťou, obsahujúcou jedinú bez-ε-ovú hranu x, s kompletnou cestou xy. Ak nastane tento prípad, tak podľa definície výsledná hodnota sepx, y bude uzol, na ktorý hrana x ukazuje
Štruktúra regulárneho výrazu RV → Zj$ Zj → Zr {+ Zr} Zr → El {[·] El} El → {* | ^} Pr Pr → Ps | (Zj) Ps → a | … | z Regulárny výraz ľubovoľný počet zjednotení (jedno alebo viac), ktoré sú oddelené znakom „+“ Zjednotenie jednoduchšie regulárne výrazy, v ktorých sa nevyskytuje „+“ Zreťazenie ľubovoľný počet elementárnych výrazov, ktoré môžu byť oddelené znakom „·“, ale môže sa aj vynechať Elementárny výraz ľubovoľný počet (aj nula) a kombinácia znakov „*“ a „“ nasledovaná primitívnym výrazom Primitívny výraz tvorí ho písmeno malej abecedy alebo celé zjednotenie uzavreté v zátvorkách, ktoré môže opäť obsahovať zreťazenia, elementárne výrazy, primitívne výrazy alebo písmená Písmeno písmená malej abecedy v rozpätí od „a“ po „z“
Reg výraz → Binárny strom a + *(b + c · d)
Reg výraz → ε-NFA Použijeme nasledujúce prepisujúce pravidlá:
Príklad Binárny strom KSA a ∙ ◊( (*b + c) ∙ d) ∙ e + * (f ∙ ( (g ∙ h) + i)) Každý stav BUNV náhodne pomenujeme
Reg výraz → Binárny strom (s en,ex) a · b + c · d
Ďakujem za pozornosť a prajem pekný deň
Abstrakt V 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.
Veľkosť automatu O(n(log n)2) O(|Σ| n log n)
Veta 5.2. • Každý regulárny výraz dĺžky n ≥ 1 môže byť nahradený ekvivalentným nedeterministickým automatom M s najviac 2n stavmi a n prechodmi bez ε hrán nasledovne: • Pre každý podvýraz z odpovedajúci podstromu pod nejakým uzlom v strome reprezentujúcom , existuje podautomat M v M, ktorý je podgraf v grafe reprezentujúcom M. • Pre každý ’, podvýraz odpovedajúci nejakému podstromu s vrchným uzlom nachádzajúcim sa v podstrome , M’ je podautomat M, t.j. podgraf vnorený do seba v podgrafe M. • M má jednoduchý vstupný bod, stav enQ a jednoduchý výstupný bod, stav exQ, kde enex, teda reťazec a1 akΣ* je v L(β) vtedy a len vtedy, keď existuje cesta spájajúca hranami, vo vnútri podgrafu M, stav en s ex nazvaná a1 ak. • Hociktorá cesta idúca do podgrafu M z okolitého prostredia musí ísť cez stav en. A takisto, M nemá hrany končiace v en. • Hociktorá cesta opúšťajúca podgraf M do okolitého prostredia musí ísť cez stav ex. A tiež, nie sú žiadne hrany z okolitého prostredia končiace v ex.