Kontextfria grammatiker

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

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

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

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

Matematik för språkteknologer

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.

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

Inlämningsuppgift MiniPlotter

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

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

Alfabeten, strängar och språk. String

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Primitivt rekursiva funktioner och den aritmetiska hierarkin

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

Programmering II (ID1019) :00-11:00

Föreläsning 7: Syntaxanalys

10. Mängder och språk

FL 6: Definite Clause Grammars (kap. 7)

Formell logik Kapitel 1 och 2. Robin Stenwall Lunds universitet

Om semantisk följd och bevis

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.

Övningshäfte 2: Induktion och rekursion

Kontextfri grammatik (CFG)

Grammatik. BNF-grammatik

Extra övningar på SDD:er/SDT:er

Tekniker för storskalig parsning: Grundbegrepp

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

K2 Något om modeller, kompakthetssatsen

DOP-matematik Copyright Tord Persson. Gränsvärden. Uppgift nr 10 Förenkla bråket h (5 + h) h. Uppgift nr 11 Förenkla bråket 8h + h² h

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

Algebra och rationella uttryck

Mer om analytisk geometri

Dynamisk programmering

DAB760: Språk och logik

Filosofisk logik Kapitel 19. Robin Stenwall Lunds universitet

Programmering II (ID1019) :00-11:00

Tal och polynom. Johan Wild

där x < ξ < 0. Eftersom ξ < 0 är högerledet alltid mindre än Lektion 4, Envariabelanalys den 30 september 1999 r(1 + 0) r 1 = r.

Partiell parsning Parsning som sökning

SMD033 Digitalteknik. Digitalteknik F1 bild 1

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

11. Reguljära uttryck och grammatiker

Logik. Boolesk algebra. Logik. Operationer. Boolesk algebra

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

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

FÖRELÄSNING 3 ANDERS MÄRAK LEFFLER IDA/HCS

TATA42: Föreläsning 2 Tillämpningar av Maclaurinutvecklingar

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

729G09 Språkvetenskaplig databehandling

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

Föreläsning 5: Modellering av frasstruktur. 729G09 Språkvetenskaplig databehandling Lars Ahrenberg

Kompletteringsmaterial. K2 Något om modeller, kompakthetssatsen

Diskret matematik: Övningstentamen 1

Svar till vissa uppgifter från första veckan.

BER AKNINGSBARHET F OR DATALOGER. Kent Petersson. Institutionen for Datavetenskap Goteborgs Universitet / Chalmers Goteborg, Sweden

LOGARITMEKVATIONER. Typ 1. och. Typ2. Vi ska visa först hur man löser två ofta förekommande grundekvationer

729G09 Språkvetenskaplig databehandling

Syntaktisk parsning (Jurafsky & Martin kapitel 13)

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson

TATA42: Föreläsning 7 Differentialekvationer av första ordningen och integralekvationer

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

Här är två korta exempel på situationer då vi tillämpar den distributiva lagen:

Datorlingvistisk grammatik

Lektion 1. Förenklingar. Valentina Chapovalova. vårterminen IT-Gymnasiet. Valentina Chapovalova Lektion 1

Vektorgeometri för gymnasister

Grundläggande textanalys, VT2012

TATA42: Föreläsning 2 Tillämpningar av Maclaurinutvecklingar

Uppgift 1 ( Betyg 3 uppgift )

Modellering med kontextfri grammatik Kontextfri grammatik - definition En enkel kontextfri grammatik Klasser av formella språk

Övningshäfte 1: Induktion, rekursion och summor

Polynomekvationer (Algebraiska ekvationer)

Föreläsning 7+8: NP-problem. Begreppet effektiv algoritm är alltså synonymt med går i polynomisk tid i den här kursen. Är detta en rimlig uppdelning?

Inlämningsuppgift, LMN100

Definitionsmängd, urbild, domän

Filosofisk Logik (FTEA21:4) föreläsningsanteckningar/kompendium. v. 2.0, den 29/ III. Metalogik 17-19

SF1901 Sannolikhetsteori och statistik I

Parsning. TDP007 Konstruktion av datorspråk Föreläsning 6. Peter Dalenius Institutionen för datavetenskap

DD1350 Logik för dataloger

Subtraktion. Räkneregler

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

Repetitionsuppgifter inför Matematik 1. Matematiska institutionen Linköpings universitet 2013

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

Föreläsning 8: Intro till Komplexitetsteori

