270 likes | 424 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. Rozdelenie pr áce. Teoretický základ Analýza známych metód
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
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 a ∙ ◊( (*b + c) ∙ d) ∙ e + * (f ∙ ( (g ∙ h) + i))
Binárny strom a ∙ ◊( (*b + c) ∙ d) ∙ e + * (f ∙ ( (g ∙ h) + i))
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.
Porovnanie známych metód 1969 1971 1996 1997 2003 O(n(log n)2) O(|Σ| n log n)
Stromová dekompozícia • 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. • Použijeme ten istý postup na t1, t2 ak obsahujú viac ako 1 pozíciu γ.
Zavedenie separačných bodov Cieľ: nájsť separačný stav pre každé dva znakové prechody spojené postupnosťou ε prechodov
Dekompozícia ε-automatu. 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β.
Separačný bod • Ak hrany x, y nie sú spojené cestou xy v M, hodnota sepx, y nie je definovaná • nájdeme ’ rozdeľujúce q na dva podregiónys rovnovážnym počtom bez-ε-ových prechodov. • Teraz zistíme kde cesta xy pôjde, podľa toho zvolíme nový aktuálny región • Opakujeme kým procedúra nenájde prípad, že ani q1 ani q2 neobsahujú kompletnú cestu • 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’.
Š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“
1. Reg výraz → Binárny strom a + *(b + c · d)
Príklad Binárny strom KSA a ∙ ◊( (*b + c) ∙ d) ∙ e + * (f ∙ ( (g ∙ h) + i)) Každý stav BUNV náhodne pomenujeme
3. 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.
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.