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

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

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.

DAB760: Språk och logik

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

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

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

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

Kontextfria grammatiker

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

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

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

729G09 Språkvetenskaplig databehandling

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

Matematik för språkteknologer

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

Grundläggande textanalys, VT2012

Alfabeten, strängar och språk. String

Föreläsning 7: Syntaxanalys

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

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

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

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

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

10. Mängder och språk

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

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

Datorlingvistisk grammatik

Begreppen "mängd" och "element" är grundläggande begrepp i matematiken.

Övningsexempel i Artificiella språk och syntaxanalys 2D1373

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Klassdeklaration. Metoddeklaration. Parameteröverföring

Logik Filosofiska Institutionen Göteborgs Universitet B-uppsats Vt 08 Handledare: Martin Kaså Palmé MICHAEL KASSLERS TOLVTONSSYSTEM DAVID OLOFSSON

Grundläggande datalogi - Övning 9

Övning 5 - Tillämpad datalogi 2013

Inlämningsuppgift MiniPlotter

Kombinatorik. Kapitel 2. Allmänt kan sägas att inom kombinatoriken sysslar man huvudsakligen med beräkningar av

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

Diskret matematik: Övningstentamen 1

Begreppen "mängd" och "element" är grundläggande begrepp i matematiken.

Algoritmer, datastrukturer och komplexitet

Block 1 - Mängder och tal

1. (6p) (a) Använd delmängdskonstruktionen för att tillverka en DFA ekvivalent med nedanstående NFA. (b) Är den resulterande DFA:n minimal? A a b.

Block 1 - Mängder och tal

Kontinuitet och gränsvärden

Föreläsning 5: Kardinalitet. Funktioners tillväxt

11. Reguljära uttryck och grammatiker

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

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

Turingmaskinen - en abstrakt datormodell

9 Funktioner. Exempel. f(x) = x + 1 sqr(y) = y 2. x, om x < 0. abs(x) =

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

i=1 c i = B och c i = a i eller c i = b i för 1 i n. Beskriv och analysera en algoritm som löser detta problem med hjälp av dynamisk programmering.

Metriska rum, R och p-adiska tal

Lösningar till Algebra och kombinatorik

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Grammatik. BNF-grammatik

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

lex källkod lex.l lexkompilator lex.yy.c C- kompilator lex.yy.c a.out sekvens av tokens a.out input specifikation av tokens mha reguljära uttryck

Funktioner och kombinatoriska tillämpningar. Mars

TSBK04 Datakompression. Övningsuppgifter

Programmering II (ID1019)

TSBK04 Datakompression Övningsuppgifter

Moment 5.5 Övningsuppgifter I 5.60a. 5.60b, 5.60.c, 61

Föreläsning 7: Syntaxanalys

11. Reguljära uttryck och grammatiker

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

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

PCP-satsen på kombinatoriskt manér

729G09 Språkvetenskaplig databehandling

Formell logik Kapitel 1 och 2. Robin Stenwall Lunds universitet

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

Moment Viktiga exempel Övningsuppgifter

Tentamen i Objektorienterad modellering och diskreta strukturer

2MA105 Algebraiska strukturer I. Per-Anders Svensson

Kvalificeringstävling den 30 september 2008

Träd och koder. Anders Björner KTH

Introduktion till programmering och Python Grundkurs i programmering med Python

Föreläsning 6: Induktion

kind spelling Scanning

AUBER 95 9 jan LÖSNINGAR STEG 1:

MÖNSTER OCH TALFÖLJDER

Primitivt rekursiva funktioner och den aritmetiska hierarkin

I kursen i endimensionell analys är mängden av reella tal (eng. real number), R, fundamental.

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Komplexitetsklasser och repetition

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

Tentamen i Grundläggande Programvaruutveckling, TDA548

Uppgift 1 ( Betyg 3 uppgift )

Föreläsning 1: Tal, mängder och slutledningar

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

TAIU07 Matematiska beräkningar med MATLAB för MI. Fredrik Berntsson, Linköpings Universitet. 15 januari 2016 Sida 1 / 26

ÄNDLIGT OCH OÄNDLIGT AVSNITT 4

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

Uppgifter till praktiska tentan, del A. (7 / 27)

Lösningsförslag till exempeltenta 2

PROBLEMLÖSNING. ! GPS! Mål medel analys! Problemlösning i programmering. Lars-Erik Janlert 2007

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem

TDDI16: Datastrukturer och algoritmer

Om semantisk följd och bevis

Transkript:

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