Programmering för språkteknologer I, VT2012. Rum

Dynamisk programmering

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

Sidor i boken V.L = 8 H.L. 2+6 = 8 V.L. = H.L.

TDDC77 Objektorienterad Programmering

Komplexa tal: Begrepp och definitioner

Programmering II (ID1019)

AUBER 95 9 jan LÖSNINGAR STEG 1:

Föreläsning 9: NP-fullständighet

Uppgift 1 ( Betyg 3 uppgift )

Repetition av matematik inför kurs i statistik 1-10 p.

TDDE44 Programmering, grundkurs

Övning log, algebra, potenser med mera

Datorprogram, algoritmer och Turing-maskiner

ATT KUNNA TILL. MA1203 Matte C Vuxenutbildningen Dennis Jonsson

Block 1 - Mängder och tal

Texten är en omarbetning av en text skriven av Rikard Bögvad för kursen Matematik I (30 hp).

Transkript:

Kontextfria grammatiker Kontextfria grammatiker 1

Kontextfria grammatiker En kontextfri grammatik består av produktioner (regler) på formen S asb S T T # Vänsterledet består av en icke-terminal (variabel) och högerledet av en sekvens som får bestå av såväl andra icke-terminaler som terminaler. Vi genererar strängar med hjälp av grammatiken genom att genomföra ersättning av icke-terminalerna, tills vi bara har terminaler kvar. Kontextfria grammatiker 2

Derivering Sekvensen av ersättningar (deriveringssteg) för att generera en sträng kallas för derivering. Deriveringar kan visas antingen textuellt... S asb aasbb aatbb aa#bb Kontextfria grammatiker 3

...eller grafiskt via ett parsningsträd. Derivering, forts. S S S T a a # b b Kontextfria grammatiker 4

Mer informellt Alla strängar som kan genereras av en kontextfri grammatik är dess språk. Ett språk som kan genereras av någon kontextfri grammatik ingår i mängden av kontextfria språk. Vi brukar ofta förkorta skrivsättet avseende produktioner med samma vänsterled högerleden radas upp och separeras med ett, alltså: S asb T T # Kontextfria grammatiker 5

Fråga 1 Konstruera en grammatik G 1 där L(G 1 ) = {w w börjar och slutar med samma symbol s {0, 1}}. Terminalerna är {0, 1}. Kontextfria grammatiker 6

Fråga 1, svar Reglerna i G 1 kan exempelvis vara följande: S 1 0 1T1 0T0 T 1T 0T ǫ Kontextfria grammatiker 7

Fråga 2 Konstruera en grammatik G 2 där L(G 2 ) = {w längden av strängen är udda}. Terminalerna är {0, 1}. Kontextfria grammatiker 8

Fråga 2, svar Reglerna i G 2 kan exempelvis vara följande: S 0T 1T T 0T0 0T1 1T0 1T1 ǫ Kontextfria grammatiker 9

Formell definition En kontextfri grammatik är ett system (V, Σ, R, S) där V är en ändlig mängd icke-terminaler, Σ är en ändlig mängd, disjunkt från V av terminaler, R är en ändlig mängd produktioner, där varje produktion består av en icke-terminal och en sekvens av icke-terminaler och terminaler och S V är startvariabeln. Kontextfria grammatiker 10

Formell definition, forts. Om u, v, w är sekvenser av variabler och terminaler, och A w är en regel i grammatiken, säger vi att uav genererar (yields) uwv, vilket skrivs uav uwv. Vi säger att u härleder (derives) v, skrivet u v om u = v eller om det finns en sekvens u 1, u 2,...u k för k 0 och u u 1 u 2... u k Grammatikens språk är {w Σ S w}. Kontextfria grammatiker 11

Fråga 3 Konstruera grammatiken G 3 som genererar strängar med perfekt balanserade parenteser, alltså exempelvis strängen (()()((())))? Kontextfria grammatiker 12

Fråga 3, svar Grammatiken G 3 kan exempelvis ha följande regler: S (S) SS ǫ Kontextfria grammatiker 13

Exempel 1, begränsad aritmetik Grammatiken G ex1 = (V, Σ, R, EXPR ) genererar strängar innehållande aritmetiska uttryck med addition och multiplikation på korrekt form. Σ = {a, +,, (, )}, V = { EXPR, TERM, FACTOR } och reglerna är: EXPR EXPR + TERM TERM TERM TERM FACTOR FACTOR FACTOR ( EXPR ) a Kontextfria grammatiker 14

