2.6 SÄÄNNÖLLISET LAUSEKKEET Automttimlleist poikkev tp kuvt yksinkertisi kieliä. Olkoot A j B kkoston Σ kieliä. Perusopertioit: Yhdiste: A B = {x Σ x A ti x B}; Ktentio: AB = {xy Σ x A, y B}; Potenssit: { A 0 = {}, A k = AA k 1 = {x 1...x k x i A i = 1,...,k} (k 1); Sulkeum t. Kleenen tähti : Määritelmä 2.3 Akkoston Σ säännölliset lusekkeet määritellään induktiivisesti säännöillä: 1. /0 j ovt Σ:n säännöllisiä lusekkeit; 2. on Σ:n säännöllinen luseke kikill Σ; 3. jos r j s ovt Σ:n säännöllisiä lusekkeit, niin (r s), (rs) j r ovt Σ:n säännöllisiä lusekkeit; 4. muit Σ:n säännöllisiä lusekkeit ei ole. A k A = [ k 0 = {x 1...x k k 0, x i A i = 1,...,k}. Kukin Σ:n säännöllinen luseke r kuv kielen L(r), jok määritellään: L(/0) = /0; L() = {}; L() = {} kikill Σ; L((r s)) = L(r) L(s); L((rs)) = L(r)L(s); L(r ) = (L(r)). Akkoston {, } säännöllisiä lusekkeit: r 1 = (()), r 2 = (), r 3 = ( ), r 4 = (( ())). Lusekkeiden kuvmt kielet: L(r 1 ) = ({}{}){} = {}{} = {}; L(r 2 ) = {} = {,,,,...} = {() i i 0}; L(r 3 ) = {}({}) = {,,,,...} = { i i 0}; L(r 4 ) = ({}{,}) = {,} = {,,,,,...} = {x {,} kutkin -kirjint x:ssä seur 1 ti 2 -kirjint }.
Sulkumerkkien vähentämissääntöjä: Operttoreiden prioriteetti: Esimerkki: C-kielen etumerkittömät reliluvut numer = (dd.d.dd )(e(+ )dd ) (dd e(+ )dd ), Yhdiste- j tulo-opertioiden ssositiivisuus: L(((r s) t)) = L((r (s t))) L(((rs)t)) = L((r(st))) peräkkäisiä yhdisteitä j tuloj ei trvitse sulutt. Käytetään tvllisi kirjsimi, mikäli seknnuksen vr merkkijonoihin ei ole. Yksinkertisemmin siis: r 1 =, r 2 = (), r 3 =, r 4 = (( )). missä d on lyhennemerkintä lusekkeelle d = (0 1 2 3 4 5 6 7 8 9) j e on lyhennemerkintä lusekkeelle e = (E e). Usein merkitään myös lyhyesti rr r +. Esim.: (d +.d.d + )(e(+ )d + ) (d + e(+ )d + ). Säännöllisten lusekkeiden sieventäminen Säännöllisillä kielillä on yleensä useit vihtoehtoisi kuvuksi, esim.: Määritelmä 2.4 Kieli on säännöllinen, jos se voidn kuvt säännöllisellä lusekkeell. Σ = L(( ) ) = L(( ) ) = L( ( ) ( ) ). Määritelmä. Säännölliset lusekkeet r j s ovt ekvivlentit, merk. r = s, jos L(r) = L(s). Lusekkeen sieventäminen = yksinkertisimmn ekvivlentin lusekkeen määrittäminen. Säännöllisten lusekkeiden ekvivlenssitestus on epätrivili, mutt peritteess meknisesti rtkev ongelm.
Sievennyssääntöjä: r (s t) = (r s) t r(st) = (rs)t r s = s r r(s t) s rt (r s)t t st r r r /0 r /0r = /0 r = r r r = ( r) Mikä thns säännöllisten lusekkeiden tosi ekvivlenssi voidn joht näistä lskuleist, kun lisätään päättelysääntö: jos r s t, niin r = ts, edellyttäen että / L(s). Khden lusekkeen ekvivlenssin totemiseksi knntt usein päätellä erikseen kummnkin kuvmn kielen sisältyminen toiseen. Merkitään lyhyesti: r s, jos L(r) L(s). Tällöin siis r = s joss r s j s r. Esimerkki: todetn, että ( ) = ( ). 1. Selvästi ( ) ( ), kosk ( ) kuv kikki kkoston {, } merkkijonoj. 2. Kosk selvästi ( ), niin myös ( ) ( ). 2.7 ÄÄRELLISET AUTOMAATIT JA SÄÄNNÖLLISET KIELET Luse 2.3 Jokinen säännöllinen kieli voidn tunnist äärellisellä utomtill. Todistus. Seurvn klvon induktiivisen konstruktion vull voidn mielivltisen säännöllisen lusekkeen r rkennett seurten muodost -utomtti M r, joll L(M r ) = L(r). Tästä utomtist voidn poist -siirtymät Lemmn 2.4 mukisesti, j trvittess voidn syntyvä epädeterministinen utomtti determinisoid Luseen 2.2 konstruktioll. Esitettävästä konstruktiost on syytä huomt, että muodostettviin -utomtteihin tulee in yksikäsitteiset lkuj lopputil, eikä minkään os-utomtin lopputilst lähde eikä lkutiln tule yhtään ko. os-utomtin sisäistä siirtymää. r = /0 : r = : r = s t : r = ( Σ) : r = st : M t r = s : M t
Esimerkiksi lusekkeest r = (( )) sdn näiden sääntöjen mukn seurv -utomtti: Automtti on selvästi hyvin redundntti. Käsin utomttej suunniteltess ne knnttkin usein muodost suorn. Esim. lusekkeen r = (( )) perusteell on helppo muodost seurv yksinkertinen epädeterministinen tunnistj-utomtti: Luse 2.4 Jokinen äärellisellä utomtill tunnistettv kieli on säännöllinen. Todistus. Trvitn vielä yksi äärellisten utomttien ljennus: lusekeutomtiss voidn siirtymien ehtoin käyttää mielivltisi säännöllisiä lusekkeit. Formlisointi: Merk. RE Σ = kkoston Σ säännöllisten lusekkeiden joukko. Lusekeutomtti on viisikko M = (Q,Σ,δ,q 0,F), missä siirtymäfunktio δ on äärellinen kuvus Yhden skelen tilnnejohto määritellään: (q,w) (q,w ) M jos on q δ(q,r) jollkin sellisell r RE Σ, että w = zw, z L(r). Muut määritelmät smt kuin iemmin. Todistetn: jokinen lusekeutomtill tunnistettv kieli on säännöllinen. δ : Q RE Σ P(Q) (so. δ(q,r) /0 vin äärellisen monell prill (q,r) Q RE Σ ).
Olkoon M jokin lusekeutomtti. Säännöllinen luseke, jok kuv M:n tunnistmn kielen, muodostetn khdess viheess: 1. Tiivistetään M ekvivlentiksi enintään 2-tiliseksi lusekeutomtiksi seurvill muunnoksill: (i) Jos M:llä on useit lopputiloj, yhdistetään ne seurvsti. (ii) Poistetn M:n muut kuin lku- j lopputil yksi kerrlln seurvsti. Olk. okin M:n til, jok ei ole lku- eikä lopputil; trkstelln kikki reittejä, jotk M:ssä kulkevt q:n kutt. Olk. j q:n välittömät edeltäjä- j seurjtil jollkin tällisell reitillä. Poistetn q reitiltä oheisen kuvn (i) muunnoksell, jos tilst q ei ole siirtymää itseensä, j kuvn (ii) muunnoksell, jos tilst q on siirtymä itseensä: (i): q r i q s (ii): t q r i q s rs rt s Smll yhdistetään rinnkkiset siirtymät seurvsti: r s r s 2. Tiivistyksen päättyessä jäljellä olev 2-tilist utomtti vstv säännöllinen luseke muodostetn seurvn kuvn esittämällä tvll: Esimerkki: (i): r r (ii): r 1 r 2 r 3 r 1 r 2(r 3 r 4 r 1 r 2) ( )() ( ) r 4 ( )() ( ) ( ( )() ( ))