Endelige Automater Simple sprog (regulære sprog) kan beskrives vha. Regulære udtryk. Regulære sprog kan altid parses vha endelige automater. Nondeterministik.

Slides:



Advertisements
Lignende præsentationer
Kombinatorik, sandsynlighed og statistik
Advertisements

Tangent og differentialkvotient
Begreber og Redskaber 1 BRP.
Lineære funktioner AM/ Maj 2006
1 Parsing. 2 Mål: Et program til indlæsning og beregning af aritmetiske udtryk Eksempel: Beregn (3*5 + 4/2) - 1 Løs et lettere problem først: Læs en streng.
Differentalkvotient af cos(x) og sin(x) og tan(x)
Oversigt Indhold mm.5: Latch’es og flip-flops
Automater, sprog og compilere
Design af brugerflader8.1 Kursusgang 8 Oversigt: Sidste kursusgang Design ­ Design og beskrivelse ­ En simpel notation Eksempel på design af dialogen ­
1 Nordjyllands Erhvervakademi Lektion 6 Opsamling på opgaver Mere om rekursion: –Del&Hersk –Sortering –Kompleksitet (effektivitet – ”Store O”) Abstrakte.
Sproghistorie Syntaks (struktur) Semantik (Indhold)
Reduktion AM 2009.
FEN Diskret matematik/Seminar 3 - proofs 1 Beviser Et bevis er en argumentation, som overbeviser om, at en påstand er sand, påstanden kaldes.
1 Bevisteknikker. 2 Bevisteknikker (relevant både ved design og verifikation) Teorem: Der findes uendeligt mange primtal Bevis: Antag at der findes et.
GP 10, 7/ Grundlæggende programmering Efterår 2001 Forelæsning 10 onsdag 7/ kl. 9:15 – 12:00.
Videregående pc-vejledning
Induktion og rekursion
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Genetik kursus del II Kristianssand 19. september
Genom-screening med Illumina SNP-array
Intro Forelæsning 6 Linux Install Party i PC-Cafeen i morgen.
FEN Rekursion og induktion1 Induktion og (især) rekursion Mange begreber defineres ud fra en basis og så en gentagen anvendelse af et antal regler.
Operationer på relationer
Databasestøttet Webpublicering1 Databasestøttet Webpublicering, Efterår 2005 Lektion 5, Mandag 26/9 : Web-programmering med PHP Hvad er gennemgået? Værdien.
FEN Prædikater/Seminar 11 Prædikatslogik eller Kvantificerede udtryk Prædikater udvider propositionslogikken på to måder: –Vi tillader variable.
Logiske styringer.
Compiler/fortolker struktur Mellem- kode Mellemk.- optimering Kode- generering Kode- optimering Lexikalsk- analyse Syntax- analyse Semantik- analyse -
Buttom-up parsning: Hvor er vi Mellem- kode Kald til Runtimesys. Mellemk.- optimering Kode- generering Kode- optimering Leksikalsk- analyse Syntax- analyse.
VPG/Otto Knudsen1 VPR - Repetition Trådning Distribueret Programmering Sprogteori Grafer.
FEN Sprog1 Lidt om sprog Definition: Et sprog over et endeligt alfabet  (sigma) er en mængde af strenge dannet af tegn fra . Eksempel: Lad.
Økonomistyring og budgettering
Sprog og grammatik Et sprog L(G) er mængden af sætninger afledt af grammatikken G. Grammatik er en 4-tupel: G={N, ,P,S}. Hvor: N er et sæt af non-terminale.
Antag, at en student skal til eksamen i to fag, A og B. at eksamen bestås ved summen af karakterne A og B, altså k A + k B  k 0, hvor k 0 er beståelseskravet.
Mængder: Begreber og notation
Sproghistorie Syntaks (struktur) Semantik (Indhold)
DMU PeopleXS Workflows (alt) (uden forhandlingsdel) Stillingsfaser – Opslag Fremstilling/validering, godkendelse, annoncering – Bedømmelsesudvalg.
DJF PeopleXS Workflows (uden forhandlingsdel) Stillingsfaser – Opslag Fremstilling/validering, godkendelse, annoncering – Bedømmelsesudvalg.
1 Design, analyse og verifikation. 2 Design Bevisteknikker Design ved hjælp at matematisk induktion Analyse O-notation Logaritmer Binær søgning Verifikation.
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
Paradigmer i Programmering 1. Program for idag : Funktioner og udtryk i SML : Øvelse : Frokost – 14.00: Deklarative.
Begreber og Redskaber 7. Plan for idag Rekursive underprogrammer Rekursive datastrukturer Rekursion vs iteration Rekursivt: Flette sortering.
Begreber og Redskaber 1 BRP.
Carsten Stig Poulsen1 HA 4. semester Markedsanalyse 3. gang Torsdag d. 23. april 2009.
JavaCC Top-down (Recursive descent). Mest populære mht Java. Regulær grammatik og Context-free grammatik i en fil. Tillader EBNF: (..)*, (..)+ og (..)?
Semantik, model teori Et (formalt) sprog har ingen mening indtil man interpreterer dets forskellige (korrekte) udtryksformer (vff’s) mhp. en bestemt situation.
Basics: Binære variable, logiske operationer
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Genetik kursus del II Stavanger 22. & 23. november
DAIMIIntroducerende objektorienteret programmering4C.1 Systemdesign Design med flere klasser, En kaffeautomat.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5B.1 Sweep-algoritmer Programmering med invarianter og uden kaniner.
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
Kommunikation Hvad er det og hvordan udvikler vi bedst muligt sproget sammen med vores børn? Hej jeg hedder Mette og er dagtilbuddets sprogvejleder, jeg.
Grammatikker, sprog og parsing Rasmus D. Lehrmann DM
Fromelle sprog Per P. Madsen Afd. for proceskontrol.
Regulær udtryk Lad T være det terminale alfabet. og T* angive et sæt af strenge over T ex: T={a,b,c} så er: aaa, bab,bbbbbbaaaa er indeholdt i T* Et sporg.
Algoritmer og Datastrukturer 1 Hashing [CLRS, kapitel ]
Sproghistorie Syntaks (struktur) Semantik (Indhold)
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1
Mulighed 2AA Konfron-konfron SKABELON TIL DILEMMA-OPBYGNING
Lineære funktioner AM/ Maj 2006
Quiz – Uge 4 – torsdag – første time
At ændre adfærd med nudging
Præsentationens transcript:

