DAB760: Språk och logik

Relevanta dokument
Automater. Matematik för språkteknologer. Mattias Nilsson

Idag: Reguljära språk Beskrivs av Reguljära uttryck DFA Grammatik

Föreläsning 2 5/6/08. Reguljära uttryck 1. Reguljära uttryck. Konkatenering och Kleene star. Några operationer på språk

Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Programmering för språkteknologer II. OH-serie: Ändliga automater. reguljära uttryck i Java. Deterministiska ändliga automater

TDDD02 Föreläsning 2 HT Reguljära uttryck och reguljära språk Lars Ahrenberg

Föreläsning 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Automatateori (2) Idag: Sammanhangsfria språk. Dessa kan uttryckas med Grammatik PDA

MÄLARDALENS HÖGSKOLA. CD5560 Formella språk, automater och beräkningsteori. Användarmanual. för simulatorn JFLAP

DD1361 Programmeringsparadigm. Formella Språk & Syntaxanalys. Per Austrin

729G09 Språkvetenskaplig databehandling

Grundläggande textanalys, VT2012

Föreläsning 7: Syntaxanalys

b) S Ø aa, A Ø aa» bb, B Ø aa» bc, C Ø ac» bc» 2. Låt L vara språket över 8a< som nedanstående NFA accepterar.

Alfabeten, strängar och språk. String

Labb 1 - Textbearbetning med reguljära uttryck. Formella språk. Definitioner. Chomskyhierarkin. Formella språk. Formella språk

1 Inledning 1. 4 Utvärdering 7. 5 Diskussion 7

PROV I MATEMATIK Automatateori och formella språk DV1 4p

Lite mer psykologi. L2: Automater, Sökstrategier. Top-down. Kimballs sju principer

Matematik för språkteknologer

Källkodning. Egenskaper hos koder. Några exempel

Datorlingvistisk grammatik

Definition. Mängden av reguljära uttryck på alfabetet Σ definieras av. om α och β är reguljära uttryck så är (α β) ett reguljärt uttryck

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Reguljära uttryck Grammatiker Rekursiv nedåkning Allmänna kontextfria grammatiker. Syntaxanalys. Douglas Wikström KTH Stockholm

Aritmetisk kodning. F (0) = 0 Exempel: A = {1, 2, 3} k=1. Källkodning fö 5 p.1/12

DD1361 Programmeringsparadigm. Formella Språk & Syntaxanalys. Per Austrin

10. Mängder och språk

Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts.

Optimala koder. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or.

Shannon-Fano-Elias-kodning

Föreläsning 11 - Automater, textsökning, tillstånd

DD1361 Programmeringsparadigm. Formella Språk & Syntaxanalys. Per Austrin

Föreläsning 7: Syntaxanalys

Kontextfria grammatiker

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Skrivstöd. Joakim Nivre. Introduktion till språkteknologi. Skrivstöd. Inledning. Orsaker till stavfel. Detektering av icke-ord

Grundläggande textanalys. Joakim Nivre

Formell Verifiering. Hur vet man att ett system fungerar korrekt? Lisa Kaati

F2 Datarepresentation talbaser, dataformat och teckenkodning EDAA05 Datorer i system! Roger Henriksson!

Uppgifter i TDDC75: Diskreta strukturer Kapitel 8 Ordning och oändlighet

Rekursiva algoritmer sortering sökning mönstermatchning

Algoritmer, datastrukturer och komplexitet

Tentamen, Algoritmer och datastrukturer

11. Reguljära uttryck och grammatiker

Fonologi. Kommutationstest. Minimala par. Hur bestämmer man vilka fonem ett språk har?

Hur bestämmer man vilka fonem ett språk har? Fonologi. Kommutationstest. Hur bestämmer man vilka fonem ett språk har?

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2

Dagens föreläsning Programmering i Lisp Fö 5

Mer om språk och Ruby

Talsystem Teori. Vad är talsystem? Av Johan Johansson

Konstruktion av datorspråk

Grundläggande logik och modellteori

F2 Datarepresentation talbaser, dataformat och teckenkodning

Objektorienterad modellering och diskreta strukturer. 13. Problem. Sven Gestegård Robertz. Datavetenskap, LTH

Programmering II (ID1019)

STRÄNGAR DATATYPEN. Om du vill baka in variabler eller escape-tecken måste du använda dubbla citattecken. strängar

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

11. Reguljära uttryck och grammatiker

Använda Convertus Kursplaneöversättaren

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

Föreläsning 8: Intro till Komplexitetsteori

Träd och koder. Anders Björner KTH

PCP-satsen på kombinatoriskt manér

Datastrukturer och Algoritmer D0041D

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Vardagssituationer och algebraiska formler

Avslutning. Vad? Hur? Anmärkningar inför tentan 2. Vad ska kunnas?

Sekvensnät Som Du kommer ihåg

DD1320 Tillämpad datalogi. Lösning (skiss) till tenta 20 okt 2011

Assemblerprogrammering del 1

Repetition och sammanfattning av syntes och analys av sekvensnät