Först några definitioner: Alfabet = en ändlig mängd av tecken. Ex. {0, 1}, {a,b}, {a, b,..., ö} Betecknas ofta med symbolen Σ Sträng = en ändlig sekvens av sammanfogade tecken från ett alfabet. Ex. 01101, abba, kalle abba är en sträng över alfabetet {a, b} Den har längden 4: abba = 4 En tom sträng betecknas med ε och har längden ε = 0 Språk = en (möjligtvis oändlig) mängd av strängar. {ε,a,b,ab,ba,abb,...} är mängden av alla strängar över alfabetet {a,b} Ø - kallas tomma mängden och innehåller inga strängar, inte ens ε.

Reguljära språk: Definitioner: Ø är ett reguljärt språk över Σ För varje σ i Σ är {σ} ett reguljärt språk över Σ. Om L1 och L2 är reguljära språk över Σ så är L1 L2, L1L2 och L1* reguljära språk över Σ

Några exempel på reguljära språk över {a b} : L1 = {a} L2 = {b} L1 L2 = {a, b} L1L2 = {ab} L1* = {ε, a, aa, aaa,...}

Reguljära uttryck: Ett sätt att beskriva reguljära språk AWK och UNIX shell använder reguljära uttryck. Operatorer: Kleenestjärna (*) Sammanfogning (om v = ab, w = ba, så är vw = abba) Union ( ) + betyder en eller flera repetitioner * och + har högst prioritet, därefter sammanfogning och sist

Exempel på reguljära uttryck: Informell beskrivning: Språket över {a b} bestående av alla strängar som börjar med 0 eller flera a:n följt av 2 st b:n följt av 1 eller flera a:n. a*bba+ -> {bba, bba, bbaa, abba, abbaa, aabbaa,...}

Fler exempel på reguljära uttryck: Informell beskrivning: E-postadresser s 1 @s 2 dvs. en sekvens s 1 av tecken före och en annan sekvens s 2 av tecken efter en @. En sekvens s (alltså s 1 och s 2 ) är en icketom sträng av bokstäver, siffror och punkt, där ingen punkt får finnas först eller sist i s och det inte får förekomma två punkter i rad. Vi kan ta hjälp av metasymboler ("variabler") för att beskriva delar av alfabetet: Σ = {@. a z 0 9} S = Σ - {@.} Vi kan då skriva ett reguljärt uttryck: (S+.)*S+@(S+.)*S+

Övningar (1) Skriv reguljära uttryck för: Giltiga variabelnamn i C, dvs. en bokstav eller ett "_"-tecken följt av 0 eller flera bokstäver, siffror eller "_". De strängar över alfabetet {a, b} och som börjar och slutar på likadan bokstav. Siffersträngar som representerar tal som är jämnt delbara med 2. Skriv uttryck för både det binära alfabetet, {0, 1}, och för det decimala, {0,..., 9}.

DFA - Deterministisk Finit Automat En DFA kan ses som en maskin som konsumerar strängar. Tecknen i strängarna driver maskinen till olika tillstånd. DFA:er åskådliggörs ofta med en graf där noderna representerar de tillstånd som DFA:n kan befinna sig i och bågarna beskriver tillståndövergångar. Antalet noder är ändligt, vilket gör automaten finit. I ett givet tillstånd och för ett visst tecken finns det maximalt ett tillstånd som DFA:n kan gå till, vilket gör den deterministisk. Det finns ett starttillstånd, vilket markeras med en inbåge utan källa och ett eller flera accepterande tillstånd, som markeras med utbågar utan destination.

DFA - Deterministisk Finit Automat (forts) En sträng accepteras av en DFA om strängen driver den till ett accepterande tillstånd. Detta innebär att strängen tillhör det språk som denna DFA beskriver. DFA:er kan användas för att bestämma om en given sträng tillhör ett visst språk. Precis de strängar som den accepterar ingår i språket.

DFA - Deterministisk Finit Automat (forts) Exempel: En DFA över {a, b} som som accepterar strängar som slutar och börjar på a, dvs det språk som kan beskrivas med det reguljära uttrycket a (a b)*a a

DFA - formell definition En DFA är en kvintupel (Q, Σ, δ, s, F) där Q är en ändlig mängd (tillstånden) Σ är en ändlig mängd (inputalfabetet) δ är en funktion (övergångsfunktionen) från Q X Σ till Q s är starttillståndet, ett element ur Q F en mängd accepterande tillstånd, en delmängd av Q