Endelige Automater Simple sprog (regulære sprog) kan beskrives vha. Regulære udtryk. Regulære sprog kan altid parses vha endelige automater. Nondeterministik Finite State Machine kan omskrives til Finite State Machine/endelig automat.

Regulær grammatik Right regular grammar A → a A → aB A → ε - hvor A er en non-terminal og a er en terminal Left regular grammar A → a A → Ba A → ε ident → letter tegenlist letter → a | b | c | d | | å | A | B | | Å tegnlist → tegn tegnlist | e tegn → letter | digit digit → 0 | 1 | 2 | 3 | | 9

Regulær udtryk Lad T være det terminale alfabet. og T* angive et sættet af mulige strenge over T ex: T={a,b,c} så er: aaa,bab,bbbbcbbaaaa er indeholdt i T* Et sporg L er et muligt subsæt af T* ex: L={aaa,aab,abc} Hvis et sprog er ''finite'' kan det beskrives på denne måde, men det er sprog som regel ikke.

Operationer på sprog. Fordi sprog er sæt så vil enhver sæt-operation kunne anvendes på sprog. Ex: L1={aaa,bbb} L2={aaa,ccc} L1  L2 = {Sættet af strings tilhørende både L1 og L2} = {aaa} L1  L2 = {Sættet af strings tilhørende L1 eller L2} ={aaa,bbb,ccc}

Nul eller flere gentagelser hvis i går mod uendeligt ex: L={a} => L*={e,a,aa,aaa,aaaa,aaaaa,... } L={aa,bb} => L*={e, aa,bb,aaaa,aabb,bbaa,bbbb,.... } Dvs: T* er settet af vilkårligt sammenkædede symboler fra T (Sættet af alle strenge)

