Regulære udtryk [Martin, kap. 1.4-1.6, 3.1] (Der forventes også kendskab til resten af kap. 1.)
Husk studiecafe! Her får du chancen for at arbejde med opgaverne og få hjælp af instruktorerne undervejs. (Brug også gerne Blackboard diskussionsforumet til spørgsmål og diskussioner.) Det forventes at man har læst ugens pensum og arbejdet med opgaverne inden de efterfølgende holdtimer.
(Bemærk: "andre opgaver" er ikke mindre vigtige end opgaverne fra [Martin]. De er udvalgt til at illustrere centrale pointer, som ikke er dækket af bogen.)
Lad prefix være funktionen, der givet en streng x* returnerer mængden af præfikser af x. Det vil sige:
Eksempel: prefix(abc)={,a,ab,abc}.
(Brug max 15 min. på de næste to opgaver. Hvis du allerede er overbevist om, at regulære udtryk er nyttige, så kan du godt springe disse opgave over.)
Brug 5 minutter på at gøre dig bekendt med følgende resourcer:
Vi vil i de kommende uger opbygge en sådan RegAut pakke. Dokumentationen ovenfor kan bruges til at slå op hvad de enkelte klasser og metoder skal gøre, og forelæserens implementation kan bruges til afprøvning af funktionaliteten.
Følgende er forslag til eksamensforberedende aktivitet i læsegrupperne:
Repetér definitionerne af alfabet, streng, sprog, konkatenering (af strenge og sprog), Kleene stjerne, og syntaks og semantik af regulære udtryk, samt beviset for at klassen af regulære sprog er lukket under "Reverse".
Der vil i løbet af kurset blive stillet 6 små obligatoriske afleveringsopgaver. Afleveringsfrister aftales med instruktor. Aflevering skal ske via Blackboard, med mindre andet aftales med din instruktor. Det anbefales at man laver ugeopgaverne inden man begynder på afleveringsopgaven.
Første afleveringsopgave:
I opgave 2 ovenfor definerede vi funktionen prefix.
Definer tilsvarende for et sprog S over , at Prefix(S) er sproget bestående af præfikser af strenge fra S. Det vil sige:
(Hint: givet et regulært udtryk r for S, vis ved induktion i strukturen af r, at der eksisterer et regulært udtryk r' hvor L(r')=Prefix(S).)
Du må anvende følgende lemma (uden bevis):
for alle i>0 og S*: Prefix(Si) =
k=0...i-1 SkPrefix(S)
Besvarelser af afleveringsopgaverne er individuelle - du må gerne diskutere opgaverne med andre, men det er (af hensyn til din egen indlæring) ikke acceptabelt at kopiere løsninger. Idet afleveringsopgaverne er obligatoriske, er overtrædelser af disse regler at betragte som eksamenssnyd.