Et formelt språk
description
Transcript of Et formelt språk
![Page 1: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/1.jpg)
Et formelt språk
er en mengde av strenger over et endelig alfabet Eksempler:
Alfabet Språk En streng i språket
Norske ord Norsk Gutten spiser en pølse, …
Engelske ord Engelsk The boy eats a sausage,
Norske bokstaver Norske ord pølse
Latinske bokstaver Engelske ord sausage
![Page 2: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/2.jpg)
Norske ord: mengde av strenger
{a,b,c, …, z,æ,ø,å}*
grønn blåen et egg gutt pølse spiser
drikker melk saftsjokolade pølsespiser sover drømmer tenkte våkner
melkedrikker
Norske ord
Ymer palse slajk trovt gridda pøz åg tag æg dejlig
utomordentlig yxi
øøøøø
øøø
øø
ø
![Page 3: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/3.jpg)
Operasjoner på språkNavn Symbol Eksempel
Union
{aa,ab,bb} {cc, d} =
{aa,ab,bb, cc, d}
Produkt
{aa,ab,bb}{cc, d} =
{aacc, aad, abcc, abd, bbcc,bbd}
Kleene-stjerne {cc, d}* =
{, cc, d, cccc, ccd, dcc, dd,
cccccc, ccccd, ccdcc, ccdd,
dcccc, dccd, ddcc, ddd,
cccccccc, ccccccd, ccccdcc, … }
![Page 4: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/4.jpg)
A* er en uendelig union:
• A* = {} A AA AAA AAAA …
• {a,b}* = {,
a, b,
aa, ab, ba, bb,
aaa, aab, aba, abb, baa, bab, bba, bbb,
………. }
![Page 5: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/5.jpg)
Et regulært uttrykk
• brukes til å definere et språk• betyr et språk• er bygget opp fra , og symboler i alfabetet ved
hjelp av operatorene +, · og * samt parenteser.
Operator-presedens: * over · over +:
R · S* + T* = R · (S*) + (T*) = (R · (S*)) + (T*)
![Page 6: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/6.jpg)
Betydning
L(R) er språket som R betegner:
• L(a) = {a}
• L() =
• L() = {}
• L(R + S) = L(R) L(S)
• L(R · S) = L(R) L(S)
• L(R*) = L(R)*
![Page 7: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/7.jpg)
EksempelUttrykk Betegner
a {a}
b {b}
{}
ab {ab}
a + {a, }
(ab) · (a + ) {aba, ab}
((ab) · (a + ))* {, aba, ab, abaaba, abaab, ababa, abab, abaabaaba, … }
![Page 8: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/8.jpg)
RS = R·S
![Page 9: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/9.jpg)
R(ST) = (RS)T
![Page 10: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/10.jpg)
Noen regneregler R(S+T) = RS + RT
R = R
(S+T)R = SR + TR
R*R = RR*
+ RR* = R*
(mange flere side 638)
+ (aa + ab*ba) (ab*a)*
+ (a (a + b*ba) (ab*a)*
+ (a (a + b*ba) (ab*a)*
+ (a ( + b*b)a) (ab*a)*
+ (a ( + bb*)a) (ab*a)*
+ (ab*a) (ab*a)*
(ab*a)*
![Page 11: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/11.jpg)
Et regulært språk
er (pr. definisjon) et språk som kan defineres ved et regulært uttrykk
![Page 12: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/12.jpg)
Deterministisk endelig automat (DFA)(over språk A)
Består av
- en ikke-tom, endelig mengde Q av tilstander
- hvor nøyaktig en er utpekt som start-tilstand
- og null eller flere er utpekt som slutt-tilstander
- samt en transisjons-funksjon fra Q A til Q
![Page 13: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/13.jpg)
Eksempel A = {a,b}
Q = {q0, q1, q2, q3},
q0 er start-tilstand,
q3 er slutt-tilstand,
transisjons-funksjonen er gitt ved tabellen
a b
q0 q1 q2
q1 q3 q1
q2 q2 q3
q3 q3 q3
![Page 14: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/14.jpg)
Eksempel A = {a,b}
Q = {q0, q1, q2, q3},
q0 er start-tilstand,
q3 er slutt-tilstand,
transisjons-funksjonen er gitt ved tabellen
a b
q0 q1 q0
q1 q1 q2
q2 q1 q3
q3 q1 q0
![Page 15: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/15.jpg)
Automat aksepterer streng:
• En (deterministisk) endelig automat aksepterer en streng hvis vi kan komme fra start-tilstanden til en slutt-tilstand ved å følge strengen.
Automat aksepterer språk:• En (deterministisk) endelig automat
aksepterer et språk hvis den aksepterer alle strenger i språket, og ingen strenger utenfor språket.
![Page 16: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/16.jpg)
Deterministiske endelige automater vs.
Regulære uttrykk (RE)
• Gir oss det samme!
• Altså: Et språk er regulært hviss det fines en deterministisk endelig automat som aksepterer det.
Bevises oftest ved hjelp av ikke-deterministiske endelige automater
![Page 17: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/17.jpg)
Ikke-deterministisk endelig automat(NFA)
DFA NFA
Er spesialtilfelle av
RE
Kan gjøres om til
Kan gjøres om til Kan gjøres om til
![Page 18: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/18.jpg)
To definisjoner av DFA
To litt ulike krav er i omløp med hensyn til hva som skal til for at en NFA teller som en DFA.
For det første skal det ikke finnes -transisjoner. Alle er enige om det. Læreboken vår krever dessuten at det for hver a i alfabetet skal gå nøyaktig en a-transisjon ut fra hver tilstand, mens andre bøker/forfattere bare sier at det
skal gå høyst en a-transisjon ut fra hver tilstand.
![Page 19: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/19.jpg)
Den alternative definisjonen er altså svakere/snillere:
Den slipper flere maskiner gjennom nåløyet.
Som for eksempel følgende.
![Page 20: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/20.jpg)
Man kan imidlertid alltid med et enkelt grep omforme en slik maskin til en DFA i vår strengere forstand. Dette gjøres ved å innføre en ny tilstand som tar imot alle de manglende transisjonene. Denne tilstanden er ikke-endelig, og har dessuten transisjoner til seg selv for alle symboler i alfabetet. På engelsk omtaler man gjerne denne tilstanden som a sink. Altså avløp/kloakk:
![Page 21: Et formelt språk](https://reader036.fdocuments.net/reader036/viewer/2022081417/56814f08550346895dbc9a1d/html5/thumbnails/21.jpg)
Applikasjonen JFLAP benytter denne svakere definisjonen.
Fordelen ved dette, er at tegninger av DFAer oftest blir enklere og mer oversiktlige. Et vanlig kompromiss er å tillate alle (tegninger av) DFAer som følger det snilleste kravet, men underforstått tolke disse slik at det i tillegg finnes et usynlig avløp.