Regulære udtryk og endelige automater Regulære udtryk: deklarative dvs. ofte velegnede til at specificere regulære sprog Endelige automater: operationelle dvs. bedre egnet til at afgøre om en given streng er i sproget Ethvert regulært udtryk kan oversættes til en endelig automat og omvendt (bevises næste uge...) 2
En endelig automat En endelig automat, der genkender strenge over alfabetet ={,} med ulige antal er: Automaten læser strengen ét tegn ad gangen, fra venstre mod højre Hvis automaten ender i en accept-tilstand, så accepteres(=genkendes) strengen 3
At køre en streng på en automat Eksempel: vi vil vide om strengen accepteres Vi starter i starttilstanden og læser strengen Vi ender i en ikke-accept tilstand, så strengen accepteres ikke 4
Hvad repræsenterer tilstandene? Hver tilstand repræsenterer en viden om den hidtil læste delstreng Eksempel: X Y X: der er læst et lige antal er Y: der er læst et ulige antal er 5
Formel definition af endelige automater En endelig automat (finite automaton/fa) er et 5-tupel (Q,, q, A, ) hvor Q er en endelig mængde af tilstande er et alfabet q Q er en starttilstand A Q er accepttilstande : Q Q er en transitionsfunktion 6
Eksempel Denne grafiske repræsentation af en automat: X Y svarer til 5-tuplet (Q,, q, A, ) hvor Q = {X,Y} = {,} q = X A = {Y} : Q Q er denne funktion: tilstand input X X Y Y Y X 7
Hvorfor en formel definition? Den formelle definition viser kort og præcist hvad en FA er For eksempel, en FA har endeligt mange tilstande den har præcis én starttilstand en vilkårlig delmængde af tilstandene kan være accepttilstande for enhver tilstand q og alfabetsymbol a er der én udgående transition (til tilstanden (q,a)) der er ikke noget krav om, at alle tilstande kan nås fra starttilstanden 8
Sproget af en automat 5-tupel-definitionen fortæller hvad en FA er Vi vil nu definere hvad en FA kan: En FA accepterer en streng, hvis dens kørsel fra starttilstanden ender i en accepttilstand Sproget (M) af en FA M er mængden af strenge, den accepterer M genkender sproget (M) 9
Formel definition af (M) Givet en FA M=(Q,, q, A, ), definer den udvidede transitionsfunktion *: Q * Q ved *(q, x) = q ( *(q, y), a) hvis x= hvis x=ya hvor y * og a x * accepteres af M hvis og kun hvis *(q, x) A Definer (M) = { x * x accepteres af M }
Quiz! Lad ={a,b}. Tegn en FA M så.... (M) = * a,b 2. (M) = Ø a,b a 3. (M) = {a} b a,b a,b a b 4. (M) = { x * n a (x) lige og n b (x) ulige } n a (x): ad hoc notation for antal a er i strengen x b a b b a a
Skelnelighed Givet et sprog L, hvor mange tilstande er nødvendige i en FA M hvis (M)=L? To strenge, x og y, skal ende i forskellige tilstande, hvis der er behov for at kunne skelne dem dvs. z *: (xz L yz L) (xz L yz L) *(q, x) *(q, y) 2
Definition af skelnelighed Lad L * og x,y * x og y er skelnelige mht. L hvis z *: (xz L yz L) (xz L yz L) Alternativ definition (som i bogen): Kvotientsproget L/x defineres som L/x = { z * xz L } dvs., x og y er skelnelige mht. L hvis L/x L/y z skelner x og y mht. L hvis z L/x - L/y eller z L/y - L/x 3
Eksempel Hvis L = { s {,}* s ender med } x = y = så er x og y skelnelige mht. L Bevis: z = skelner x og y dvs. hvis (Q,, q, A, ) genkender L så er *(q, x) *(q, y) 4
Nødvendigt antal tilstande i en FA Antag x, x 2,..., x n * og for ethvert par x i,x j, i j er x i og x j skelnelige mht. L Enhver FA der genkender L har mindst n tilstande Bevis (skitse): antag FA en har færre end n tilstande det medfører at i j: *(q, x i )= *(q, x j ) modstrid med at x i og x j er skelnelige mht. L 5
Eksempel : en stor automat Lad L 42 = { x {,}* x 42 og det 42. symbol fra højre i x er et } Lad x, x 2,..., x 2 42 være alle strenge af længde 42 over alfabetet {,} Disse strenge er alle parvist skelnelige mht. L 42 En automat der genkender L 42 har derfor mindst 2 42 tilstande (...hvis den overhovedet findes) 6
Eksempel 2: palindromer Lad pal = { x {,}* x=reverse(x) } Lad x og y være to vilkårlige forskellige strenge over {,} x og y er skelnelige mht. pal (bevis: se bogen...) Vi kan altså finde en vilkårligt stor mængde parvist skelnelige strenge, så pal er ikke regulært 7
Forening af regulære sprog Givet to regulære sprog, L og L 2 er L L 2 også regulært? Ja! (dvs. klassen af regulære sprog er lukket under forening) 8
Eksempel M : (strenge med lige antal er) X Y M 2 : A (strenge der ender med ) B M: (M) = (M ) (M 2 ) XA XB YA YB 9
Produktkonstruktionen Antag vi har to FA er: M = (Q,, q, A, ) M 2 = (Q 2,, q 2, A 2, 2 ) Definer en ny FA: M = (Q,, q, A, ) hvor Q = Q Q 2 q = (q, q 2 ) A = { (p, q) p A q A 2 } ((p, q), a) = ( (p, a), 2 (q, a)) produktmængden af tilstandene Der gælder nu: (M) = (M ) (M 2 ) 2
Konstruktivt bevis for korrekthed Lemma: x *: *((p, q), x) = ( *(p, x), 2 *(q, x)) (Bevis: opgave 2., induktion i x) Brug lemmaet samt definitionerne af M og ( ) 2
Nøjes med opnåelige tilstande Produktkonstruktionen bruger Q = Q Q 2 I praksis er hele tilstandsrummet sjældent nødvendigt Eksempel: M X Y : M 2 : A B M: (M) = (M ) (M 2 ) XA XB YA YB Kun tilstande, der er opnåelige fra starttilstanden er relevante for sproget! (Bevis: opg.) 22
Fællesmængde og differens Givet to regulære sprog, L og L 2. er L L 2 også regulært? 2. er L -L 2 også regulært? Ja! (dvs. klassen af regulære sprog er lukket under fællesmængde og differens) Bevis: produktkonstruktion som ved men for, vælg A = { (p, q) p A q A 2 } for -, vælg A = { (p, q) p A q A 2 } 23
Komplement Givet et regulære sprog R er R (Rs komplement) også regulært? Ja! (dvs. klassen af regulære sprog er lukket under komplement) Bevis : Vælg L = * og L 2 = R, hvorved R = L -L 2 Bevis 2: Givet en FA M = (Q,, q, A, ) hvor (M)=R Definer M = (Q,, q, Q-A, ) Derved gælder at (M )=R (hvorfor?) 24
Eksempel M: XA YA (strenge med lige antal er eller ender med ) XB YB M : (M ) = ( (M)) (strenge med ulige antal er og ender ikke med ) XA XB YA YB 25
dregaut Java-pakken Udleverede programdele: FA.java: repræsentation af FA er Alphabet.java, State.java, StateSymbolPair.java, AutomatonNotWellDefinedException.java: hjælpeklasser til FA.java 26
FA.java public class FA { public Set<State> states; public Alphabet alphabet; public State initial; public Set<State> accept; public Map<StateSymbolPair,State> transitions; }... // Q // // q Q // A Q // : Q Q et Alphabet objekt indeholder mængde af Character objekter et StateSymbolPair objekt består af et State objekt og et Character objekt 27
Nyttige metoder i FA.java FA() - konstruerer uinitialiseret FA objekt FA(Alphabet a) - konstruerer FA for det tomme sprog clone() - kloner et FA objekt checkwelldefined() - undersøger om FA objektet repræsenterer en veldefineret FA getnumberofstates() - returnerer størrelsen af states settransition(state q, char c, State p) - tilføjer en c transition fra q til p todot() - konverterer FA objekt til Graphviz dot input (til grafisk repræsentation) 28
Automater til modellering og verifikation Eksempel: en jernbaneoverskæring Tre komponenter: et tog krydser vejen kommunikerer med kontrolsystemet et kontrolsystem styrer bommen en bom Sikkerhedsegenskab: bommen er altid nede, når toget krydser vejen 29
TOG approach Modellering af systemet KONTROLSYSTEM approach BOM lower exit cross raise lower raise down exit up Begivenheder: approach: toget nærmer sig cross: toget krydser vejen exit: toget forlader området lower: besked til bommen om at gå ned raise: besked til bommen om at gå op down: bommen går ned up: bommen går op 3
Modellering som FA er Eksempel: lower, raise, down, up lower, raise, down, up approach M TOG = cross, exit exit cross lower, raise, down, up, approach, cross, exit approach, cross lower, raise, down, up approach, exit definer accepttilstande tilføj loop-transitioner så komponenterne får samme alfabet tilføj crash-tilstand og ekstra transitioner så transitionsfunktionen bliver total 3
Kombination af komponenterne Vi er interesseret i de sekvenser af begivenheder, der opfylder alle komponenterne Produktkonstruktion: (M) = (M TOG ) (M KONTROL ) (M BOM ) 32
Modellering af sikkerhedsegenskaben bommen er altid nede, når toget krydser vejen up, approach, exit, lower, raise down cross, down, approach, exit, lower, raise S = cross up cross, down, up, approach, exit, lower, raise 33
Verifikation Korrekthed: (M) ( (S)) = Ø dvs. vi skal bruge produktkonstruktion (igen) komplement algoritme til at afgøre om sproget for en given FA er tomt (uge 9) hvis (M) ( (S)) Ø: enhver streng i (M) ( (S)) svarer til et modeksempel (algoritme: uge 9) 34
Verifikation med dregaut-pakken Opbyg FA-objekter svarende til M TOG, M KONTROL, M BOM, og S Kombiner med FA.intersection() og FA.complement() Brug FA.isEmpty() og FA.getAShortestExample() Resultat: modeksempel: approach lower down up cross 35
Resume Definition af endelige automater og deres sprog Skelnelighed, hvad repræsenterer tilstandene, nødvendigt antal tilstande Produktkonstruktionen, komplement (konstruktive beviser) dregaut.fa klassen, Java-repræsentation af FA er Eksempel: automater til modellering og verifikation 36
Opgaver [Martin]: Læs, forstå og konstruer endelige automater Produktkonstruktion Skelnelige strenge Java: Studér udleverede programdele: repræsentation af FA er ekstra udleverede metoder: delta, deltastar, complement Implementér FA metoder: accepts,intersection, union, minus Opbyg en FA og vis den grafisk Ugens finurlige opgave: Vis at endelige automater kan udføre addition af binære tal Afleveringsopgave: Udfør produktkonstruktionen på to FA er + Java-impl. 37