Seminar 1 Regularitet og Automater 28/1-2012 Jesper Gulmann Henriksen jgh@wincubate.net
Agenda Introduktion Hvad er Regularitet og Automater? Praktiske Oplysninger om Kurset Regulære Udtryk + Øvelser Induktion og Beviser Frokost Endelige Automater + Øvelser Skelnelighed og Produktkonstruktion + Øvelser dregaut-pakken Case Study: Modellering og Verifikation
3 Regularitet og Automater Formål med kurset: At præsentere matematiske teknikker og centrale begreber, der anvendes i datalogi rekursive definitioner, induktionsbeviser formelle sprog modeller for beregnelighed regularitet ( egenskaber som generelt kendetegner beregningsprocesser i it-systemer med begrænset mange tilstande ) fundament for andre kurser Beregnelighed og Logik, Oversættelse, Statisk Analyse, Software Verifikation, Kombinatorisk Søgning, Concurrency,...
Tekstgenkendelse Specificere og genkende tekststrenge søgning i tekster (Unix grep) leksikalsk analyse i oversættere (flex) HTML input validering (PowerForms)... Konkret anvendelse af regulære udtryk og endelige automater 4
HTML-formularer HTML formularer indeholder input-felter, hvor brugeren kan indtaste tekststrenge Eks.: datoer telefonnumre CPR-numre emailadresser URL er... 5
6 HTML input-validering Brugeren må ikke indtaste ugyldige strenge Den traditionelle løsning: Programmér input validering i JavaScript (til browseren så input valideres løbende mens formularen udfyldes), og Java (til serveren for det tilfælde at browseren ikke udfører JavaScript-koden) Problemer: det er svært at programmere JavaScript, der virker på alle (nyere) browsere vi skal skrive den samme kode i to forskellige sprog store dele af koden skal skrives igen og igen...
Den datalogiske løsning 1. Analysér problemområdet 2. Design et domæne-specifikt højniveau sprog 3. Lav en oversætter, der genererer JavaScript- og Javakoden fra højniveau-specifikationer Sproget PowerForms er udviklet efter denne metode input-felter beskrives med regulære udtryk, der oversættes til endelige automater 7
Regulære udtryk Et alfabet er en endelig mængde af tegn En streng er en endelig sekvens af tegn fra alfabetet Et sprog er en mængde af strenge Et regulært udtryk beskriver et (potentielt uendeligt) sprog: Ø den tomme mængde af strenge mængden bestående af den tomme streng a mængden bestående af en enkelt streng, som er det ene tegn a fra alfabetet 8 r 1 +r 2 de strenge der beskrives af r 1 eller r 2 r 1 r 2 de strenge der kan opdeles i to dele, så venstre del beskrives af r 1 og højre del af r 2 r* de strenge der kan opdeles i et antal dele, der hver beskrives af r
Eksempler på regulære udtryk Gyldige datoer, telefonnumre, CPR-numre, emailadresser, URL er,... Strenge over alfabetet ={0,1} af lige længde: 9 (00+01+10+11)* eller: ((0+1)(0+1))* Strenge over alfabetet ={0,1} med ulige antal 1 er: 0*10*(10*10*)* eller: 0*1(0*10*1)*0* eller:...
Et mere realistisk eksempel Floating-point tal (i Pascal): alfabet: ={0,1,2,3,4,5,6,7,8,9,+,-,.,E} eksempler på gyldige strenge: 3.14 5.6E13-42.0 forkortelser: d 0+1+2+3+4+5+6+7+8+9 d + d*d s +++- samlet udtryk: sd + (.d + +.d + Esd + + Esd + ) 10
Genkendelse af strenge Givet et regulært udtryk r og en streng x, hvordan undersøger vi om x matcher r? Den naive løsning: Vi prøver os frem, afhængigt af strukturen af r Ø matcher intet matcher kun den tomme streng a matcher kun strengen a r 1 +r 2 matcher x hvis r 1 eller r 2 matcher x r 1 r 2 opdel x så x=x 1 x 2 på alle mulige måder, check om der eksisterer en opdeling så r 1 matcher x 1 og r 2 matcher x 2 r* opdel x så x=x 1 x 2...x n på alle mulige måder, check om der eksisterer en opdeling så r matcher x i for alle i=1...n Det virker! men er håbløst ineffektivt... 11
Endelige automater En endelig automat, der genkender strenge over alfabetet ={0,1} med ulige antal 1 er: 0 0 1 Automaten læser strengen ét tegn ad gangen, fra venstre mod højre Hver tilstand repræsenterer en viden om den læste delstreng Hvis automaten ender i en accept-tilstand, så accepteres(=genkendes) strengen 12 1
Kleenes sætning Regulære udtryk og endelige automater har samme udtrykskraft Konstruktive beviser: ethvert regulært udtryk kan oversættes til en ækvivalent endelig automat enhver endelig automat kan oversættes til et ækvivalent regulært udtryk Formelle beviser kræver formelle definitioner 13
PowerForms-eksempel Lad R være et regulært udtryk, der svarer til gyldige datoer på form dd/mm-åååå Oversæt R til en ækvivalent endelig automat F Repræsenter F som et JavaScript-program, der kan svare på om en streng x er accepteret ikke accepteret, men der er en sti til accept ikke accepteret og ingen sti til accept 14
PowerForms-eksempel 29/02 29/02@ 29/02-1996 http://www.brics.dk/bigwig/powerforms/examples /date.html 15
Endelige automater til modellering af systemer Endelige automater er også nyttige uden regulære udtryk Endelige automater kan modellere systemer og egenskaber De teoretiske resultater om endelige automater kan bruges til at kombinere modeller og verificere om et givet system har en given egenskab 16
Verifikation En endelig automat, der modellerer en togsimulator (fra VisualSTATE): 1421 del-automater 11102 transitioner 2981 inputs 2667 outputs 3204 lokale tilstande ialt antal tilstande: 10 476 Virker toget? 17
Beregnelighed Input PROGRAM Output Input og Output er strenge PROGRAM er en algoritme, der kører på en maskine Eks.: Givet et naturligt tal N som input, maskinen beregner N 2 som output 18
Beslutningsproblemer Input PROGRAM ja/nej Hvis vi ignorerer effektivitet, så kan ethvert beregningsproblem omformuleres som et beslutningsproblem Eks.: Givet to naturlige tal N og M som input, maskinen svarer ja hvis og kun hvis M=N 2 19
Beslutningsproblemer og sprog Ethvert beslutningsproblem P er et sprog: L = { de strenge x, hvor svaret på P er ja } Ethvert sprog L er et beslutningsproblem: P: er input x i L? 20
Eksempler på beslutningsproblemer Givet en streng, er den en gyldig dato på form dd/mm-åååå? er den et syntaktisk korrekt Java program? er den et primtal? er den en konfiguration i skak hvor det er muligt for hvid at vinde? er den et semantisk korrekt Java-program? er den en syntaktisk korrekt sætning i dansk? er den en litterær klassiker? vi vil kun se på formelle sprog og veldefinerede problemer 21
Endelige automater som model for beregnelighed Vi vil studere følgende emne: Hvilke problemer kan afgøres af en maskine med endeligt meget hukommelse? Med andre ord: Hvilke sprog kan genkendes af endelige automater? 22
Mere generelle modeller for beregnelighed Turing-maskiner: endelige automater med adgang til en uendeligt stor notesblok kan udføre vilkårlige algoritmer (Church-Turing-tesen) formel udtrykskraft som f.eks. Java og C Pushdown-automater: endelige automater med adgang til en vilkårligt stor stak (last-in-first-out) anvendes ofte i parsere i oversættere udtrykskraft imellem endelige automater og Turingmaskiner 23
Klasser af formelle sprog klassen af alle sprog (over et givet alfabet) de rekursivt enumerable sprog (svarer til Turing-maskiner) de regulære sprog de endelige sprog 24 de kontekstfri sprog (pushdown-automater)
Hvorfor nøjes med endelige automater? Klassen af regulære sprog har mange pæne egenskaber: afgørlighed (f.eks, givet en endelig automat M, accepterer M nogen strenge overhovedet? ) lukkethed (fællesmængde, forening,...) Til sammenligning: Ved Turing-maskiner er næsten alt uafgørligt Pushdown-automater / kontekstfri grammatikker: en mellemting, både med udtrykskraft og afgørlighedsegenskaber 25
26 Uafgørlighed Her er et lille program: while (x 1) { if (even(x)) x = x/2; else x = 3*x+1; } Terminerer programmet for alle input x>0? Ja eller nej? Tilsyneladende ja, men ingen har endnu bevist det! Men vi kan bevise, at der ikke findes et program (=en Turingmaskine), der kan afgøre det generelle problem givet et program P, terminerer P på alle input?
Agenda Introduktion Hvad er Regularitet og Automater? Praktiske Oplysninger om Kurset Regulære Udtryk + Øvelser Induktion og Beviser Frokost Endelige Automater + Øvelser Skelnelighed og Produktkonstruktion + Øvelser dregaut-pakken Case Study: Modellering og Verifikation
Praktiske oplysninger om kurset Kursushjemmeside http://services.brics.dk/java/courseadmin/re gautevu12 Seminarer Lørdag d. 28. januar 2012 9-16 Nygaard-192 Lørdag d. 11. februar 2012 9-16 Nygaard-192 Lørdag d. 3. marts 2012 9-16 Nygaard-192 Underviser 28 Jesper Gulmann Henriksen (jgh@wincubate.net)
Materiale John Martin Introduction to Languages and the Theory of Computation 4. udgave, McGraw-Hill, 2010 + supplerende materiale på kursets hjemmeside 29
Aktivitet Forventet aktivitet pr. uge = 15 timer 3 x 7 timers seminarer = 21 timer i alt 6 uger á 15 timer pr. uge = 90 timer i alt Tid mellem seminarer = 69 timer i alt Forventet hjemmearbejde 11 timers hjemmearbejde pr. uge Der forventes, at man Læser de angivne kapitler i bogen Løser opgaverne Afleverer de 3 obligatoriske opgaver 30
Opgaver Teoretiske opgaver Udfordrer forståelsen af det gennemgåede materiale Øvelse i typisk datalogisk matematik Programmeringsprojekt (dregaut Java-pakken) Implementation af de gennemgåede algoritmer, der udledes af konstruktive beviser Supplement til teoretiske opgaver Øvelse i Java-programmering 31
Eksamen Onsdag d. 21. marts 2012 Mundtlig, ekstern censur, 7-trinsskalaen 20 min. per person, uden forberedelsestid For at kunne indstilles til eksamen skal man have godkendt besvarelser af de obligatoriske opgaver Eksamenspørgsmålene er på hjemmesiden 32
Eksamen Formålet med kurset er at den studerende skal opnå følgende kompetencer: definere den basale terminologi (strenge, sprog, klasser af sprog, samt basale operationer på disse). beskrive basale abstrakte sprogformalismer (regulære udtryk, endelige automater, regulære grammatikker, kontekstfri grammatikker) - fra intuitivt niveau og konkrete eksempler til formel notation og generelle definitioner. beskrive egenskaber ved formalismerne, bl.a. ækvivalens, begrænsninger og beslutningsprocedurer. forklare og udføre algoritmer, der oversætter mellem formalismerne eller afgør beslutningsproblemer - fra konkrete eksempler til generelle og formelle beskrivelser. bevise og analysere egenskaber ved formalismerne (ved hjælp af konstruktive beviser og induktionsbeviser) - fra intuitivt niveau til formelle detaljer. Eksamen vil vurdere i hvor høj grad kursisten besidder disse kompetencer 33
Agenda Introduktion Hvad er Regularitet og Automater? Praktiske Oplysninger om Kurset Regulære Udtryk + Øvelser Induktion og Beviser Frokost Endelige Automater + Øvelser Skelnelighed og Produktkonstruktion + Øvelser dregaut-pakken Case Study: Modellering og Verifikation
Alfabeter, strenge og sprog Et alfabet er en endelig mængde (af tegn/symboler) eks.: ={a,b,c} En streng x er en endelig sekvens af tegn fra alfabetet eks.: x=abba repræsenterer den tomme streng (strengen af længde 0), Et sprog L er en mængde af strenge eks.: L={,cab,abba} * er mængden af alle strenge over dvs. L * hvis L er et sprog over eks.: hvis ={a,b,c} så er *={,a,b,c,aa,ab,ac,aaa,aab,...} 35
Konkatenering af strenge Hvis x,y *, så er x y (konkateneringen af x og y) den streng, der fremkommer ved at sætte tegnene i x før tegnene i y Eks.: hvis x=abb og y=a, så er x y=abba y x=aabb Bemærk: x = x=x for alle x x y skrives ofte xy (uden ) 36
Konkatenering af sprog Hvis L 1,L 2 *, så er L 1 L 2 (konkateneringen af L 1 og L 2 ) defineret ved L 1 L 2 = {x y x L 1 y L 2 } Eks.: Hvis ={0,1,2,a,b,c} og L 1 ={,10,212} L 2 ={cab,abba} så er L 1 L 2 ={cab,10cab,212cab,abba,10abba,212abba} Bemærk: L { } = { } L = L for alle L L Ø = Ø L = Ø for alle L L 1 L 2 skrives ofte L 1 L 2 (uden ) 37
Kleene stjerne L k = LL L konkatenering af k forekomster af L L 0 = { } L* = U i=0... L i (Kleene stjerne af L) L + = L*L 38
Rekursive definitioner En definition er rekursiv, hvis den refererer til sig selv Eks.: Fibonacci f: 1 hvis n=0 eller n=1 f(n) = f(n-1)+f(n-2) ellers Enhver selv-reference skal referere til noget mindre og føre til endeligt mange selv-referencer 39
En rekursiv definition af strenge x er en streng over alfabetet, dvs. x *, hvis x =, eller x = y a hvor y * og a (underforstået: * er den mindste mængde, der opfylder dette) Eksempel: abc = ((( a) b) c) * (hvor ={a,b,c,d}) 40
Syntaks af regulære udtryk Mængden R af regulære udtryk over er den mindste mængde, der indeholder følgende: Ø a for hver a (r 1 +r 2 ) hvor r 1,r 2 R (r 1 r 2 ) hvor r 1,r 2 R (r*) hvor r R 41
Rekursive strukturer Tænk på en rekursiv struktur (f.eks. et regulært udtryk eller en streng) som en træ-struktur Eksempel: Det regulære udtryk (a+((b*)c)) svarer til: a + * c b Eksempel: Strengen baa svarer til: a a 42 b
43 Semantik af regulære udtryk Sproget L(r) af et regulært udtryk r defineres i strukturen af r : L(Ø) = Ø L( ) = { } L(a) = {a} L( (r 1 +r 2 ) ) = L(r 1 ) L(r 2 ) L( (r 1 r 2 ) ) = L(r 1 )L(r 2 ) L( (r*) ) = (L(r))* L( ) = L((Ø*)), så vi kan opfatte som en forkortelse for (Ø*)
Regulære sprog Definition: Et sprog S er regulært hvis og kun hvis der eksisterer et regulært udtryk r hvor L(r)=S 44
Parenteser i regulære udtryk Forening og konkatenering er associative, så vi vælger at tillade f.eks. at (a+(b+c)) kan skrives a+b+c at (a(bc)) kan skrives abc Vi definerer præcedens for operatorerne: * binder stærkest konkatenering binder middel + binder svagest eks.: (a+((b*)c)) kan skrives a+b*c 45
Eksempel Betragt følgende regulære udtryk r over alfabetet {0,1}: r = (1+ )001 På grund af parentesreglerne er dette det samme som r = ((((1+ )0)0)1) Så sproget for r er L(r) = ((({1} { }){0}){0}){1}) = {1001,001} 46
Quiz! 1. Hvad er et sprog? 2. Hvad betyder {a,bc}*? 3. Hvad er betingelsen for at et sprog S er regulært? 47
Øvelser Regulære udtryk [Martin, Opg. 3.2] [Martin, Opg. 3.7 a) e)] Opg. S1.1 (på hjemmesiden)
Agenda Introduktion Hvad er Regularitet og Automater? Praktiske Oplysninger om Kurset Regulære Udtryk + Øvelser Induktion og Beviser Frokost Endelige Automater + Øvelser Skelnelighed og Produktkonstruktion dregaut-pakken Case Study: Modellering og Verifikation
Reverse-operatoren Givet en streng x *, definer reverse(x) i strukturen af x: reverse( ) = reverse(ya) = a(reverse(y)) hvor y *, a Eksempel: reverse(123) =... = 321 50
Reverse på sprog Givet et sprog L *, definer Reverse(L) = { reverse(x) x L } Eksempel: Hvis L={,123,abc} så er Reverse(L)={,321,cba} 51
Rekursive definitioner og induktionsbeviser Rekursive definitioner giver ofte anledning til induktionsbeviser Hvis vi skal bevise noget på form for alle X gælder P(X), hvor mængden af X er er defineret rekursivt, så kan vi prøve bevisteknikken induktion i strukturen af X 52
Strukturel induktion Vi skal bevise noget på form for alle X gælder P(X), hvor mængden af X er er defineret rekursivt Enhver af X erne er opbygget ved et endeligt antal anvendelser af reglerne fra den rekursive definition nogle X er er atomare resten er sammensatte af mindre X er Induktionsprincippet: Bevis at 1. hvis X er atomar, så gælder P(X) basis 2. hvis X er sammensat af X 1,,X n, induktions-skridtet så gælder P(X) under antagelse af, induktionsat P(X 1 ),,P(X n ) gælder hypotesen Hvis begge dele kan bevises, så gælder P(X) for alle X 53
Et induktionsbevis Påstand: Hvis S er et regulært sprog, så er Reverse(S) også regulært (dvs. de regulære sprog er lukkede under Reverse) Bevis: S er regulært, så der eksisterer et regulært udtryk r så L(r)=S Vi vil vise ved induktion i strukturen af r, at der eksisterer et regulært udtryk r hvor L(r )=Reverse(L(r)), hvilket medfører, at Reverse(S) er regulært 54
Basis r = Ø: vælg r = Ø L(r ) = Ø = Reverse(Ø) = Reverse(L(r)) r = a hvor a : vælg r = a... 55
Induktionsskridt For alle deludtryk s af r kan vi udnytte induktionshypotesen: der eksisterer et regulært udtryk s hvor L(s )=Reverse(L(s)) r = r 1 +r 2 hvor r 1,r 2 R : vælg r = r 1 +r 2 hvor r 1 og r 2 er givet af i.h.... r = r 1 r 2 hvor r 1,r 2 R : vælg r = r 2 r 1... r = r 1 * hvor r 1 R : vælg r = (r 1 )*... 56 Lemma 1: x,y *: reverse(xy)= reverse(y)reverse(x) bevis: induktion i strukturen (eller længden) af y Lemma 2: i 0,E *: Reverse(E i ) = (Reverse(E)) i bevis: induktion i i
Konstruktive beviser Bemærk at dette induktionsbevis indeholder en algoritme til givet et regulært udtryk for S at konstruere et regulært udtryk for Reverse(S) Sådanne beviser kaldes konstruktive Husk altid både konstruktionen og beviset for dens korrekthed 57
Algoritme Input: et regulært udtryk r Definer en rekursiv funktion REV ved: REV(Ø) = Ø REV(a) = a, hvor a REV(r 1 +r 2 ) = REV(r 1 ) + REV(r 2 ) REV(r 1 r 2 ) = REV(r 2 ) REV(r 1 ) REV(r 1 *) = (REV(r 1 ))* Output: det regulære udtryk REV(r) 58
Agenda Introduktion Hvad er Regularitet og Automater? Praktiske Oplysninger om Kurset Regulære Udtryk + Øvelser Induktion og Beviser Frokost Endelige Automater + Øvelser Skelnelighed og Produktkonstruktion dregaut-pakken Case Study: Modellering og Verifikation
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 ved Seminar 2...) 60
En endelig automat En endelig automat, der genkender strenge over alfabetet ={0,1} med ulige antal 1 er: 0 0 1 Automaten læser strengen ét tegn ad gangen, fra venstre mod højre Hvis automaten ender i en accept-tilstand, så accepteres(=genkendes) strengen 1 61
At køre en streng på en automat 0 0 1 Eksempel: vi vil vide om strengen 1010 accepteres Vi starter i starttilstanden og læser strengen 1 1010 Vi ender i en ikke-accept tilstand, så strengen accepteres ikke 62
Hvad repræsenterer tilstandene? Hver tilstand repræsenterer en viden om den hidtil læste delstreng Eksempel: 0 0 1 X Y 1 X: der er læst et lige antal 1 er Y: der er læst et ulige antal 1 er 63
Formel definition af endelige automater En endelig automat (finite automaton/fa) er et 5-tupel (Q,, q 0, A, ) hvor Q er en endelig mængde af tilstande er et alfabet q 0 Q er en starttilstand A Q er accepttilstande : Q Q er en transitionsfunktion 64
Eksempel Denne grafiske repræsentation af en automat: 0 0 1 X Y 1 svarer til 5-tuplet (Q,, q 0, A, ), hvor Q = {X,Y} = {0,1} q 0 = X A = {Y} : Q Q er denne funktion: tilstand input 0 1 X X Y Y Y X 65
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 66
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 L(M) af en FA M er mængden af strenge, den accepterer M genkender sproget L(M) 67
Formel definition af L(M) Givet en FA M=(Q,, q 0, 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 0, x) A Definer L(M) = { x * x accepteres af M } 68
Quiz! Lad ={a,b}. Tegn en FA M så... 1. L(M) = * a,b 2. L(M) = Ø a,b a 3. L(M) = {a} b a,b a,b a b 69 4. L(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
Øvelser Endelige automater [Martin, Opg. 2.2 e)] [Martin, Opg. 2.3 a) b)] [Martin, Opg. 2.1 a) c)]
Agenda Introduktion Hvad er Regularitet og Automater? Praktiske Oplysninger om Kurset Regulære Udtryk + Øvelser Induktion og Beviser Frokost Endelige Automater + Øvelser Skelnelighed og Produktkonstruktion + Øvelser dregaut-pakken Case Study: Modellering og Verifikation
Skelnelighed Givet et sprog L, hvor mange tilstande er nødvendige i en FA M hvis L(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 0, x) *(q 0, y) 72
73 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
Eksempel Hvis L = { s {0,1}* s ender med 10 } x = 00 y = 01 så er x og y skelnelige mht. L Bevis: z = 0 skelner x og y dvs. hvis (Q,, q 0, A, ) genkender L så er *(q 0, x) *(q 0, y) 74
Nødvendigt antal tilstande i en FA Antag x 1, 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 0, x i )= *(q 0, x j ) modstrid med at x i og x j er skelnelige mht. L 75
Eksempel 1: En stor automat Lad L 42 = { x {0,1}* x 42 og det 42. symbol fra højre i x er et 1 } Lad x 1, x 2,..., x 2 42 være alle strenge af længde 42 over alfabetet {0,1} 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) 76
Eksempel 2: palindromer Lad pal = { x {0,1}* x=reverse(x) } Lad x og y være to vilkårlige forskellige strenge over {0,1} 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 77
Forening af regulære sprog Givet to regulære sprog, L 1 og L 2 er L 1 L 2 også regulært? Ja! (dvs. klassen af regulære sprog er lukket under forening) 78
M 1 : (strenge med lige antal 0 er) Eksempel 1 X 0 0 1 Y M 2 : A 1 (strenge der ender med 0) 1 0 B 0 1 1 M: L(M) = L(M 1 ) L(M 2 ) 79 1 XA XB 0 0 0 0 YA YB 1
Produktkonstruktionen Antag vi har to FA er: M 1 = (Q 1,, q 1, A 1, 1 ) M 2 = (Q 2,, q 2, A 2, 2 ) Definer en ny FA: M = (Q,, q 0, A, ) hvor Q = Q 1 Q 2 q 0 = (q 1, q 2 ) A = { (p, q) p A 1 q A 2 } ((p, q), a) = ( 1 (p, a), 2 (q, a)) Der gælder nu: L(M) = L(M 1 ) L(M 2 ) 80 produktmængden af tilstande
Konstruktivt bevis for korrekthed Lemma: x *: *((p, q), x) = ( 1 *(p, x), 2 *(q, x)) (Bevis: opgave 2.11, induktion i x) Brug lemmaet samt definitionerne af M og L( ) 81
Nøjes med opnåelige tilstande Produktkonstruktionen bruger Q = Q 1 Q 2 I praksis er hele tilstandsrummet sjældent nødvendigt Eksempel: 1 0 M X Y 1 : M 2 : 0 1 1 1 A 0 0 1 1 B M: L(M) = L(M 1 ) L(M 2 ) XA 1 XB 0 0 0 0 YA 1 YB Kun tilstande, der er opnåelige fra starttilstanden er relevante for sproget! (Bevis: opg.) 82
Fællesmængde og differens Givet to regulære sprog, L 1 og L 2 1. er L 1 L 2 også regulært? 2. er L 1 -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 1 q A 2 } for -, vælg A = { (p, q) p A 1 q A 2 } 83
Givet et regulære sprog R Komplement er R (Rs komplement) også regulært? Ja! (dvs. klassen af regulære sprog er lukket under komplement) Bevis 1: Vælg L 1 = * og L 2 = R, hvorved R = L 1 -L 2 Bevis 2: Givet en FA M = (Q,, q 0, A, ) hvor L(M)=R Definer M = (Q,, q 0, Q-A, ) Derved gælder at L(M )=R (hvorfor?) 84
Eksempel M: 1 XA 0 0 1 YA (strenge med lige antal 0 er eller ender med 0) 1 XB 0 0 YB 1 1 1 M : L(M ) = (L(M)) (strenge med ulige antal 0 er og ender ikke med 0) 1 XA XB 0 0 0 0 YA YB 1 85
Øvelser Produktkonstruktion [Martin, Opg. 2.10]
Agenda Introduktion Hvad er Regularitet og Automater? Praktiske Oplysninger om Kurset Regulære Udtryk + Øvelser Induktion og Beviser Frokost Endelige Automater + Øvelser Skelnelighed og Produktkonstruktion + Øvelser dregaut-pakken Case Study: Modellering og Verifikation
dregaut.regexp Java-repræsentation af regulære udtryk Speciel syntaks: # betyder Ø % betyder Alfabetet angives som en mængde af Unicode-tegn Eksempel: ((a+ )cbc)* skrives som ((a+%)cbc)* 88
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 89
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 0 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 90
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) 91
Obligatorisk Opgave 1 Detaljer kan ses på hjemmesiden Studér de udleverede programdele Repræsentation af FA er Yderligere udleverede metoder: delta(), deltastar(), complement() Implementér FA-metoder accepts(), intersection(), union(), minus() Opbyg en FA og eksporter den grafisk
Agenda Introduktion Hvad er Regularitet og Automater? Praktiske Oplysninger om Kurset Regulære Udtryk + Øvelser Induktion og Beviser Frokost Endelige Automater + Øvelser Skelnelighed og Produktkonstruktion + Øvelser dregaut-pakken Case Study: Modellering og Verifikation
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 94
Modellering af systemet TOG approach KONTROLSYSTEM approach BOM lower exit cross raise lower raise down exit up 95 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
Modellering som FA er Eksempel: lower, raise, down, up approach lower, raise, down, up 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 96
Kombination af komponenterne Vi er interesseret i de sekvenser af begivenheder, der opfylder alle komponenterne Produktkonstruktion: L(M) = L(M TOG ) L(M KONTROL ) L(M BOM ) 97
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 98
Verifikation Korrekthed: L(M) (L(S)) = Ø dvs. vi skal bruge produktkonstruktion (igen) komplement algoritme til at afgøre om sproget for en given FA er tomt (Seminar 3) hvis L(M) (L(S)) Ø: enhver streng i L(M) (L(S)) svarer til 99 et modeksempel (algoritme: Seminar 3)
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 100
Resumé Introduktion Hvad er Regularitet og Automater? Praktiske Oplysninger om Kurset Regulære Udtryk + Øvelser Induktion og Beviser Frokost Endelige Automater + Øvelser Skelnelighed og Produktkonstruktion dregaut-pakken Case Study: Modellering og Verifikation
Løsninger på udvalgte øvelser Martin, Opg. 2.2 e) Sproget bestående af strenge, der udgøres af konkatenationer af delstrengene ab eller ba, dvs. (ab + ba)^*
Løsninger på udvalgte øvelser Martin, Opg. 2.3 a) Det kræver 6 tilstande b) Det kræver n+2 tilstande Hvert præfiks af x og en streng af længde n+1 er alle indbyrdes skelnelige
Løsninger på udvalgte øvelser Martin, Opg. 3.2 a) aa b) ab c) a d) aba
Løsninger på udvalgte øvelser Martin, Opg. 3.7 a) b*ab*ab* b) (a + b)*a(a + b)*a(a + b)* c) + a + b + (a + b)*(aa + ba + bb) d) (aa + bb)(a + b)* + (a + b)*(aa + bb) e) (b + ab)*( + a)
Løsninger på udvalgte øvelser Opg. S1.1 a) Sproget bestående af alle strenge med et ulige antal b er b) Sproget bestående af alle strenge af længde 3n eller 3n+1 for et naturligt tal n
Løsninger på udvalgte øvelser Opg. S1.2 De 2 første er lovlige. Den sidste har et '%' for meget til sidst. Opg. S1.3 Alle 3 strenge er lovlige (nr. 3 dog kun hvis man ignorerer referencerne til RFC2821 om lovlige domain-navne).