Växjö 14 april -04Språk & logik: Finita automater1 DAB760: Språk och logik 14/4:Finita automater Leif Grönqvist Växjö Universitet (MSI) GSLT (Sveriges nationella forskarskola i språkteknologi) Göteborg Universitet (Institutionen för lingvistik)
2Språk & logik: Finita automaterVäxjö 14 april -04 Formell språkteori Viktigt att kunna definiera och känna igen mönster Kompilatorteknik Optisk teckenigenkänning (OCR) Textsökning (i databaser och på internet) Stavnings- och grammatikkontroll Automatisk översättning Mönstren byggs upp av ett ändligt antal byggstenar (bokstäver, ljud, etc.)
3Språk & logik: Finita automaterVäxjö 14 april -04 En finit automat (FSA) FSA = Finite State Automaton Ett alfabet (a,b,c,d) Ett antal tillstånd (1,2,3) Ett starttillstånd (2) Ett antal sluttillstånd (3) Måste sluta i sluttilsstånd a b c d Start
4Språk & logik: Finita automaterVäxjö 14 april -04 Lite terminologi Alfabet (Σ): en ändlig mängd symboler i ett formellt språk (t.ex. siffror eller bokstäver) Sträng: sekvens av symboler ur alfabetet ε är den tomma strängen (längd 0) a 1 a 2 … a n :sträng av längd n Språk: en mängd strängar Σ * är språket uppbyggt av symboler ur Σ Σ + är språket av icke-tomma strängar 0 är det tomma språket FSA (Finite State Automaton): accepterar vissa strängar FST (Finite State Transducer): översättare mellan par av strängar ur två språk Reguljära uttryck: ett annat sätt att beskriva språken ovan
5Språk & logik: Finita automaterVäxjö 14 april -04 Exempel på ett språk: jämna binära tal Σ = {0, 1} Exempel på strängar i Σ * : ε, 0, 1, 01, 10, 000 Språket J: Mängden av alla strängar i Σ * vars sista symbol är 0 (och första är 1 om längden är minst 2 symboler) Exempel: 0, 10, 100, Vi vill inte ha med 00, 010, ε, 1, 111, etc.
6Språk & logik: Finita automaterVäxjö 14 april -04 Definition av en FSA Består av fem komponenter: S={s 0, s 1, …, s m }: en ändlig mängd tillstånd Σ = { 0, 1,…, n }: ett alfabet En övergångsfunktion från par av till tillstånd, dvs. “bågar mellan tillstånd med en symbol på” s 0 ε S: ett starttillstånd F S: en mängd sluttillstånd (accepterande tillstånd) FSA:er representeras ofta som grafer: noder=tillstånd bågar med symboler representerar övergångar starttillstånd: en pil märkt med start accepterade tillstånd markeras som dubbla cirklar
7Språk & logik: Finita automaterVäxjö 14 april -04 Automat för jämna binära tal (felaktig) Alfabetet Σ = {0, 1} Tillståndsmängd S = {0, 1} Starttillstånd: 0 Accepterande tillstånd: start 0 1
8Språk & logik: Finita automaterVäxjö 14 april -04 Hur används automater för att känna igen strängar i ett språk? 1.Starta i starttillståndet 2.Läs nästa symbol i strängen Om strängen var slut: Acceptera om vi står i ett accepterande tillstånd Förkasta annars 3.Följ bågen markerad med inläst symbol Om ingen sådan båge finns så förkastas strängen 4.Gå till steg 2.
9Språk & logik: Finita automaterVäxjö 14 april -04 Att utforska ett språk utifrån dess FSA Om språket är ändligt så kan samtliga strängar fås fram genom att följa alla möjliga vägar från starttillstånd till accepterande tillstånd Annars kan vi ta fram godtyckligt många strängar i språket genom att följa möjliga vägar tills vi är nöjda Vilka strängar ingår i språket ”jämna binära tal”? De vi vill ha där och inga andra?
10Språk & logik: Finita automaterVäxjö 14 april -04 Determinism eller inte Deterministisk FSA: högst ett tillstånd s k till vilket det finns en övergång från s i till s k för symbol j. Inga övergångar för symbol ε Intuitivt: ”Det finns aldrig mer än en övergång att välja på när man stegar runt i automaten” Icke-deterministisk FSA Uppfyller inte båda kraven ovan Besvärligare att implementera Långsammare att slå upp strängar i Kan ofta ha färre tillstånd än motsvarande deterministiska FSA Kan göras om till en deterministisk FSA
11Språk & logik: Finita automaterVäxjö 14 april -04 Determinisering av icke- deterministisk FSA En icke-deterministisk automat N med tillståndsmängd S={s 0, s 1, …, s m } kan determiniseras till D: Tillstånd i D (D-tillstånd) utgörs av mängder av tillstånd i N (N-tillstånd) Låt S 0 = {s 0 } vara starttillstånd för D Givet ett D-tillstånd S i och en symbol x, skapa en övergång från S i för x till det D-tillstånd S j som innehåller alla N-tillstånd för vilka det finns en övergång för x från något N-tillstånd i S i De accepterande tillstånden i D är de D-tillstånd som innehåller något av de accepterande N- tillstånden
12Språk & logik: Finita automaterVäxjö 14 april -04 Viktiga egenskaper hos FSA/FST Epsilonfri: inga övergångar är markerade med epsilon Deterministisk: Inga tillstånd har mer än en utgående båge med samma symbol (symbolpar) Minimal: Det finns ingen automat med färre tillstånd som beskriver samma språk
13Språk & logik: Finita automaterVäxjö 14 april -04 FST: Finite State-transduktorer Ett övre och ett undre språk Symbolerna skrivs som par av symboler från respektive alfabet a:b betyder symbol a från övre språket och symbol b från undre a:ε betyder symbol a från övre språket och inget från det undre a betyder symbol a från både det övre och undre språket Verifiering av par av strängar kan göras Uppslagning av sträng i övre språket givet sträng i undre språket Uppslagning av sträng i undre språket givet sträng i övre språket
14Språk & logik: Finita automaterVäxjö 14 april -04 En transduktor Alfabetet Σ = {a, b} Tillståndsmängd S = {1, 2, 3} Accepterande tillstånd: 3 Starttillstånd: 2 Vad gör den? Är den deterministisk? a:a a:ε b:b a:b Start
15Språk & logik: Finita automaterVäxjö 14 april -04 Nästa gång Bygg automater med hjälp av reguljära uttryck