NFA - Nondeterministic Finite Automaton En finit automat som: kan gå till flera olika tillstånd för ett givet input tecken som får innehålla flera starttillstånd som har tillstånd utan att konsumtion av något tecken (s.k. ε- övergång)...kallas för en icke-deterministisk finit automat, förkortning NFA. För varje NFA finns det en DFA som accepterar samma språk. NFA:er är alltså inte mer "kraftfulla" än DFA:er. Vi kommer att koncentrera oss på DFA:er.

Definition Reguljära språk är de finita automaternas språk För varje reguljärt språk kan konstrueras en finit automat som accepterar precis de strängar som finns i språket. Varje språk vars alla strängar accepteras av en finit automat är reguljärt. De reguljära operatorerna *, och sammanfogning motsvaras av åter-, parallell- respektive seriekoppling.

Övningar (2) Gör DFA:er som accepterar: Strängar över {a, b} som börjar och slutar på likadan bokstav. E-postadresser tidigare beskrivning: s 1 @s 2 dvs. en sekvens s 1 av tecken före och en annan sekvens s 2 av tecken efter en @. En sekvens s (alltså s 1 och s 2 ) är en icketom sträng av bokstäver, siffror och punkt, där ingen punkt får finnas först eller sist i s och det inte får förekomma två punkter i rad. Språken {}, {ε}, {a}, Σ+ och Σ*

Definition En DFA särskiljer strängar som driver den till skilda tillstånd. Ett språk L särskiljer två strängar x och y om det finns någon sträng z sådan att exakt en av strängarna xz och yz tillhör L. L särskiljer strängarna x1, x2, x3,... om det särskiljer varje par xi, xj av strängar. Om L särskiljer oändligt många strängar så är L ickereguljärt. Exempel: L = {b, ba, baa, baaa,...} Särskiljs b från ba?

DFA:ns begränsning En DFA:s minne finns i tillstånden. DFA:n särskiljer strängar som driver den till olika tillstånd. Antalet tillstånd är ändligt, alltså finns det ingen DFA som kan känna igen språk som särskiljer oändligt många strängar. Exempel: L = { ε, (), (()), ((())),...} måste särskilja oändligt många strängar, dvs. ingen DFA kan känna igen detta språk. Informellt: En DFA som gått in i en loop ser inte vilken gång i ordningen som ett tillstånd besöks. Jämför med det reguljära uttrycket a(bc)*, det beskriver ett mönster men säger inget om hur många gånger bc förekommer.

Grammatik = språkregler Detta är ett mer kraftfullt sätt att beskriva språk. En grammatik består av produktionsregler (andra ord för samma sak härledningsregler eller grammatikregler) som beskriver syntaxen (syntax = satslära) för ett språk. Exempel: Givet alfabet: {a, b} Språket {a, ab, abb,...} kan då beskrivas:

Grammatik = språkregler Detta är ett mer kraftfullt sätt att beskriva språk. En grammatik består av produktionsregler (andra ord för samma sak härledningsregler eller grammatikregler) som beskriver syntaxen (syntax = satslära) för ett språk. Exempel: Givet alfabet: {a, b} Språket {a, ab, abb,...} kan då beskrivas: S ab B bb B ε Vi kan också skriva de två B-reglerna på samma rad: S ab B bb ε

Grammatik (forts) S ab B bb ε a och b är terminaler, dvs de kommer från alfabetet (för språket). S och B är här icketerminaler, de är interna för grammatiken. De kan ses ungefär som en slags variabler som används i reglerna. S är startsymbolen. Strängen till höger om anger vad symbolen till vänster om kan ersättas med. Regeln S ab betyder alltså "S kan ersättas av ab"

Grammatik (forts) S ab B bb ε Vi provar att producera (härleda) strängen abb med hjälp av reglerna i grammatiken: S ab abb abbb abb

Grammatik (forts) S ab B bb ε För att demonstrera vilka regler som använts i respektive steg, kan man ställa upp det vertikalt: Produktion Använd regel S ab S ab abb B bb abbb B bb abb B ε Notera att B-regeln är rekursiv, detta motsvaras av slingor för DFA:er och Kleenstjärna för uttryck.

Reguljär Grammatik För reguljära språk förkommer endast regler av typen A µ A µb A ε Dvs. det förkommer max en icketerminal i högerledet och den ligger alltid sist. Nästa förläsning så ska vi titta på mer uttrycksfulla regler som gör att vi kan beskriva en klass av mer generellt språk - klassen av de sammanhangsfria språken.