Automata Theory (tot en met najaar 2019: Fundamentele Informatica 2)
is een verplicht tweedejaars
vak binnen de bachelor Informatica aan de Universiteit Leiden,
ook voor de richting Kunstmatige Intelligentie.
Praktische informatie
Docent: Rudy van Vliet
te vinden op: kamer 140 van het Snellius
telefoon: 071-527 2876
email: rvvliet(at)liacs(dot)nl Assistent voor de werkcolleges en de huiswerkopgaven: ... Onderwijsvorm: hoorcollege, werkcollege
en huiswerkopgaven Collegetijden:
hoorcollege op dinsdagmiddag, 13.15-15.00 uur, zaal 1 van het Gorlaeus
(de schotel),
van Rudy van Vliet
werkcollege op dinsdagmiddag, 15.15-17.00 uur, meestal in zalen
401, 402, 403, 405, 408
van het Snellius,
van Rudy van Vliet en de assistenten,
van 6 september t/m 13 december 2022.
Alleen op dinsdag 20 september, 1 november en 13 december 2022 is
het werkcollege (deels of geheel) in andere zalen.
Vanwege de herfstvakantie zijn er geen colleges op dinsdag 25 oktober.
(allemaal volgens het rooster van 1 september 2022).
De colleges worden dit jaar niet gestreamd, en er
worden ook geen opnames van de colleges gepubliceerd.
Je kunt desgewenst wel kijken naar de opnames van hoorcollege en werkcollege
in eerdere jaren, op de
website van vorig jaar.
Bedenk daarbij wel dat de behandelde stof en opgaven dit jaar iets af kunnen
wijken.
Studielast
Met het behalen van dit vak verdient u 6 EC.
Het niveau van het vak wordt aangeduid als `200'.
De theorie van Automaten en Formele Talen vormt een van de hoekstenen van
de Theoretische Informatica, omdat ze ons in staat stelt om precies
te kunnen spreken over wat een berekening is, of de complexiteit van
een algoritme.
Een automaat is een wiskundig model om (formele) talen vast te leggen.
Formele talen op hun beurt kunnen bijvoorbeeld berekeningen,
programmeertalen of complexe systemen beschrijven. Het eenvoudigste type
is de eindige automaat, een machine die alleen een toestand bij kan houden,
maar verder geen geheugen heeft. We leren dat er twee essentieel
verschillende types eindige automaten bestaan. De deterministische eindige
automaat legt een algoritme vast dat voor een string bepaalt of deze tot
de taal behoort. De niet-deterministische automaat op haar beurt is
beschrijvend van aard.
Wanneer we een beperkte vorm van extern geheugen aan de eindige automaat
toevoegen, ontstaat de stapelautomaat, een krachtiger concept.
We bestuderen de twee types automaten, en de structuur van de talen die
ze kunnen accepteren. Dit leidt tot zogenaamde pomp-lemma's die laten zien
dat bepaalde talen juist niet door een automaat kunnen worden herkend.
We vergelijken voor beide types automaten de deterministische
en niet-deterministische varianten. Verder verkennen we algoritmes die
van beschrijvingen van eenvoudige talen meer complexe talen maken,
de zogenaamde afsluitingseigenschappen.
De studie van talen en automaten kan niet zonder het kijken naar
de Chomsky hierarchie van talen, automaten en hun bijpassende grammatica's.
Zo laten we zien dat talen van eindige automaten kunnen worden beschreven
door reguliere expressies. Verder komt aan de orde dat de stapelautomaat
correspondeert met de context-vrije grammatica.
Voor globale informatie over het vak in studiejaar 2022-2023
wordt men verwezen naar de
algemene webpagina in de studiegids.
Doelstelling
Het vak biedt een introductie tot de `theory of computation',
met een nadruk op de relaties tussen formele talen, automaten en grammatica's.
Introductie tot de modellen binnen de Chomsky hierarchy.
Begrip van de kracht en beperkingen van de modellen, en hun onderlinge
relatie.
Eenvoudige eigenschappen kunnen bewijzen, maar ook het kunnen opstellen
van grammatics's en automaten voor gegeven talen.
Toepassen van pomplemma's.
Toetsing
Vier huiswerkopgaven in de loop van het semester, en schriftelijk
tentamen aan het eind van het semester.
Het minimumcijfer voor elke huiswerkopgave is 0, het minimumcijfer
voor het tentamen is 1.
De huiswerkopgaven zijn niet verplicht, maar tellen wel mee voor
het eindcijfer.
Het tentamencijfer moet minstens 5.5 zijn.
In dat geval is het eindcijfer een gewogen gemiddelde
van het tentamencijfer (70%) en het gemiddelde van de
huiswerkopgaven (30%).
Als dit gewogen gemiddelde lager is dan 5.5, zal het eindcijfer toch
voldoende (6.0) zijn.
Als het tentamencijfer minder dan 5.5 is, is het tentamencijfer
tevens het eindcijfer.
Tentamens
Er zijn twee tentamens (`gewoon' fysiek) geweest: Eerste tentamen:
maandagochtend 19 december 2022, 09.00 - 12.00 uur,
in het Universitair Sportcentrum.
Hertentamen:
woensdagochtend 1 februari 2023, 09.00-12.00 uur,
in zalen 204 en 226 van het Huygens.
Beide tentamens zijn nagekeken.
De cijfers, inclusief eindcijfers, staan in
Brightspace.
Beide tentamens zijn nog te vinden in het overzicht van oude tentamens
onderaan deze pagina. Voor het eerste tentamen staat daar ook een uitwerking
van de docent.
Vragenuur
Op vrijdag 16 december 2022 was er een vragenuur voor het tentamen.
Daarbij kon je de vragen stellen die opgekomen waren bij
het leren voor het tentamen.
Huiswerkopgaven
In de loop van het semester
zijn vier huiswerkopgaven opgegeven.
Deze waren samen goed voor 30% van het eindcijfer.
De huiswerkopgaven moeten individueel gemaakt worden.
Wanneer blijkt dat studenten teveel hebben samengewerkt voor hun oplossing,
zullen de (voor een enkele oplossing) verdiende punten worden gedeeld door
het aantal betrokken studenten.
Huiswerkopgaven dienen op of voor de deadline ingeleverd te worden.
Dit zal in het algemeen ongeveer twee weken na publicatie van de opgaven
zijn.
Haal je die deadline niet, dan heeft het geen zin meer om het huiswerk
in te leveren. Dat wil zeggen: het levert geen punten meer op.
Je bent niet verplicht om de huiswerkopgaven te maken. Het is echter
wel aan te raden, want: (1) het vormt een nuttige oefening voor het tentamen,
en (2) als je huiswerkopgaven mist, krijg je een 0 voor die opgaven, en
dat kan negatief doorwerken in je eindcijfer voor het vak.
Resultaten voor de huiswerkopgaven van dit vak (of zijn voorganger
Fundamentele Informatica 2)
uit een eerder studiejaar zijn dit jaar niet meer geldig.
Je oplossingen voor de huiswerkopgaven kon je inleveren via
Brightspace.
Zorg dus dat je daar bent aangemeld voor het vak.
De cijfers voor de huiswerkopgaven werden eveneens in
Brightspace
gepubliceerd.
Bij het digitaal tekenen van eindige automaten kun je wellicht gebruik
maken van de
Finite State Machine Designer.
De docent heeft hier geen ervaring mee. Mocht de notatie afwijken
van de bij dit vak gebruikelijke notatie, licht dat dan expliciet toe in
je inzending voor de huiswerkopgave.
Literatuur
John C. Martin,
Introduction to Languages and the Theory of Computation,
4th edition, McGraw Hill, 2010/2011.
Twee keer de 4e editie: de Amerikaanse editie (ISBN-13: 978-0073191461)
en de internationale editie (ISBN-13: 978-007-128942-9)
NB: dit boek wordt ook gebruikt bij het college
Computability.
Er is een
lijst met errata
bij dit boek beschikbaar.
Heeft u zelf (andere) foutjes in het boek ontdekt, meld het dan aan
de docent. Dan kunnen die ook in de lijst worden opgenomen.
Dit boek schijnt niet meer in de winkel te liggen.
Misschien is het online nog wel te vinden.
Tentamenstof
De tentamenstof bestaat uit
de stof die tijdens de colleges wordt
behandeld
met de bijbehorende opgaven.
Alles bij elkaar is dit geworden:
Paragraaf 1.4
Hoofdstuk 2, minus
het bewijs van Stelling 2.36 `van rechts naar links'
(dat M_L inderdaad L accepteert en minimaal is)
Hoofdstuk 3, minus
constructie en bewijs Stelling 3.17
bewijs Stelling 3.18
inductiebewijs voor L(M1)* in Stelling 3.25
maar plus
alternatieve, eenvoudigere constructie voor Stelling 3.17 (zonder
bewijs)
algoritme van Brzozowski en McCluskey (uit college en opgave 3.54)
en met notatie
L^k(i,j) en r^k(i,j) ipv L(i,j,k) en r(i,j,k) in bewijs voor Stelling 3.30
Hoofdstuk 4, minus
blz 147-148
bewijs Stelling 4.27
maar plus
live, reachable, useful variabelen (uit college en opgaven 4.51-4.53)
operations on languages (even/odd/chop) uit college 10
(maar niet: attribute grammars)
Hoofdstuk 5, minus
inductiebewijs dat L(NT(G)) ⊆ L(G) bij Stelling 5.18
inductiebewijs in beide richtingen bij Stelling 5.23
inductiebewijs in beide richtingen bij Stelling 5.29
Ook als bewijzen geen tentamenstof zijn, zijn de bijbehorende
constructies dat wel, tenzij expliciet anders vermeld.
N.B:
Er bestaan vaak meerdere constructies om hetzelfde doel
te bereiken. Het internet staat er vol mee.
Het is voor de huiswerkopgaven
en het tentamen van belang dat je de constructies gebruikt die we bij
dit vak behandeld hebben. Anders kan er aftrek gegeven worden.
Opmerkingen:
Begrippen, notaties en technieken
behandeld bij Foundations of Computer Science,
met name inductie,
worden bekend verondersteld en moeten kunnen worden gebruikt.
Behandelde stof, opgaven en slides
Voor wie door omstandigheden een hoorcollege of werkcollege
moet missen,
hebben we per week bijgehouden welke stof en opgaven we hebben behandeld.
U vindt dit overzicht
hier
(bijgewerkt t/m hoor-/werkcollege van dinsdag 13 december 2022, compleet dus!).
De slides die tijdens de colleges zijn gebruikt,
zijn hieronder nog te vinden.
Dit zal tot (in ieder geval)
het hertentamen online blijven staan.
In de slides van het hoorcollege wordt regelmatig verwezen naar twee boeken:
[M]: het boek van John C. Martin dat hierboven genoemd wordt
[L]: Peter Linz: An Introduction to Formal Languages and Automata
Om gemakkelijker slides te kunnen terugzoeken is bij elk hoorcollege ook
globaal vermeld welke onderwerpen daarin behandeld worden.
Dinsdag 18 oktober 2022,
slides hoorcollege 7
van eindige automaat naar reguliere expressie, context-vrije grammatica's,
reguliere operaties bij context-vrije talen
Dinsdag 22 november 2022,
slides hoorcollege 11
pre(L) bij (al dan niet deterministische) context-vrije taal,
van context-vrije grammatica naar stapelautomaat (top-down)
Dinsdag 29 november 2022,
slides hoorcollege 12
van context-vrije grammatica naar stapelautomaat (bottom-up),
accepteren met lege stapel, van stapelautomaat naar context-vrije grammatica
De vorige keer dat het vak werd gegeven, was in het najaar van 2021.
De website van die keer vindt
u hier.
Daar vindt u ook nog oude tentamens van Fundamentele Informatica 2.
Het vak Fundamentele Informatica 2 werd overigens door andere
docenten gegeven. Nieuwe tentamens voor het huidige vak Automata Theory
kunnen dus een (iets) ander karakter krijgen dan de tentamens van toen.
Ook de tentamenstof is niet per se helemaal hetzelfde.
Vragen en opmerkingen kunt u sturen naar:
Rudy van Vliet;
rvvliet(at)liacs(dot)nl
Laatste wijziging: 21 augustus 2023
- https://www.liacs.leidenuniv.nl/~vlietrvan1/automata/