Introduktion till programmering och Python Grundkurs i programmering med Python

Mer om språk och Ruby

Primitivt rekursiva funktioner och den aritmetiska hierarkin

REGULJÄRA SPRÅK (8p + 6p) 1. DFA och reguljära uttryck (6 p) Problem. För följande NFA över alfabetet {0,1}:

Teoretisk del. Facit Tentamen TDDC (6)

Block 2 Algebra och Diskret Matematik A. Följder, strängar och tal. Referenser. Inledning. 1. Följder

13. CHURCH S OCH GÖDELS SATSER. KORT ORIENTERING OM BERÄKNINGSBARHET, EFFEKTIV UPPRÄKNELIGHET OCH AVGÖRBARHET.

DD1350 Logik för dataloger. Fö 7 Predikatlogikens semantik

ENKEL Programmering 3

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt

Programmering i C++ Kompilering från kommandoraden

Ett enkelt OCR-system

Övningsexempel i Artificiella språk och syntaxanalys 2D1373

MATEMATIKENS SPRÅK. Avsnitt 1

729G04 - Diskret matematik. Lektion 4

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

AGENTBASERAD MODELLERING

Grundläggande datalogi - Övning 9

F2 Binära tal EDA070 Datorer och datoranvändning

Tentamen i Digitalteknik, EIT020

Formell logik Kapitel 1 och 2. Robin Stenwall Lunds universitet

Föreläsning 10/11! Gruppuppgifter: Gruppuppgift 1: Alla har redovisat. Gruppuppgift 2: Alla har redovisat Gruppuppgift 3: På gång.

En fonotaktisk modell för svensk fonemigenkänning

Programmeringsolympiaden 2017

1 Inledning. 1.1 Programförklaring. 1.2 Innehållet. 1.3 Beteckningskonventioner - 1 -

TDDI16: Datastrukturer och algoritmer

Föreläsning 10. Grafer, Dijkstra och Prim

Transkript:

DAB76: Språk och logik /4: Finita automater och -7 reguljära uttryck Leif Grönqvist (leif.gronqvist@msi.vxu.se) Växjö Universitet (MSI) GSLT (Sveriges nationella forskarskola i språkteknologi) Göteborg Universitet (Institutionen för lingvistik) Formell språkteori Viktigt att kunna definiera och känna igen mönster Optisk teckenigenkänning (OCR) Kompilatorteknik Textsökning (i databaser och på Internet) Stavnings- och grammatikkontroll Automatisk översättning Mönstren byggs upp av ett ändligt antal byggstenar (bokstäver, ord, ljud, etc.) En finit automat (FSA) Lite terminologi FSA = Finite State Automaton Ett alfabet (a, b, c, d) Ett antal tillstånd (,,) Ett tillstånd () Ett antal sluttillstånd () Måste sluta i sluttillstånd a b c d 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 ) a a 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 ä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 4 Exempel på ett språk: jämna binära tal Σ = {, } Exempel på strängar i Σ * : ε,,,,, Språket J: Mängden av alla strängar i Σ * vars sista symbol är (och första är om längden är minst symboler) Exempel:,,, Vi vill inte ha med,, ε,,, etc. Definition av en FSA Består av fem komponenter: S={s, s,, s m }: en ändlig mängd tillstånd Σ = {σ, σ,, σ n }: ett alfabet En övergångsfunktion från par av <tillstånd, symbol> till tillstånd, dvs. bågar med tillhörande symboler mellan tillstånd s ε S: ett tillstå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 tillstånd: en pil märkt med accepterade tillstånd markeras som dubbla cirklar 5 6