Regulære udtryk Metode til at beskrive regulære sprog: Regulære udtryk Anvendte symboler: T,(,),c.,un.,* ex: T={a,b,c} L= a* ={e,a,aa,aaa,aaaa,...} L= a  b = a | b ={a,b} L= ab ={ab} L= a*b ={b,ab,aab,aaab, (vilkårlig mange a'er)} L= a*  b* ={e,a,b,aa,bb,aaa,bbb,aaaa,bbbb (strenge af vil. len bestående af a'er eller b'er} L= a*b*b ={b,ab,aab,aaab,.. aaaabb, aaaabbbb... (vil. mange a'er, og mindst et b)...}

Regulære udtryk Alternation | : "gray|grey" matcher gray or grey. Grouping () : "gray|grey" og "gr(a|e)y" matcher bægge gray and grey. Quantification En quantifier efter et tegn eller gruppe af tegn angiver hvor mange gange tegnet eller gruppen skal gentages. ? 0 eller 1 gentagelser : "colou?r" matcher både color og colour. * 0 eller flere gentagelser: "go*gle" matcher ggle, gogle, google, osv. + 1 eller flere gentagelser: "go+gle" matcher gogle, google, osv.

Regulære udtryk: POSIX-udvidelser:.Alle tegn i alfabetet. []Matcher et enkelt tegn som er indeholdty i []. Fx [abc] matcher a, b eller c. [a-z] matcher et lillebogstav fra a til z i den tegntabel der anvendes typisk Ascii. [^ ]Matcher et tegn fra komplementærmængden. Fx. [^a-z] matcher alle andre tegn end de små bogstaver. ^Start på linie. $Slutningen på linien.

Regulære udtryk if then else : Endelige ord. [0-9]+ : Hel tal fx ?[0-9]+ : Positive og negative heltal. [a-z]([a-z]|[0-9]|_)* : symbolsknavn fx temp_3 //[^\n]* : // kommentar -?([0-9]+|([0-9]*\.[0-9]+)([eE][-+]?[0-9]+)?) : Real tal fx -3.4e-4

Endelige automater En maskine til at undersøge om en streng tilhøre et sprog L. Maskinen: Deterministic state machine (finite state automata) (Endelig automat). M=(K,T,delta,s,F) hvor: K: er et endeligt sæt af tilstande. T: er et alfabet. delta: er en funktion som afbilder en tilstand og et symbol fra T over I en ny tilstand i.e. K x T -> K s: tilhørende K er initial tilstanden. F: subsæt K er et sæt af slut tilstande. Maskinen arbejder således: Givet en streng T= a1a2a3,...ai Så vi maskinen gennemløbe en sekvens ef tilstande x0,x1,...,xi udfra følgende: x0=s (initial state) x(j+1)=delta(x(j),aj)

FSA L={ ,aaa,aacb,ba,bcb,cbb} c

FSA a*b (aba)*b(ba)* a  b

FSA if i f [0-9] [0-9]

FSM -? - -?a - a a [0-9]* [0-9]

NFSA Lad os antage at det er tilladt at delta ikke er en funktion dvs samme tilstand og samme symbol kan resultere i to ellere flere næste tilstande, samt at vi kan skifte fra en tilstand til en anden uden at læse et symbol. Så har vi en nondeterministic finite state automata eller nfsa. 

NFSA

Transform NFSA -> FSA Det er muligt at transformere alle NFSA til FSA, således at FSA acceptere samme og kun samme sprog Antag at: nfsa: M=(K,T,Delta,s,F) og at fsa: M´=(K´,T,delta,s´,F´) Tilstandende K´ fra M´ er mængder af tilstande i K, i.e. K´ subsæt 2^(K) (powersæt, sæt of subsæts) s´ = {s} un. {k i K | der er tillade af hoppe til k fra s uden at læse nogle symboler}

Transform NFSA -> FSA Delta er en funktion som afbilleder K´ og symboler i T over i tilstande i K´. Delta er givet ved: delta(k´,a)= {k i K | for nogle c i k´ er det tilladt at hoppe til k givet a efterfuldt af no symbolet et antal gange}

(abab)|(abbb) s7s5s3s1 s0 s8s6s4s2 s9 s10 a a b b ab bb   s0,s 1 s2 s3,s 4 a s5,s 6 b s7 s8 a b s9 b b s10