1 - hrj 1 Følger Sipsers bok tett både i stoff og oppgaver. ◦ Tirsdag –forelesninger, nytt stoff ◦ Onsdag – eksempler og utfyllende stoff ◦ Torsdag – oppgaver fra uka før Start: kapittel 1 (2uker), 2 (2uker) ,3 (2uker) ,4 (1uke) Bakgrunn INF 1080 og kapittel 0 Mye stoff på nettet 2 Gammel diskusjon – analog versus digital Våre maskiner bruker stringer i et alfabet ◦ INN: ord ◦ Prosessering: vandring mellom tilstander ◦ UT: ja/nei Alt er endelig – alfabetet, stringene, tilstandene tilstander ord Ja/nei 3 Alfabet – ikke-tom endelig mengde Σ Symboler – elementene fra alfabetet a ∈ Σ String over et alfabet (ord) abrakadabra Stringen leses fra venstre mot høyre Den tomme stringen ε Delstring Den omvendte stringen Konkatenering av x og y skrevet xy Lengden av x |x| 4 1. 2. 3. 4. 5. Q - endelig mengde tilstander Σ - alfabet δ: Q x Σ → Q - transisjonsfunksjon q0 ∈ Q - start tilstand F ⊆ Q - de aksepterende tilstandene En DFA beskrives gjerne ved et diagram Tilstandene er sirkler Transisjonene er piler mellom sirklene Start – sirkel med pil inn Aksepterende tilstand – dobbelt sirkel 5 Alfabet a,b a a b Ikke akseptert abba baba Akseptert aaa baaa b a a b b 6 Kreativ prosess – mange veier til målet Tenk deg selv som turingmann ◦ Hva må jeg vite underveis for å regne ◦ Mer presist – tenk deg at beregningen blir stoppet. Hva trenger du vite for å fortsette beregningen. Dette kalles ofte kontinuasjonen. ◦ Tilstandene = Kontinuasjonene Tilstandene = Hukommelse av automaten Enkle mekanismer kan ha mange tilstander. Med 2 muligheter for 256 deler får vi 2256 tilstander – omtrent som antall atomer i universet 7 Språk – mengde av ord Regulære språk – mengde av ord akseptert av en DFA Hvilke språk er regulære ? Er noen av våre vanlige språk ikke regulære ? Et eksempel er språket av velformete parenteser. Dette skal vi vise senere. 8 Tillater to ting utover det vi gjør med DFA ◦ I en NFA en tilstand kan ha 0,1 eller flere piler med et gitt symbol ◦ Kan ha tom transisjon markert med pil med symbolet ε. Denne transisjonen kan brukes uten noen input. For gitt ord kan vi ha mange forskjellige kjøringer Et ord blir akseptert om en av disse kjøringene ender i en aksepterende tilstand. 9 Makrotilstand = Delmengde av tilstander I en DFA med et symbol vil transisjonene gi overgang fra en tilstand til neste tilstand I en NFA med et symbol vil transisjonene gi overgang fra en makrotilstand til neste makrotilstand I en NFA vil det bli akseptering om en av tilstandene i makrotilstanden er aksepterende 10 Gitt en NFA, vi kan finne en DFA som gjør det samme ◦ De har samme alfabet ◦ Makrotilstandene til NFA’en blir tilstandene til DFA’en ◦ Transisjonene til makrotilstandene av NFA’en er deterministiske og brukes som transisjonene av tilstandene i DFA’en Vi får en eksponensiell vekst i antall tilstander 11 Et regulært språk er gitt ved en DFA For å få komplement – bytt om de aksepterende og de ikke-aksepterende tilstandene Ingen vekst i antall tilstander For å få komplementet av en NFA trenger en først gjøre den om til en DFA og deretter ta komplementet. Eksponensiell vekst i antall tilstander 12 To automater A og B med samme alfabet. Bruker så den tomme transisjonen ε til å gi ◦ Ny start S ◦ Tom transisjon fra S til start i A ◦ Tom transisjon fra S til start i B Dette gir en NFA som gir union av de språkene for A og B. NFA’en kan gjøres om til en DFA – om en vil. 13 Gitt automater A og B Får konkatenering AB ved å knytte de aksepterende tilstandene i A med starten i B med tomme transisjoner 14 Gitt automat A . Kleene stjerne er automaten A* som svarer til ε ∪ A ∪ AA ∪ AAA ∪ …….. Her er ε en automat for den tomme stringen Konstruer A* fra A ved først å ha en ny aksepterende start, knytte den til den gamle ikke-aksepterende starten med en tom transisjon og deretter knytte de aksepterende tilstandene i A med tomme transisjoner også til den gamle starten – men her må en være forsiktig (se boka!) 15
© Copyright 2024