Automat för jämna binära tal Hur används automater för att känna igen strängar i ett språk? Alfabetet Σ = {, } Tillståndsmängd S = {, } tillstånd: Accepterande tillstånd:. a i tillståndet. 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. 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. 7 8 Att utforska ett språk utifrån dess FSA Determinism eller inte Om språket är ändligt så kan samtliga strängar fås fram genom att följa alla möjliga vägar från tillstå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? Deterministisk FSA: <s i, σ j > 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 9 Determinisering av ickedeterministisk FSA Automat för jämna binära tal (felaktig) En icke-deterministisk automat N med tillståndsmängd S={s, s,, 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 = {s } vara tillstånd för D De accepterande tillstånden i D är de D-tillstånd som innehåller något av de accepterande N- tillstånden 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 Alfabetet Σ = {, } Tillståndsmängd S = {, } tillstånd: Accepterande tillstånd:

Exempel på ett språk: jämna binära tal Σ = {, } Exempel på strängar i Σ * : ε,,,,, Språket J: Mängden av alla strängar i Σ * vars sista symbol är (och första är om längden är minst symboler) Exempel:,,, Vi vill inte ha med,, ε,,, etc. Korrekt (icke-deterministisk) automat för jämna binära tal Icke-deterministisk eftersom tillstånd har två övergångar med symbol Vi gör den deterministisk! 4 De två automaterna Resultatet av determiniseringen Den icke-deterministiska (N) S = {,,} S = F = {} Σ = {, } Den deterministiska (D) S = {,,,,,, } S = F = {,,, } (alla som innehåller N- tillståndet ) Σ = {, } 5 6 Men vissa tillstånd kan man inte komma till! FST: Finite State-transduktorer Det finns inga övergångar till:, eller så vi tar bort dem Kvar blir en deterministisk automat med fyra tillstånd 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 7 8

En transduktor Alfabetet Σ = {a, b} Tillståndsmängd S = {,, } Accepterande tillstånd: tillstånd: a:a Vad gör den? Är den deterministisk? a:ε b:b a:b Påminnelse FSA = Finite state automaton (finite stateautomat Avgör om symbolsträngar tillhör ett språk Kan generera alla symbolsträngar i språket FST = Finite state transducer (finite statetransduktor) Översätter symbolsträngar från övre till undre språket eller tvärtom Verifierar om en given sträng i övre språket motsvaras av en annan given sträng i undre språket Kan generera alla strängpar s, s där s ingår i övre språket, s ingår i undre språket, samt s i övre motsvarar s i det undre 9 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 Implementation Deterministiska FSA/FST implementeras extremt effektivt i C En label för varje tillstånd Använd goto för att hoppa mellan tillstånd Stacken används inte vi behöver inte komma ihåg varifrån vi kommit Icke-determinism är besvärligare Välj en väg i taget Backtracka för att testa alla möjligheter I praktiken är de användbara om det inte finns för mycket icke-determinism Reguljära uttryck Ett annat sätt att definiera formella språk Enklare för människor liknar mer vårt sätt att tänka(?) Språken vi kan definiera är de samma som för finita automater De kan kompileras till deterministiska automater eller transduktorer Exempel i UNIX ls myfiles*[45].txt egrep a [a-z]+ has four (legs) (arms) *.txt Definitioner Atomära reguljära uttryck givet alfabetet Σ x (där x ε Σ) ε (den tomma strängen) Ø (matchar ingenting) R (en variabel innehållande ett reguljärt uttryck) Språken som definieras av atomära reguljära uttryck L(x) = {x} L(ε) = {ε} L(Ø) = Ø 4 4

Sammansatta reguljära uttryck Om R och S är reguljära uttryck så är: Union R S ett reguljärt uttryck L (R S) = L(R) L(S) Konkatenering R S ett reguljärt uttryck L (R S) = {r s r ε L(R), s ε L(S)} Hölje R* ett reguljärt uttryck L (R*) = L(ε R R R R R R ) Precedensordning: Hölje, Konkatenering, Union Exempel: de jämna binära talen Σ = {, } Reguljärt uttryck: ( )* Vi får med Samt alla sekvenser som börjar med och slutar med Men inga sekvenser som börjar med förutom sekvensen 5 6 Utvidgningar Det är smidigt att införa beteckningar för vanliga mängder: Teckenmängden siffra = {,,,, 4, 5, 6, 7, 8, 9} Reguljärt uttryck som beskriver siffra: siffra = ( 4 5 6 7 8 9) Motsvarande i UNIX: [-9] Reguljärt uttryck för heltalskonstant: (- ε) siffra siffra* Fler utvidgningar Fler operatorer Noll eller en: R? R ε En eller flera: R+ R R* Förenklad definition av heltalskonstanter: -? siffra+ Specialtecken i UNIX. Ett godtyckligt ASCII-tecken ^ början på rad $ Radslut [a-z] Ett teckan som är en bokstav a-z [^-9] Ett tecken som inte är en siffra 7 8 Från reguljärt uttryck (RE) till FSA Denna algoritm konverterar ett RE till en icke-deterministisk automat med ε- övergångar tillstånd: s Accepterande tillstånd s A Ingen övergång till s Ingen övergång från s A RE -> FSA Atomära uttryck Ø: Ingen övergång ε: Lägg till en ε-övergång från s till s A Symbol a: Lägg till en a-övergång från s till s A En variabel innehållande ett reguljärt uttryck Operatorer (givet automater för uttrycken R och S) Union (R S) Lägg till en ε-övergång från s till R- och S- Lägg till ε-övergångar från R-accept och S-accept till s A 9 5

RE -> FSA, forts. Operatorer, forts. Konkatenering (R S) Låt s = R- Låt s A = S-accept Låt R-accept = S- Hölje (R*) Lägg till en ε-övergång från s till R- Lägg till en ε-övergång från R-accept till s A Lägg till en ε-övergång från s till s A Lägg till en ε-övergång från R-accept till R- En annan algoritm tar bort ε-övergångarna Exempel De jämna binära talen: ( )* Ytterst har vi en union: R = s S = ( )* R är ett atomärt uttryck: S är en konkatenering av S = S = ( )* S = S är ett hölje, osv. s a FSA -> RE Nästa gång Det finns en algoritm som gör även denna omvandling Läs mer i boken hur den fungerar Finite state-teknologi i språkteknologin Xerox-verktyget XFST Finns både som gratisversion och en mer kraftfull version som kostar pengar Kan användas för att bygga upp och testa automater och transduktorer 4 6