Att konstruera CFG:er Boken ger fyra vettiga tips kring hur man konstruerar kontextfria grammatiker. 1. Grammatiker går utmärkt att kombinera (ny startregel som går till beståndsdelarnas startregler), så uppdelning kan förenkla konstruktionen! 2. Finns redan en DFA för språket är det lätt att skapa en CFG som genererar samma språk (visar detta nästa bild). 3. Kräver språket att två delsträngar är beroende av varandras struktur, placera tillväxtzonen i mitten enligt idén i fråga 2 med parenteserna! 4. Rekursiva strukturer som i Exempel 1 kan enkelt skapas genom att införa en regel som leder tillbaka till en tidigare icke-terminal. Kontextfria grammatiker 15

DFA CFG-konvertering Gör en variabel R i för varje tillstånd q i i DFA:n Lägg till regeln R i ar j till CFG:n om δ(q i, a) = q j är en transition i DFA:n Lägg till regeln R i ǫ om q i är ett accepterande tillstånd i DFA:n Sätt R 0 som startvariabel, där q 0 är starttillståndet i DFA:n Vilken intressant slutsats om språkens förhållande till varandra kan vi dra av detta? Kontextfria grammatiker 16

Fråga 4 Konstruera en grammatik G 4, där L(G 4 ) = {w w är ett palindrom}. Terminalerna är {a, b, c, d}. Kontextfria grammatiker 17

Reglerna i G 4 kan exempelvis vara: Fråga 4, svar S asa bsb csc dsd ǫ Kontextfria grammatiker 18

Flertydighet Flertydighet dyker upp då vi med hjälp av en grammatik kan generera en sträng på fler än ett sätt. I exempelvis programmeringsspråk är detta ett problem. Vi säger att en sträng har genererats på ett flertydigt sätt om det finns flera olika deriveringar som kan generera den. Om grammatiken kan generera någon sträng på ett flertydigt sätt är den flertydig. Kontextfria grammatiker 19

Flertydigt exempel Låt följande vara reglerna i grammatiken G ex1, med i övrigt samma beståndsdelar som G ex1 : EXPR EXPR + EXPR EXPR EXPR ( EXPR ) a Hur har vi genererat strängen a + a a? Kontextfria grammatiker 20

Flertydighet formellt Vi säger att vi har gjort en vänsterderivering om vi i varje steg har ersatt den vänstraste icke-terminalen. Med hjälp av detta kan vi definiera flertydighet formellt. En sträng w deriveras på ett flertydig sätt i en kontextfri grammatik G om den har två eller fler olika vänsterderiveringar. Grammatiken G är flertydig om den genererar någon sträng på ett flertydigt sätt. Kontextfria grammatiker 21

Fråga 5 Vissa språk är ofrånkomligt flertydiga. Ett exempel är språket L 5 = {a i b j c k i = j eller j = k}. Hur ser en grammatik G 5 som genererar språket L 5 ut och varför (inget formellt bevis krävs) är grammatiken flertydig? Kontextfria grammatiker 22

Fråga 5, svar Vi kan lätt styra att vi får lika många a som b och lägga till ett gäng c efteråt, eller hålla koll på antalen b och c och stoppa några a framför. Men vi har mycket svårt att säga hur strängen aaabbbccc har genererats! Ovanstående är i regelform exempelvis: S AB C A BC A a A ǫ C c C ǫ AB a AB b ǫ BC b BC c ǫ Kontextfria grammatiker 23

Chomsky-normalform Chomsky-normalform är en förenklad form av kontextfria grammatiker, som är mycket praktiska att använda i algoritmer. En kontextfri grammatik är på Chomsky-normalform om varje regel är på formen: A A BC a a är en terminal och A, B, C är icke-terminaler, men B, C får inte vara startvariabeln. Dessutom tillåts att startvariabeln har en produktion som leder till ǫ. Bokens teorem 2.9 säger att alla kontextfria språk kan genereras av grammatiker på Chomsky-normalform. Detta bevisas genom konstruktion, vilket den intresserade kan titta på. Kontextfria grammatiker 24

Fråga till nästa gång Med kontextfria grammatiker har vi sett att det är möjligt att avgöra om en sträng tillhör språket {a n b n }, n 0, men kan vi skapa en grammatik som gör detsamma för språket {a n b n c n }, n 0? Hur ser den i så fall ut? Kontextfria grammatiker 25