Fundamenten voor de Informatica

Maat: px
Weergave met pagina beginnen:

Download "Fundamenten voor de Informatica"

Transcriptie

1 Fundamenten voor de Informatica Bachelor Informatica Aanvullende Opleiding Informatica Academiejaar K. Dekimpe K.U.Leuven Campus Kortrijk B. Demoen K.U.Leuven Dep. Computerwetenschappen

2 Inhoudsopgave Inleiding op complexiteit 3 Talen en eindige automaten Talen Reguliere expressies en talen Eindige automaten en reguliere talen Niet deterministische eindige automaten Turing machines Wat is een Turing machine Turing machines en functies Analyse van algoritmen Tijdscomplexiteit van algoritmen Het bepalen van de complexiteit in enkele concrete voorbeelden De klassen P en NP Turing machines, talen en de klasse P Niet deterministische Turing machines en de klasse NP De klasse NP Compleet Besluit Referenties Oefeningen Grafentheorie 58 Inleiding De drie munten De wolf, de geit en de kool De bruggen van Königsberg Het speelgoed van Hamilton Grafen Allerhande paden Voorstelling van grafen Isomorfisme van grafen Gewogen grafen Vlakke grafen Het kleuren van grafen Bomen Inleiding i

3 3.2 Eigenschappen van bomen Een meer compacte voorstelling voor bomen Opspannende bomen Minimale opspannende bomen Doorlopen van bomen Spelbomen Netwerkmodellen en Petri-netten Transportnetwerk Maximale stroming Matching Petrinetten Referenties Oefeningen Vastepuntstheorie 4 Inleiding Orderelaties Basisbegrippen Monotone en continue afbeeldingen De stellingen van Tarski en Kleene De stelling van Tarski De stelling van Kleene Voorbeeld: de transitieve sluiting van een relatie Referenties Oefeningen ii

4 Hoofdstuk Inleiding op complexiteit Talen en eindige automaten. Talen Bij het horen van het woord taal, denken we in eerste instantie aan talen zoals het Nederlands, het Engels,... Maar er zijn ook andere talen zoals programmeertalen, de propositielogicataal,... Alle talen hebben echter het gemeenschappelijk kenmerk dat ze zijn opgebouwd uit woorden en zinnen over een gegeven alfabet. Dit alfabet kan sterk variëren alnaargelang de taal (denk maar aan het Arabisch, het Chinees,...). In dit hoofdstuk werken we met een formele notie van taal. Vooraleer we het concept van een taal kunnen definiëren, hebben we nood aan een beschrijving van wat we bedoelen met een alfabet en een string. Definitie.. Strings over een alfabet Een alfabet is een niet-lege eindige verzameling Σ. De elementen van Σ worden symbolen genoemd. Een string over Σ is een eindige rij symbolen σ σ 2 σ n, waarbij elke σ i Σ. De lengte van een string is het aantal (al dan niet verschillende) symbolen dat gebruikt wordt om de string op te bouwen. Er is bovendien één string van lengte, de lege string, die we met λ zullen aanduiden. De verzameling van alle strings over een alfabet Σ duiden we aan met Σ Voorbeeld Neem als alfabet Σ = {a,b,c,...,z}. Dan zijn aaaabbz string ditisgeenstring λ voorbeelden van strings (respectievelijk van lengte 7, 6, 5 en ) over het alfabet Σ. Daarentegen zijn String ditisweleenstring! geen strings over Σ. 3

5 Voorbeeld Neem Σ = {,}. Dan bestaan er 8 strings van lengte 3 over Σ, namelijk We merken op dat voor een gegeven lengte n er steeds maar eindig veel strings van lengte n bestaan over een gegeven alfabet Σ (omdat we Σ eindig veronderstellen). Toch dit is de verzameling van alle strings Σ steeds oneindig. Net zoals het Nederlands bestaat uit welbepaalde strings over het alfabet Σ = {a,b,...,z}, die we woorden noemen, zal een formele taal bestaan uit een aantal gegeven strings. Definitie..2 Een taal Een taal over een alfabet Σ is een deelverzameling L Σ. Werkelijk elke deelverzameling van strings over een gegeven alfabet is een taal. Zo bestaat over elk alfabet Σ de lege taal L = Σ en de taal van alle mogelijke strings L = Σ. Voorbeeld Neem Σ = {,}. Dan kunnen we de volgende talen over Σ beschouwen:. L = 2. L 2 = Σ = {λ,,,,,,,,,,,,,,,...} 3. L 3 = {,,,,,...} 4. L 4 = {λ,,,,,,...} 5. L 5 = {,,} 6. L 6 is de taal die bestaat uit alle strings die beginnen met het symbool en die de binaire schrijfwijze voorstellen van een priemgetal. Dus L 6 = {,,,,,...} Alle voorbeelden van talen die we hierboven gegeven hebben zijn interessant omdat ze de eigenschap hebben dat we in elk van de gevallen door middel van een algoritme kunnen nagaan of een gegeven string uit Σ al dan niet tot de taal behoort. Met een algoritme bedoelen we een oplossingsmethode (berekeningsprocedure of berekeningsvoorschrift) bestaande uit een eindige opeenvolging van instructies, die elk op precies één wijze uit te voeren zijn, 4

6 en die steeds eindigt. Voor de talen L en L 2 is het algoritme heel eenvoudig (geen enkele string behoort tot L en elke string behoort tot L 2, in beide gevallen dient er niets gecontroleerd te worden). Ook voor taal L 5 is het eenvoudig te controleren of een string al dan niet tot de taal behoort. We hoeven enkel maar te controleren of een gegeven string al dan niet gelijk is aan één van de drie strings die tot onze taal behoren. Bij taal L 3 is het voor ons op het zicht duidelijk of een gegeven string al dan niet tot de taal behoort. Dit wordt echter reeds iets moeilijker bij taal L 4. Om bijvoorbeeld na te gaan of L 4? moeten we op een of andere manier het aantal nullen en het aantal enen werkelijk tellen of op zijn minst met elkaar vergelijken. Nog moeilijker, maar nog steeds mogelijk, wordt het om na te gaan of een gegeven string al dan niet behoort tot L 6. In hetgeen volgt zullen we proberen om aan dit intuïtieve verschil in moeilijkheidgraads iets meer preciese inhoud te geven. Vooraleer we echter daarop ingaan, zullen we eerst kennis maken met een bepaald mechanisme om sommige talen beter te omschrijven..2 Reguliere expressies en talen Indien we een alfabet Σ vast kiezen, dan kunnen we de volgende bewerkingen uitvoeren op de strings uit Σ : De concatenatie of samenstelling. Indien x = σ σ 2 σ n Σ en y = µ µ 2 µ m Σ dan is hun samenstelling xy = σ σ 2 σ n µ µ 2 µ m Σ Voorbeeld Neem Σ = {a,b,c,d}, x = abba en y = abcd dan is xy = abbaabcd. In het bijzonder hebben we ook voor elke x Σ dat Voor x Σ definiëren we x = λ n N : x n+ = xx n λx = xλ = x en λλ = λ. Voorbeeld Indien x = abb is x 3 = abbabbabb. Met x bedoelen we geen of meer kopieën van x. Met andere woorden, een element uit {x n n N}. 5

7 Met x + bedoelen we één of meer kopieën van x. Met andere woorden, een element uit {x n n N }. Voorbeeld De taal L 4 = {λ,,,,...} op het alfabet Σ kunnen we nu ook beschrijven als L 4 = { n n n N}. We kunnen nu dezelfde bewerkingen uitbreiden tot talen. Zij A,B Σ, dan is AB = {ab a A,b B} A = {λ} n N : A n+ = AA n A = A A A 2 A 3 = A n. n= A wordt de Kleenesluiting van A genoemd A + = A A 2 A 3 = A n n= Voorbeeld Neem Σ = {a,b,c,...,z} en A = {m,h,sp}, B = {eer,aar}, C = {p,pe} en D = {r,er}, dan is AB = {meer, maar, heer, haar, speer, spaar} CD = {pr, per, peer} en DC = {rp, erp, rpe, erpe} Definitie.2. Reguliere Taal Indien Σ een alfabet is, dan wordt de klasse van alle reguliere talen R over Σ inductief als volgt gedefinieerd:. R, {λ} R en σ Σ : {σ} R. 2. Indien A,B R dan ook (A) R, AB R, A B R en A R Elke taal uit R wordt een reguliere taal genoemd. Met andere woorden: een taal L Σ is een reguliere taal als en slecht als ze kan opgebouwd worden vanuit, {λ} en {σ} ( σ Σ) door een eindig aantal keer de bewerkingen concatenatie, en... te gebruiken. De term (A) met haakjes kan gebruikt worden om duidelijkheid te scheppen in de volgorde van de bewerkingen. Zo is bijvoorbeeld in het algemeen A (BC) (A B)C. We spreken de volgende bindingsregels af: 6

8 Eerst worden de expressies binnen haakjes geëvalueerd, daarna de Kleenesluitingen, gevolgd door de concatenaties en tenslotte de unies. Met deze regels weten we bijvoorbeeld dat A BC = A (B(C )). Voorbeeld De taal L 3 = {,,,,,...} op Σ = {,} is een reguliere taal, want. {} en {} zijn reguliere talen. 2. {} is een reguliere taal 3. {}{} is een reguliere taal 4. L 3 = {}{} {} is een reguliere taal. Volledig gelijklopend aan de constructie van reguliere talen, bestaat er ook zoiets als de constructie van reguliere expressies. Een reguliere expressie bestaat uit een abstract patroon dat een beschrijving van welbepaalde strings op een gegeven alfabet weergeeft. Dergelijke expressies (en uitbreidingen daarvan) worden vooral binnen UNIXomgevingen (bv. met behulp van een Perl-script of met behulp van grep en egrep,...) vaak gebruik om in grotere ASCII-bestanden te zoeken naar het voorkomen van bepaalde patronen en om bij het vinden van dergelijke patronen de nodige acties uit te voeren. Het meest eenvoudige voorbeeld van een reguliere expressie op een gegeven alfabet Σ is één specifieke string uit Σ. Voorbeeld Veronderstel dat Σ de verzameling van ASCII symbolen is, dan zijn de volgende strings reguliere expressies: 23 Hallo! Dag mevrouw. Deze eerste soort van reguliere expressies zijn natuurlijk enkel nuttig indien een heel specifieke uitdrukking gekend is en gezocht dient te worden. Een reguliere expressie wordt krachtiger en nuttiger indien we meer variabele strings kunnen aanduiden. Met behulp van het -symbool kunnen we aangegeven dat het onmiddellijk voorgaande symbool nul of meerdere keren mag voorkomen. Voorbeeld Met de reguliere expressie ab c duiden we alle strings aan bestaande uit een a, eventueel gevolgd door een aantal keer het symbool b en tenslotte een c, zoals Bij implementaties van dergelijke reguliere expressies zijn er vaak meer mogelijkheden voorzien dan die expressies die wij hier behandelen. 7

9 ac abbbbbbbbbbbc Maar niet abbbbbbbbb We kunnen ook gebruik maken van haakjes om bepaalde deelexpressies nul of meerdere keren te laten voorkomen. Zo komt met de reguliere expressie b(ab) c elke string overeen bestaande uit een b, dan een aantal keer ab en tenslotte gevolgd door een c, zoals bc bababababababc maar niet bac Tot slot is er ook nog een mechanisme dat alternatieven weergeeft. We kunnen namelijk in een reguliere expressie de notatie a b gebruiken om aan te geven dat op die plaats een a of een b moet voorkomen. Voorbeeld Met de reguliere expressie d(i a)t komen precies de strings dit en dat overeen. Ook bij mogen we gebruik maken van haakjes, zo staat w((ie) (at)) voor de strings wie of wat. Tenslotte kunnen we en combineren. Zo komen met de reguliere expressie d(a i) t alle strings overeen bestaande uit een d gevolgd door nul of meerdere keren de letters a of i en ten slotte een t, zoals de string daiiiat. Net als bij reguliere talen is het belangrijk om de bindingsvolgorde van de geziene operaties af te spreken: Deelexpressies tussen haakjes worden het eerst geëvalueerd, dan heeft de -operator de grootste voorrang, gevolgd door concatenatie en tenslotte het alternatief. Zo kunnen we w((ie) (at)) evengoed schrijven als w(ie at). Voorbeeld reguliere expressie Verzameling van overeenkomstige strings ab c a(b c) (ab) c {ab n n N} {c} = {a, ab, abb, abbb, abbbb,..., c} {ab n n N} {ac} = {a, ab, abb, abbb, abbbb,..., ac} {(ab) n n N} {c} = {λ, ab, abab, abab, ababab, abababab,..., c} 8

10 Na deze voorbeelden is het de hoogste tijd om een formele beschrijving van een reguliere expressie te geven. Definitie.2.2 Reguliere expressie Indien Σ een alfabet is, dan wordt een reguliere expressie over Σ op inductieve wijze als volgt gedefinieerd:. is een reguliere expressie 2. λ is een reguliere expressie 3. Voor elke σ Σ is σ een reguliere espressie 4. Indien A en B reguliere expressies zijn, dan zijn ook (A), A, A B en AB reguliere expressies. Zoals hierboven aangegeven bepaalt elke reguliere expressie ω een verzameling van strings uit Σ. Deze taal wordt de reguliere verzameling bepaald door ω genoemd. Door de analogie met de opbouw van de reguliere talen komt de volgende eigenschap (waarvan we het formele bewijs achterwege laten) wellicht niet als een verrassing. Stelling.2.3 Voor een gegeven alfabet Σ geldt dat de klasse van de reguliere talen op Σ precies samenvalt met de klasse van de reguliere verzamelingen. Voor elke reguliere taal L bestaat er bijgevolg een reguliere expressie ω, waarvan de bijhorende reguliere verzameling precies L is. Voorbeeld De reguliere taal L 3 = {}{} {} is precies de reguliere verzameling horende bij de reguliere expressie. Vooraleer we verder gaan, merken we hier op dat niet alle talen reguliere talen zullen zijn. We zullen bv. zien dat de taal L 4 = { n n n N} geen reguliere taal is..3 Eindige automaten en reguliere talen In de voorbij sectie hebben we kennis gemaakt met reguliere talen. Het blijkt dat er voor deze talen relatief eenvoudige algoritmes bestaan die nagaan of een welbepaalde string al dan niet tot de taal behoort of niet. Wat we precies bedoelen met relatief eenvoudig zal duidelijker worden naarmate dit hoofdstuk vordert. Vooreerst zullen we een heel eenvoudig computermodel, 9

11 dat van een eindige automaat, opstellen dat in staat zal blijken om deze algoritmes uit te voeren. Vooraleer een echte definitie te geven, starten we met een voorbeeld. Voorbeeld Beschouw het volgende diagramma: Start Indien we nu een willekeurige string uit {,} beshouwen, kunnen we het bovenstaande schema doorlopen gebruik makend van de gegeven string en de labels die bij de pijlen genoteerd staan. We illustreren hoe dit werkt op twee voorbeelden. Neem als eerste voorbeeld de string. We starten het schema bij de meest linkse cirkel. Omwille van de eerste van de string verplaatsen we ons naar de bovenste cirkel. De tweede uit de string zegt ons naar de rechter cirkel te gaan. Daarna doet de eerste nul ons naar de onderste cirkel gaan en de volgende nul en de laatste doen ons telkens terugkeren naar de onderste cirkel. Op het einde bevinden we ons dus in de onderste cirkel. Beschouw nu eens de string. We starten opnieuw zoals aangegeven in de meest linkse cirkel. Daar we als eerste symbool een zien, verplaatsen we ons naar de cirkel bovenaan. Het volgende symbool, een, laat ons ter plaatse blijven, evenals de volgende nul. Het laatste symbool daarentegen is een en volgens het label bij de pijl moeten we nu naar de meest rechtse cirkel gaan. We kunnen ditzelfde systeem nu herhalen voor alle mogelijke strings uit Σ (met Σ = {,}). Voor elke string zijn er nu twee mogelijkheden: ofwel eindigen we in de meest rechtse cirkel (met dubbele rand) ofwel eindigen we in een van de andere cirkels (met enkele rand). In het eerste geval zeggen we dat de string aanvaard werd, in het tweede geval zeggen we dat de string verworpen werd. Zodoende bepaalt dit schema een taal L, waarbij een string x Σ tot de taal behoort enkel en alleen als die string aanvaard wordt. Wanneer we het schema goed analyseren zien we dat in dit voorbeeld de taal L samenvalt met de reguliere taal L 3 uit de vorige voorbeelden. Een eindige automaat zal nu precies een computermodel zijn dat door een dergelijk schema kan worden voorgesteld. De basisingrediënten van een eindige automaat zijn een eindig aantal toestanden (in het schema voorgesteld door cirkels) waarin de machine zich kan bevinden en vanuit elke toestand overgangen afhankelijk van de invoer op dat moment.

12 Definitie.3. Eindige automaat Een eindige automaat is een 5-tal A = (Q,Σ,δ,q,F) waarbij Q een eindige verzameling is. We noemen de elementen van Q de toestanden van de automaat A. F Q is de verzameling van de aanvaardbare eindtoestanden. (De letter F is de eerste letter van het engelse Final). q Q, deze toestand wordt de begintoestand genoemd. Σ is een eindige verzameling, het alfabet van de automaat. δ is een afbeelding, de transitieafbeelding genoemd, δ : Q Σ Q. Een eindige automaat (in het Engels a finite automaton of meer precies a finite state automaton afgekort FSA) werkt als volgt: Bij de start bevindt de machine zich in de begintoestand q. Op het moment dat we zullen starten zal er ook steeds een invoerstring x = σ σ 2...σ n gegeven zijn (Het is mogelijk dat x de lege string λ is). Per tijdseenheid voert de machine één instructie uit. Om de eerste instructie uit te voeren berekent de automaat de waarde van δ(q,σ ). Deze waarde is opnieuw een toestand, zeg q i. Als tweede stap bepaalt de automaat dan q i2 = δ(q i,σ 2 ).... Als n-de en laatste stap berekent de machine tenslotte q in = δ(q in,σ n ) Na deze n-de en laatste stap zijn er nu twee mogelijkheden: ofwel behoort q in tot de aanvaardbare eindtoestanden F, ofwel niet. In het eerste geval zeggen we dat de automaat de string x aanvaardt, in het andere geval wordt de string verworpen. Voorbeeld We beschouwen een eindige automaat A = (Q,Σ,δ,q,F), met. Q = {E,O}, met begintoestand q = E. 2. F = {E} 3. Σ = {,}. 4. De afbeelding δ wordt gegeven door volgende tabel δ O O E E E O

13 De werking van de automaat op de string is als volgt:. Stap : de automaat berekent q i = δ(q,) = δ(e,) = O. 2. Stap 2: de automaat berekent q i2 = δ(q i,) = δ(o,) = E. 3. Stap 3: de automaat berekent q i3 = δ(q i2,) = δ(e,) = E. 4. Stap 4: de automaat berekent q i4 = δ(q i3,) = δ(e,) = O F. De invoerstring wordt verworpen. We kunnen voor elke eindige automaat, de transitieafbeelding δ voorstellen aan de hand van een tabel zoals hierboven. We kunnen echter net als in de inleiding een eindige automaat tezamen met zijn transitieafbeelding, ook schematisch voorstellen. We gebruiken daarvoor de volgende afspraken. Voor elke toestand uit Q tekenen we een cirkel. De toestanden die tot F behoren voorzien we van een dubbele rand. Eventueel schrijven we in de cirkel de naam van de toestand. De begintoestand q o wordt gekenmerkt door een inkomende pijl die niet benoemd is (of waar we start bijschrijven). om de transitieafbeelding weer te geven tekenen we pijlen. Indien δ(q, σ) = q zullen we een pijl tekenen van de cirkel die toestand q voorstelt, naar de cirkel die toestand q voorstelt en we geven het label σ aan deze pijl. Indien bovendien eveneens δ(q,µ) = q, dan tekenen we geen 2 pijlen, maar we geven die ene pijl twee (of meer indien nodig) labels. De automaat van daarnet kan voorgesteld wordt als volgt: E O Bij een automaat kan men de transitieafbeelding δ uitbreiden tot een afbeelding δ : Q Σ Q. Met andere woorden, het tweede argument kan nu niet enkel een symbool (dit is een string van lengte ) uit Σ zijn, maar een willekeurig string. De definitie van δ gebeurt inductief als volgt:. σ Σ, q Q : δ (q,σ) = δ(q,σ). (Op symbolen uit Σ valt δ samen met δ). 2. Indien x = σ σ 2... σ n Σ een string is van lengte n 2, definiëren we δ (q,x) = δ (q,σ σ 2... σ n ) = δ (δ(q,σ ),σ 2...σ n ). 2

14 3. Voor de volledigheid nemen we δ (q,λ) = q. De definitie van δ is zodanig gekozen dat indien we de automaat laten inwerken op de string x, de machine eindigt in toestand δ (q,x). Een string x wordt bijgevolg aanvaard door een eindige automaat A, als en slechts als δ (q,x) F. Definitie.3.2 Taal bepaald door een eindige automaat Indien A = (Q,Σ,δ,q,F) een eindige automaat is, noemen we L(A) = {x Σ δ (q,x) F } de taal bepaald door de eindige automaat A. Indien voor een gegeven taal L Σ geldt dat L = L(A) zeggen we dat A de taal L herkent. Voorbeeld Zij A de automaat van daarnet. Dan is de taal bepaald door A gelijk aan L(A) = {x {,} x bevat een even aantal -en} Inderdaad, telkens een gelezen wordt uit de invoerstring, verandert de machine haar toestand van O in E of omgekeerd, bij het lezen van een, verandert de toestand niet. Toestand O (resp. E) betekent dan ook tot nu toe een oneven (resp. even) aantal -en gelezen. Een string wordt dan aanvaard als de machine op het einde stopt in toestand E. Voorbeeld Neem de taal L op het alfabet Σ = {a, b} die bestaat uit alle strings waar achteraan minstens 2 keer het symbool b staat. We construeren een eindige automaat die deze taal L herkent. Een dergelijke automaat kan als volgt werken: We moeten de invoerstring doorlopen van links naar rechts. Op elk moment proberen we te onthouden of we, tot op de plaats waar we op dat moment zitten, met een staart van, of minstens 2 b s zitten. Bij het doorlopen van de invoerstring abbbabb moeten we bijvoorbeeld het volgende onthouden: a b b b a b b onthouden Nu is het zo dat een eindige automaat niet echt over een geheugen beschikt. De enige manier waarop een eindige automaat iets kan onthouden is door gebruik te maken van zijn eindig aantal toestanden. We voorzien dan ook in onze automaat toestanden q, q en q 2 om respectievelijk, en 2 te onthouden. Een automaat A = (Q,Σ,δ,q,F) die de taal L herkent wordt schematisch weergegeven als 3

15 a b b q q q2 a a b Merk op dat de taal L = {a,b} {bb} een reguliere taal is. Dit is geen toeval. Het namelijk zo dat een taal die beslist wordt door een eindige automaat steeds een reguliere taal is en omgekeerd, voor elke reguliere taal bestaat er een eindige automaat die deze taal herkent. We hebben dus de volgende eigenschap die we hier formuleren zonder bewijs. Stelling.3.3 De klasse van talen die herkend worden door een eindige automaat valt precies samen met de klasse van de reguliere talen. Tot slot van deze sectie geven we nog een voorbeeld van een niet reguliere taal. Bewering: De taal L = { n n n N} is geen reguliere taal. We kunnen dit verklaren door aan te geven dat er geen eindige automaat bestaat die deze taal herkent. We maken hiervoor een redenering vanuit het ongerijmde. Stel dat er een eindige automaat A = (Q,Σ,δ,q,F) bestaat die de taal herkent, en onderstel dat het aantal toestanden in Q gelijk is aan n +. We kunnen zonder verlies van algemeenheid aannemen dat de toestanden gegeven worden als Q = {q,q,...,q n }. Neem nu de string x = n+2 n+2 L. Aangezien deze string tot L behoort zal de machine na het verwerken van deze string stoppen in een aanvaardbare eindtoestand. We kunnen het verloop van de verwerking van deze machine weergeven in een tabel: gelezen symbool nieuwe toestand q q i q i2... q ip... q ir... q in+ q in+2 q in+3... q in+3 }{{} F Deze tabel geeft onder andere weer dat δ(q ij,) = q ij+, voor j n. Aangezien er slechts n + toestanden zijn, moeten er p en r bestaan, met p < r n +, zodat q ip = q ir. Beschouw nu de string y die we bekomen door het schrappen in x van r p nullen. We weten dat y L. Wanneer we echter de werking van de automaat bekijken op y zien we het volgende: gelezen symbool nieuwe toestand q q i... q ip q ip q ir+... q in+ q in+2 q in+3... q in+3 }{{}}{{} =q ir F 4

16 Dit betekent dat de automaat ook de string y L aanvaard. Bijgevolg is L(A) L en herkent de automaat de taal L niet. Dit voorbeeld toont aan dat alhoewel eindige automaten in staat zijn om alle reguliere talen te herkennen, ze toch beperkte machines zijn en bijgevolg niet geschikt zijn als echt computermodel. In een volgend onderdeel zullen we kennismaken met een sterker computermodel de Turingmachine. Tot slot merken we hier nog op dat er uitbreidingen bestaan van het begrip van een eindige automaat, waarbij ook de mogelijkheid voorzien wordt om uitvoer te genereren. Wij gaan hier echter niet verder op in. Een andere uitbreiding waar we wel even op inpikken in het volgende onderdeel is dat van een nietdeterministische eindige automaat..4 Niet deterministische eindige automaten De eindige automaten we tot nu toe gezien hebben zijn zogenaamde deterministische machines. Dit betekent dat de machine op elk moment slechts één (ondubbelzinninge) instructie te verwerken krijgt en deze instructie slechts op één manier kan uitvoeren. In een algoritme (of programma) laat men nooit de instructie of toe (Doe A of Doe B). Indien we echter aannemen dat we over twee onafhankelijke processoren zouden beschikken, dan zou een opdracht als Doe A of Doe B parallel kunnen uitgevoerd worden. De ene processor zou A kunnen uitvoeren, terwijl de andere B zou kunnen uitvoeren. Indien we maar over één processor beschikken, en we willen toch opdrachten met of-statements uitvoeren, dan moet de machine dus op bepaalde momenten een keuze maken welke van de twee (of meer) mogelijke opdrachten hij zal uitvoeren. Dergelijke machines noemt men niet deterministische machines. Een eerste voorbeeld van een dergelijke niet deterministische machine vinden we bij de eindige automaten. Definitie.4. Een niet-deterministische eindige automaat Een niet deterministische eindige automaat is een 5-tal A = (Q,Σ,δ,q,F) waarbij Q een eindige verzameling is (de toestanden van de automaat A). F Q is de verzameling van de aanvaardbare eindtoestanden. q Q, de begintoestand van de automaat. Σ is een eindige verzameling, het alfabet van de automaat. δ is een afbeelding δ : Q (Σ {λ}) P(Q). P(Q) = {X X Q} duidt de verzameling van alle deelverzamelingen van Q aan. 5

17 Het verschil tussen een gewone (deterministische) eindige automaat en een niet determinisitische ligt dus in het feit dat de transitieafbeelding δ geen toestanden als beelden heeft, maar verzamelingen van toestanden. Deze verzamelingen kunnen leeg zijn! Merk eveneens op dat we δ nu ook kunnen toepassen op paren (q i,λ) waarbij λ de lege string is. Ook niet deterministische eindige automaten kunnen we schematisch voorstellen met cirkels en pijlen. We laten bij een niet deterministische machine echter toe dat er vanuit een cirkel meerdere pijlen met hetzelfde label vertrekken. Het label λ mag eveneens gebruikt worden. Daarenboven is het mogelijk dat een bepaald symbool niet als label bij een pijl uit een gegeven cirkel voorkomt. Voorbeeld Beschouw de niet deterministische eindige automaat die schematisch wordt weergegeven als a, b b b q q q2 Hoe werkt deze automaat nu op de string abb? We kunnen verschillende mogelijkheden onderscheiden afhankelijk van de keuzes die de automaat maakt: Mogelijkheid : Na het lezen van symbool a, blijft de machine in toestand q. Daarna kan de machine bij het lezen van de eerste b kiezen om in q te blijven. Bij het lezen van de volgende b kan de machine opnieuw beslissen om in toestand q te blijven en daar dus te eindigen. Mogelijkheid 2: Na het lezen van symbool a, blijft de machine in toestand q. Daarna kan de machine bij het lezen van de eerste b kiezen om over te gaan naar toestand q en dan moet de machine bij het lezen van de laatste b overgaan naar toestand q 2, die een aanvaardbare eindtoestand is. Mogelijkheid 3: Na het lezen van symbool a, blijft de machine in toestand q. Daarna kan de machine bij het lezen van de eerste b kiezen om in in toestand q te blijven. Tenslotte kan de machine bij het lezen van de laatste b kiezen om over te gaan naar en te eindigen in toestand q. We zullen zeggen dat een string aanvaard wordt door een niet deterministische eindige automaat indien er minstens één opeenvolging van keuzes gemaakt kan worden, zodat de automaat eindigt in een aanvaardbare toestand na het verwerken van de string. We zullen nu de functie δ opnieuw uitbreiden tot een functie δ zodat voor elke string x Σ, δ (q,x) de verzameling is van alle mogelijke eindtoestanden, indien we de machine laten werken op x. (Een formele definitie van δ is niet zo eenvoudig en laten we hier dan ook achterwege). Voorbeeld Voor de niet deterministische eindige automaat van daarnet is. δ (q,abb) = {q,q,q 2 } 6

18 2. δ (q,abba) = {q,q } 3. δ (q,aaaaaaa) = {q } Met andere woorden: een toestand q i δ (q,σ σ 2...σ n ) als en slechts als er een pad 2 bestaat in het schema dat de niet deterministische eindige automaat voorstelt, zodanig dat dit pad begint in q en eindigt in q i en waarbij de pijlen opeenvolgend de labels σ, σ 2,..., σ n hebben, maar waarbij we tussendoor ook een willekeurig aantal pijlen met een label λ mogen gebruiken. Net zoals bij de gewone eindige automaten kunnen we in de niet deterministische situatie spreken over de taal aanvaard door een automaat. Definitie.4.2 Taal aanvaard door een niet deterministische automaat. Indien A = (Q,Σ,δ,q,F) een niet deterministische eindige automaat is, noemen we L(A) = {x Σ δ (q,x) F } de taal bepaald door de eindige automaat A. Indien voor een gegeven taal L Σ geldt dat L = L(A) zeggen we dat A de taal L herkent. Voorbeeld De niet deterministische automaat van daarnet herkent de taal L = {a,b} {bb}. We merken op dat deze taal ook herkend wordt door een deterministische eindige automaat. We hebben dit besproken in het voorbeeld op pagina 3. Dit is geen toeval, zoals blijkt uit de volgende eigenschap (zonder bewijs). Stelling.4.3 Elke taal die herkend wordt door een niet deterministische eindige automaat wordt eveneens herkend door een deterministische eindige automaat. Het omgekeerde geldt natuurlijk ook daar elke deterministische eindige automaat kan aanzien worden als een niet-deterministische automaat. Met het gebruik van niet deterministische eindige automaten raken we dus niet buiten de klasse van de reguliere talen. Het gemak van een niet deterministische eindige automaat ligt in het feit dat het veel eenvoudiger is om een niet deterministische eindige automaat te ontwikkelen die een gegeven taal herkent, dan om een deterministische te vinden. 2 Dit begrip zal formeel gemaakt worden in het hoofdstuk over grafentheorie 7

19 Voorbeeld We zoeken een niet deterministische eindige automaat die de taal L = {a} {b} {c} op het alfabet Σ = {a,b,c} herkent. Een voorbeeld van een dergelijke niet deterministische automaat wordt gegeven door a b c q λ λ a q b q c λ q Bovenstaande machine lijkt op het eerste zicht misschien geen niet deterministische machine, want er is geen enkele cirkel waar er meer dan pijl uit vertrekt met eenzelfde label. Nochtans is deze eindige automaat geen deterministische automaat, omdat er ten eerste pijlen zijn met het label λ (dit zorgt er steeds voor dat de automaat een keuze heeft om naar een andere toestand over te gaan!) en ten tweede zijn er cirkels waarbij niet alle labels gebruikt worden, bijvoorbeeld δ(q a,b) = We tonen tot slot van dit onderdeel aan dat het voor reguliere talen L eenvoudig is om een niet deterministische machine te maken die deze taal herkent:. We construeren eerst niet deterministische eindige automaten die de bouwstenen van de klasse der reguliere talen herkennen. (a) De reguliere taal L = wordt herkend door q q (b) De reguliere taal L = {λ} wordt herkend door λ q q (c) Zij σ Σ, de taal L = {σ} wordt herkend door σ q q 2. We bekijken nu achtereenvolgens al de bewerkingen die toegestaan zijn op reguliere talen. Voor een reguliere taal A Σ duiden we met M(A) een niet deterministische eindige automaat aan die A herkent. (We mogen zonder verlies van algemeenheid aannemen dat M(A) slechts één aanvaardbare eindtoestand heeft) 8

20 (a) De taal AB wordt herkend door M(A) M(B) λ λ (b) De taal A B wordt herkend door M(A) λ λ M(B) λ λ (c) De taal A wordt herkend door λ λ M(A) λ λ 2 Turing machines 2. Wat is een Turing machine In het vorige onderdeel hebben we kennis gemaakt met eindige automaten. Dit zijn heel eenvoudige computermodellen. Deze modellen hebben echter geen geheugencapaciteit (behalve dan een zeer beperkte mogelijkheid dankzij het eindig aantal toestanden). Een Turing machine zal opnieuw een wiskundig model zijn van een eenvoudige computer, maar nu met een grote geheugencapaciteit. Het model is niet te ingewikkeld zodat het mogelijk is om bepaalde eigenschappen van dergelijke machines aan te tonen en te behandelen. Van de andere kant is een Turing machine ook ingewikkeld genoeg om alle (reken)taken die we van een computer verwachten te kunnen uitvoeren. Men kan een Turing machine voorstellen als een machine die voorzien is van een magneetband die in twee richtingen kan bewegen. In verschillende fazen van de berekening bevat de band (= het geheugen van dit computermodel!) de invoer voor de berekening, de tussenresultaten en de uitvoer. De magneetband is een oneindig lange rij van symbolen die bestaat uit een eindige string voorafgegaan en gevolgd door oneindig veel blanco karakters (zie figuur.). 9

21 Start Figuur.: Een Turing machine De machine heeft een lees/schrijfkop en het symbool op de magneetband juist onder de kop noemen we het huidig symbool: de operatie van lezen is daarmee impliciet. De kop kan het huidig symbool overschrijven. Een Turing machine heeft een eindig aantal mogelijke toestanden: de machine bevindt zich steeds in één van haar toestanden. Een instructie voor de machine is een voorschrift voor de machine om in één operatie van toestand te veranderen, het huidig symbool te overschrijven met een nieuw symbool en de kop (of de magneetband) één positie naar links of naar rechts te bewegen. Welke instructie uitgevoerd wordt, hangt enkel af van de huidige toestand van de machine en het huidige symbool, niet van de voorgeschiedenis van de machine, noch van andere dan het huidige symbool. Eens gestart, blijft de machine instructies uitvoeren tot zij in een toestand komt waarbij er voor het huidig gelezen symbool geen instructie meer voorhanden is. Op dat moment kan men controleren of de machine al dan niet in een aanvaardbare toestand gestopt is. We schrijven nu het bovenstaande neer in een formele definitie. 2

22 Definitie 2.. Turing machine Een Turing machine bestaat uit een 6-tal M = (Q,Σ,T,P,q,F) waarbij Q een eindige verzameling is. We noemen de elementen van Q toestanden F Q is de verzameling van aanvaardbare eindtoestanden q Q, deze toestand wordt de begintoestand genoemd. Σ is een eindige verzameling, het alfabet van de Turing machine genoemd, waarvan we de elementen symbolen noemen. Eén symbool heeft een speciale betekenis, het blanco symbool of lege symbool en wordt voorgesteld door #. T Σ\{#} is de verzameling van invoersymbolen. De elementen van Σ\(T {#}) worden hulpsymbolen genoemd. P is een functie (niet noodzakelijk een afbeelding) P : (Q\F) Σ Q Σ {L,R,} P wordt het programma of de instructieset van de Turing machine genoemd. (In de verzameling {L,R,} staat L voor Links, R voor Rechts en voor Blijf staan, waarmee de beweging van de schrijfkop aangegeven wordt.) Wanneer we de machine starten bevindt deze zich in de begintoestand q en staat de leeskop boven het meest linkse, niet blanco symbool van de magneetband. De machine voert dan het programma P uit en dit moet als volgt geïnterpreteerd worden: Noem q de toestand waarin de Turing machine zich op een bepaald moment bevindt en zij σ Σ het symbool dat op datzelfde moment door de kop gelezen wordt. Nu zijn er twee mogelijkheden. Het koppel (q,σ) behoort tot het definitiegebied van de functie P. Dit betekent dat P(q,σ) bestaat en gelijk is aan een drietal (q,σ,x) Q Σ {L,R,}. Het effect van de uitvoering van deze instructie is dat de Turing machine haar toestand (eventueel) zal veranderen in toestand q, dat het huidig gescande symbool σ (eventueel) vervangen wordt door σ en dat de kop zich beweegt zoals X aangeeft, d.w.z. indien X = L, beweegt de kop zich naar links (of de band naar rechts), indien X = R beweegt de kop naar rechts en indien tenslotte X = blijft de kop ter plaatse. 2. Indien het koppel (q,σ) niet behoort tot het definitiegebied van P stopt het programma. De toestand q wordt de eindtoestand van de Turing machine (voor die bepaalde invoer) genoemd. Indien de Turing machine gestopt is en de eindtoestand q behoort tot F, dan zegt men dat de invoerstring aanvaard werd, in het andere geval zeggen we dat de invoerstring verworpen werd. Indien een string aanvaard werd dan beschouwen 2

23 we de eindige string symbolen op de magneetband (dus zonder de twee oneindig lange uiteinden van blanco symbolen) als de uitvoer van de Turing machine. We illustreren deze begrippen aan de hand van een Turing machine die als invoer een string van en en en neemt en daarvan het meest rechtse symbool uitveegt (d.w.z. vervangt door een blanco symbool.) De werking van een dergelijke Turing machine zou er als volgt kunnen uitzien: Bij het begin staat de leeskop op het meest linkse symbool van de string (toestand q ) Daarna zoekt de machine het meest rechtse symbool van de string door de leeskop telkens een positie naar rechts te verschuiven (toestand q ). Op het moment dat de leeskop het blanco symbool # leest, bevindt de kop zich één positie rechts van de string (toestand q 2 ) en moet de kop weer een positie naar links bewegen. Nu moet het ingescande symbool vervangen worden door het blanco symbool # en mag de machine stoppen (toestand h). Formeel bestaat deze Turing machine M dus uit de volgende onderdelen: Toestanden(M) = Q = {q,q,q 2,h}, met q de begintoestand. Aanvaardbare eindtoestand van M is h. Symbolen voor M = Σ = {#,,}. De invoersymbolen zijn T = Σ\{#} = {,}. Het programma P van M wordt gegeven door P(q,) = (q,,r) P(q,) = (q,,r) P(q,) = (q,,r) P(q,) = (q,,r) P(q,#) = (q 2,#,L) P(q 2,) = (h,#,) P(q 2,) = (h,#,) (Indien het meest linkse symbool een of een is, verander de toestand in q en zoek het rechteruiteinde van de string) (Zolang het einde niet gevonden is, beweeg de kop naar rechts) (Indien het einde gevonden is, verander van toestand en beweeg weer één positie naar links) (Wis het laatste symbool en stop in de aanvaardbare eindtoestand h) Voor andere koppels (q,σ) uit Q Σ is P niet gedefinieerd. In figuur.2 bekijken we even het verloop van het programma P, wanneer de Turing machine M als invoer de string krijgt. 2.2 Turing machines en functies Computers worden vaak gebruikt om berekeningen uit te voeren. In dit opzicht is het belangrijk om te weten wat er allemaal mogelijk is met behulp van een computer. Op het eerste gezicht kan men denken dat de functie kwadraat, die 22

24 ... # # #... q... # # #... q... # # #... q... # # #... q... # # #... q 2... # # # #... h Figuur.2: De verschillende stappen die de Turing machine M doorloopt van een natuurlijk getal zijn kwadraat bepaalt, berekenbaar is door middel van een computer. Nu is het echter zo dat elke computer begrensd is in opslagcapaciteit en dus onmogelijk de waarde kwadraat(n) (of zelfs het getal n zelf) voor elk natuurlijk getal kan opslaan in zijn geheugen. Toch zien we deze beperking niet als een echte beperking, want door desnoods het geheugen van onze computer uit te breiden kunnen we (in theorie althans) kwadraat(n) voor willekeurig grote n berekenen. Daarom wordt dikwijls gezegd dat de functie effectief berekenbaar is. Algemeen noemen we elke functie die berekenbaar is op een machine met onbegrensde opslagcapaciteit effectief berekenbaar. In het vorig onderdeel hebben we kennis gemaakt met een dergelijke machine met een onbegrensde opslagcapaciteit, namelijk de Turing machine (TM in het vervolg). In dit onderdeel bekijken we hoe we een TM kunnen gebruiken om functies van N naar N te berekenen, maar eerst omschrijven we nauwkeuriger wat we bedoelen met een functie die door een TM berekend wordt. Veronderstel dat een TM M = (Q,Σ,T,P,q,F) een invoer x T krijgt. Indien M bij die invoer stopt in een aanvaardbare eindtoestand dan noteren we de geproduceerde output door f M (x). Indien M niet stopt of stopt in een niet aanvaardbare eindtoestand, dan zeggen we dat f M (x) onbepaald is. Op die manier definieert de TM M een functie f M : T Σ. We noemen f M de functie berekend door M. Daarom wordt een functie f : T Σ Turing berekenbaar genoemd als en slechts als er een TM M bestaat zodanig dat f = f M. Hier willen we even de aandacht vestigen op de onbewezen (en onbewijsbare) 23

25 Stelling 2.2. These van Church Een functie is effectief berekenbaar als en slechts als die functie Turing berekenbaar is. Het is duidelijk dat elke Turing berekenbare functie effectief berekenbaar is, aangezien een TM een voorbeeld is van een machine met onbegrensde opslagcapaciteit. Het omgekeerde is in feite niet aantoonbaar omdat het begrip machine met onbegrensde opslagcapaciteit veel te vaag is en niet precies genoeg gedefinieerd kan worden. Vanaf nu zullen we ons concentreren op functies (met één of meerdere veranderlijken) gedefinieerd op de natuurlijke getallen. De eerste stap in het ontwikkelen van een TM die een bepaalde functie berekent is het kiezen van een voorstellingswijze voor de natuurlijke getallen. We kunnen het natuurlijk houden bij de decimale voorstellingswijze, maar dan hebben we minstens symbolen (,,...,#) nodig in onze TM. Om de TM echter eenvoudig te houden is het verstandig om zo weinig mogelijk symbolen te gebruiken. Daarvoor is het handig om gebruik te maken van de binaire of zelfs de unaire notatie. In de unaire notatie stellen we getal voor door, het getal door, het getal 2 door,..., het getal n door } {{ }. Bij deze laatste voorstellingswijze hebben we dus slechts symbool n+ enen nodig om de getallen zelf voor te stellen. Laten we nu enkele voorbeelden bekijken van Turing berekenbare functies. Voorbeeld De constante nulfunctie f : N N : n is Turing berekenbaar. We kiezen voor de unaire representatie van de natuurlijke getallen. Een TM kan de constante nulfunctie als volgt berekenen: Bij om het even wat voor een invoerstring verplaatsen we de leeskop steeds een positie naar rechts waarbij we telkens het ingescande symbool wissen, tot we deze string voorbij zijn. Daarna schrijven we als uitvoer het symbool, de unaire representatie voor op de magneetband. Een formele beschrijving van deze TM M = (Q,Σ,T,P,q,F) wordt als volgt gegeven: Q = {q,q,h}, F = {h} Σ = {,#}, T = {} P wordt gegeven door: P(q,) = (q,#,r) P(q,) = (q,#,r) P(q,#) = (h,,) 24

26 Opmerking We merken hier op dat de bovenstaande TM niet minimaal is (in het aantal toestanden). Je hoeft namelijk niet meteen van toestand q over te gaan naar een nieuwe toestand. (We illustreren dit in het voorbeeld hieronder.) De bovenstaande functie is natuurlijk niet de meest interessante functie. Een iets beter voorbeeld wordt gegeven door de volgende TM die de som van twee natuurlijke getallen berekent. Voorbeeld De functie + : N N N : (x,y) x + y is Turing berekenbaar. Voor de constructie van een TM voor deze functie spreken we af dat de invoer als volgt gebeurt: We stellen de twee natuurlijke getallen voor door middel van hun unaire representatie en scheiden ze van elkaar op de tape door middel van een plusteken +. De TM die de som van deze twee getallen berekent kan dit doen door het plusteken dat de twee getallen van elkaar scheidt te vervangen door een en nadien twee keer een te wissen aan het einde van de op deze manier bekomen string van (x + ) + + (y + ) -en. De TM M met de volgende gegevens doet wat we verlangen: Q = {q,q,q 2,h}, F = {h} Σ = {,+,#}, T = {,+} P is gegeven door: P(q,) = (q,,r) P(q,+) = (q,,r) P(q,#) = (q,#,l) P(q,) = (q 2,#,L) P(q 2,) = (h,#,) Voorbeeld De functie N N : x 2x is Turing berekenbaar. De TM die we zullen gebruiken om deze functie te berekenen is interessant omdat ze. het gebruik van hulpsymbolen illustreert. 2. toont hoe een lus geprogrammeerd kan worden (Opmerking: een alternatieve werkwijze wordt geïllustreerd in oefening 8) We veronderstellen terug dat de invoer gebeurt in unaire notatie. M.a.w. de invoerstring voor het getal x N bestaat uit x + enen. De TM die 2x berekent kan bijvoorbeeld als volgt te werk gaan: Stap : Vervang de laatste door een ( is dus een hulpsymbool) (Situatie: }... {{ } ) x keer Stap 2: Kopieer de string van enen voor het teken, onmiddellijk na dit teken. (Situatie: }... {{ }... }{{ } ) x keer x keer 25

27 Stap 3: Vervang terug door en we verkrijgen een string van 2x + enen, wat verwacht wordt. Om Stap 2 uit te voeren zullen we een lus gebruiken, die als volgt werkt: Zolang er een staat voor het teken doe: Vervang de die het dichtst bij staat door het symbool A (A is een tweede hulpsymbool) Schrijf een op de eerste vrije plaats na. Na het uitvoeren van deze lus, vervangen we alle A s terug door een. We beschrijven nu de formele data voor deze TM. Q = {q,q,q 2,q 3,q 4,q 5,h}, F = {h} Σ = {,#,,A}, T = {} P is gegeven door: P(q,) = (q,,r) P(q,#) = (q,#,l) P(q,) = (q 2,,L) P(q 2,) = (q 3,A,R) P(q 2,A) = (q 2,A,L) Vervang de laatste door een. Toestand q 2 is de begintoestand voor het uitvoeren van de lus. De leeskop bevindt zich op dat moment links van. In deze toestand zoekt de TM naar de eerstvolgende voor. Indien we een vinden, vervang deze door A en begin naar rechts op te schuiven om na nog een te kunnen schrijven. Indien nog niet gevonden, kijk verder naar links. 26

28 P(q 2,#) = (q 5,#,R) P(q 3,A) = (q 3,A,R) P(q 3, ) = (q 3,,R) P(q 3,) = (q 3,,R) P(q 3,#) = (q 4,,L) P(q 4,) = (q 4,,L) P(q 4, ) = (q 2,,L) P(q 5,A) = (q 5,,R) P(q 5, ) = (h,,) Alle -en zijn vervangen door een A, verlaat de lus. In toestand q 3 schuift de kop volledig naar rechts en schrijft op de eerste beschikbare positie een. In toestand q 4 schuiven we de leeskop weer tot voorbij het teken en de machine komt weer in toestand q 2 te staan. In toestand q 5 (na het volledig uitvoeren van de lus) vervangen we alle A s terug in een en tenslotte ook het -teken in een. Op dat moment mag de TM stoppen. In de onderstaande tabel bekijken we even al de verschillende stappen die door deze TM uitgevoerd worden bij een invoerstring...##..., d.w.z. x = 2. Toestand Magneetband q # # # # q # # # # q # # # # q # # # # q # # # # q 2 # # # # q 3 # A # # # q 3 # A # # # q 4 # A # # q 2 # A # # q 2 # A # # q 3 # A A # # q 3 # A A # # q 3 # A A # # q 3 # A A # # q 4 # A A # q 4 # A A # q 2 # A A # q 2 # A A # q 2 # A A # q 5 # A A # q 5 # A # q 5 # # h # # Hetzelfde principe voor het benutten van lussen en hulpsymbolen kan gebruikt worden om aan te tonen dat er een TM M bestaat die het product van twee 27

29 natuurlijke getallen berekent. Door herhaaldelijk gebruik van deze technieken kan men voor elke veeltermfunctie f : N N : x a + a x + a 2 x + + a n x n (met a i N) een TM construeren die deze functie berekent. Het zou ons echter te ver leiden om deze TM s daadwerkelijk op te bouwen. Tot nu toe hebben we enkel de unaire notatie gebruikt voor de natuurlijke getallen. Hoe zit het nu als we een andere notatie gebruiken, bvb. de binaire notatie. Het blijkt dat de gekozen voorstellingswijze geen enkel belang heeft op de berekenbaarheid van een functie. Inderdaad, het is niet zo moeilijk om een TM te construeren die als input een getal in unaire voorstellingswijze en als output dat getal in binaire schrijfwijze heeft (zie de opdrachten bij de oefeningen). Laat ons zo een TM fixeren en noem deze CODEER. Ook voor de omgekeerde bewerking kan men een TM construeren, die we DECODEER noemen. Indien T f nu een TM is die een bepaalde functie in unaire notatie berekent, dan kunnen we een TM T f bouwen die f berekent in binaire notatie door eerst DECODEER toe te passen op de inputstring, waardoor we het getal in unaire notatie krijgen, op deze string T f toe te passen en dan ten slotte op het resultaat van deze berekening CODEER toe te passen om het antwoord terug van unaire naar binaire notatie om te vormen. Hetzelfde kan gezegd worden voor decimale of om het even wat voor andere representatie van de natuurlijke getallen. We kunnen dus besluiten dat de klasse van berekenbare functies f : N N onafhankelijk is van de gekozen voorstellingswijze van de natuurlijke getallen. De bovenstaande voorbeelden zouden kunnen de indruk wekken dat elke functie f : N N berekenbaar is. De volgende stelling toont echter aan dat dit niet het geval is. Stelling Er bestaat een niet Turing berekenbare functie f : N N. Bewijs: Zij f : N N een Turing berekenbare functie. We kunnen zonder verlies van algemeenheid aannemen dat er een Turing machine T f = (Q,Σ, {},P,q,F) bestaat die f in unaire notatie berekent. Daarenboven mogen we veronderstellen dat de toestanden in Q geschreven worden als q,q,q 2,...,q n, voor een zekere n N. Ook mogen we aannemen dat de symbolen uit de eindige verzameling Σ geschreven worden als σ = #, σ =, σ 2, σ 3,..., σ m, voor een m N. Een instructie uit het programma P van de TM T f is dus van de vorm P(q i,σ j ) = (q k,σ l,x), met i,j,k,l N en X {L,R,}. We kunnen deze instructie ook noteren door een 5 tal t = (q i,σ j,q k,σ l,x). De volledige instructieset P bestaat dus uit een eindige rij van 5 tallen t. We gebruiken nu de Gödel aftellingstechniek om dergelijke vijftallen te coderen. We koppelen aan elk 5 tal t een getal g(t) uit N als volgt: g(t) = 2 i 3 j 5 k 7 l m, met 28 m = X = L m = X = R m = 2 X =

30 Het is duidelijk dat uit g(t ) = g(t 2 ) volgt dat t = t 2 (waarom?). Een eindige rij van 5 tallen (P dus) t = (t,t 2,...,t r ) kan nu worden gecodeerd als het natuurlijk getal waarbij p r het r de priemgetal is. g( t) = 2 g(t ) 3 g(t 2) p g(tr) r, Onderstel nu dat de TM T f als aanvaardbare eindtoestanden, de toestanden q λ,q λ2,...,q λs heeft. Dan kunnen we de volledige TM T f coderen als ( t = P) g(t f ) = 2 g( t) 3 λ 5 λ2 p λs s+ We hebben dus aangetoond dat er met elke Turing berekenbare functie f een natuurlijk getal g(t f ) overeenkomt dat als code voor de TM T f dient. Op die manier hebben we aangetoond dat de verzameling van alle T f s die we op die manier beschouwd hebben aftelbaar oneindig is. Dit wil zeggen dat we de Turing machines T f kunnen nummeren met behulp van de natuurlijke getallen. (We geven het nummer aan de machine met de kleinste Gödel codering g(t f ), het nummer aan de TM met de op één na kleinste Gödel codering,...). We verkrijgen dat we alle dergelijke TM s kunnen beschouwen als een rij T f,t f,t f2,t f3,..., waarbij T fi de functie f i berekent. Elke Turing berekenbare functie f valt dus samen met minstens één f i. Definieer nu de functie g : N N : n { fn (n) + als f n (n) gedefinieerd is als f n (n) niet gedefinieerd is Veronderstel nu dat g een Turing berekenbare functie is. Dit zou betekenen dat g door één of andere TM T fk berekend wordt. Maar T fk berekent f k, dus moet g = f k. Daar g overal gedefinieerd is, moet dus ook f k overal gedefinieerd zijn. Dit leidt echter tot een contradictie want we hebben dan dat f k (k) g(k) = f k (k)+. 29

Fundamenten van de Informatica

Fundamenten van de Informatica Fundamenten van de Informatica Luc De Raedt Academiejaar 2006-2007 naar de cursustekst van Karel Dekimpe en Bart Demoen A.1: Talen en Eindige Automaten 1 Deel 1: Inleiding 2 Motivatie Fundamenten van de

Nadere informatie

Automaten & Complexiteit (X )

Automaten & Complexiteit (X ) Automaten & Complexiteit (X 401049) Inleiding Jeroen Keiren j.j.a.keiren@vu.nl VU University Amsterdam Materiaal Peter Linz An Introduction to Formal Languages and Automata (5th edition) Jones and Bartlett

Nadere informatie

Automaten. Informatica, UvA. Yde Venema

Automaten. Informatica, UvA. Yde Venema Automaten Informatica, UvA Yde Venema i Inhoud Inleiding 1 1 Formele talen en reguliere expressies 2 1.1 Formele talen.................................... 2 1.2 Reguliere expressies................................

Nadere informatie

3 De stelling van Kleene

3 De stelling van Kleene 18 3 De stelling van Kleene Definitie 3.1 Een formele taal heet regulier als hij wordt herkend door een deterministische eindige automaat. Talen van de vorm L(r) met r een reguliere expressie noemen we

Nadere informatie

Automaten & Complexiteit (X )

Automaten & Complexiteit (X ) Automaten & Complexiteit (X 401049) Beschrijven van reguliere talen Jeroen Keiren j.j.a.keiren@gmail.com VU University Amsterdam 5 Februari 2015 Talen Vorig college: Talen als verzamelingen Eindige automaten:

Nadere informatie

c, X/X a, c/λ a, X/aX b, X/X

c, X/X a, c/λ a, X/aX b, X/X ANTWOORDEN tentamen FUNDAMENTELE INFORMATICA 3 vrijdag 25 januari 2008, 10.00-13.00 uur Opgave 1 L = {x {a,b,c} n a (x) n b (x)} {x {a,b,c} n a (x) n c (x)}. a. Een stapelautomaat die L accepteert: Λ,

Nadere informatie

Module Limieten van de berekenbaarheid : antwoorden

Module Limieten van de berekenbaarheid : antwoorden Module Limieten van de berekenbaarheid : antwoorden Gilles Coremans 2018 This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International license. Dit werk is gebaseerd

Nadere informatie

Talen & Automaten. Wim Hesselink Piter Dykstra Opleidingsinstituut Informatica en Cognitie 9 mei 2008

Talen & Automaten. Wim Hesselink Piter Dykstra Opleidingsinstituut Informatica en Cognitie   9 mei 2008 Talen & Automaten Wim Hesselink Piter Dykstra Opleidingsinstituut Informatica en Cognitie www.cs.rug.nl/~wim 9 mei 2008 Talen & automaten Week 1: Inleiding Dit college Talen Automaten Berekenbaarheid Weekoverzicht

Nadere informatie

opgaven formele structuren deterministische eindige automaten

opgaven formele structuren deterministische eindige automaten opgaven formele structuren deterministische eindige automaten Opgave. De taal L over het alfabet {a, b} bestaat uit alle strings die beginnen met aa en eindigen met ab. Geef een reguliere expressie voor

Nadere informatie

Getallensystemen, verzamelingen en relaties

Getallensystemen, verzamelingen en relaties Hoofdstuk 1 Getallensystemen, verzamelingen en relaties 1.1 Getallensystemen 1.1.1 De natuurlijke getallen N = {0, 1, 2, 3,...} N 0 = {1, 2, 3,...} 1.1.2 De gehele getallen Z = {..., 4, 3, 2, 1, 0, 1,

Nadere informatie

1 Rekenen in eindige precisie

1 Rekenen in eindige precisie Rekenen in eindige precisie Een computer rekent per definitie met een eindige deelverzameling van getallen. In dit hoofdstuk bekijken we hoe dit binnen een computer is ingericht, en wat daarvan de gevolgen

Nadere informatie

Rekenen aan wortels Werkblad =

Rekenen aan wortels Werkblad = Rekenen aan wortels Werkblad 546121 = Vooraf De vragen en opdrachten in dit werkblad die vooraf gegaan worden door, moeten schriftelijk worden beantwoord. Daarbij moet altijd duidelijk zijn hoe de antwoorden

Nadere informatie

Stelling. SAT is NP-compleet.

Stelling. SAT is NP-compleet. Het bewijs van de stelling van Cook Levin zoals gegeven in het boek van Sipser gebruikt niet-deterministische turing machines. Het is inderdaad mogelijk de klasse NP op een alternatieve wijze te definiëren

Nadere informatie

Automaten en Berekenbaarheid 2016 Oplossingen #4

Automaten en Berekenbaarheid 2016 Oplossingen #4 Automaten en Berekenbaarheid 2016 Oplossingen #4 28 oktober 2016 Vraag 1: Toon aan dat de klasse van context vrije talen gesloten is onder concatenatie en ster. Antwoord Meerdere manieren zijn mogelijk:

Nadere informatie

IN2505 II Berekenbaarheidstheorie Tentamen Maandag 2 juli 2007, uur

IN2505 II Berekenbaarheidstheorie Tentamen Maandag 2 juli 2007, uur TECHNISCHE UNIVERSITEIT DELFT Faculteit Elektrotechniek, Wiskunde en Informatica Mekelweg 4 2628 CD Delft IN2505 II Berekenbaarheidstheorie Tentamen Maandag 2 juli 2007, 14.00-17.00 uur BELANGRIJK Beschikbare

Nadere informatie

Automaten en Berekenbaarheid

Automaten en Berekenbaarheid Automaten en Berekenbaarheid Bart Demoen KU Leuven 2016-2017 Les 8: 118-125 orakels en reducties met orakels Turing-berekenbare functies de bezige bever Orakelmachines I 2/14 we kennen al: een TM die een

Nadere informatie

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c Een Minimaal Formalisme om te Programmeren We hebben gezien dat Turing machines beschouwd kunnen worden als universele computers. D.w.z. dat iedere berekening met natuurlijke getallen die met een computer

Nadere informatie

We beginnen met de eigenschappen van de gehele getallen.

We beginnen met de eigenschappen van de gehele getallen. II.2 Gehele getallen We beginnen met de eigenschappen van de gehele getallen. Axioma s voor Z De gegevens zijn: (a) een verzameling Z; (b) elementen 0 en 1 in Z; (c) een afbeelding +: Z Z Z, de optelling;

Nadere informatie

Uitwerking tentamen Analyse van Algoritmen, 29 januari

Uitwerking tentamen Analyse van Algoritmen, 29 januari Uitwerking tentamen Analyse van Algoritmen, 29 januari 2007. (a) De buitenste for-lus kent N = 5 iteraties. Na iedere iteratie ziet de rij getallen er als volgt uit: i rij na i e iteratie 2 5 4 6 2 2 4

Nadere informatie

opgaven formele structuren tellen Opgave 1. Zij A een oneindige verzameling en B een eindige. Dat wil zeggen (zie pagina 6 van het dictaat): 2 a 2.

opgaven formele structuren tellen Opgave 1. Zij A een oneindige verzameling en B een eindige. Dat wil zeggen (zie pagina 6 van het dictaat): 2 a 2. opgaven formele structuren tellen Opgave 1. Zij A een oneindige verzameling en B een eindige. Dat wil zeggen (zie pagina 6 van het dictaat): ℵ 0 #A, B = {b 0,..., b n 1 } voor een zeker natuurlijk getal

Nadere informatie

Zomercursus Wiskunde. Katholieke Universiteit Leuven Groep Wetenschap & Technologie. September 2008

Zomercursus Wiskunde. Katholieke Universiteit Leuven Groep Wetenschap & Technologie. September 2008 Katholieke Universiteit Leuven September 008 Algebraïsch rekenen (versie 7 juni 008) Inleiding In deze module worden een aantal basisrekentechnieken herhaald. De nadruk ligt vooral op het symbolisch rekenen.

Nadere informatie

Gödels theorem An Incomplete Guide to Its Use and Abuse, Hoofdstuk 3

Gödels theorem An Incomplete Guide to Its Use and Abuse, Hoofdstuk 3 Gödels theorem An Incomplete Guide to Its Use and Abuse, Hoofdstuk 3 Koen Rutten, Aris van Dijk 30 mei 2007 Inhoudsopgave 1 Verzamelingen 2 1.1 Definitie................................ 2 1.2 Eigenschappen............................

Nadere informatie

2 n 1. OPGAVEN 1 Hoeveel cijfers heeft het grootste bekende Mersenne-priemgetal? Met dit getal vult men 320 krantenpagina s.

2 n 1. OPGAVEN 1 Hoeveel cijfers heeft het grootste bekende Mersenne-priemgetal? Met dit getal vult men 320 krantenpagina s. Hoofdstuk 1 Getallenleer 1.1 Priemgetallen 1.1.1 Definitie en eigenschappen Een priemgetal is een natuurlijk getal groter dan 1 dat slechts deelbaar is door 1 en door zichzelf. Om technische redenen wordt

Nadere informatie

Opdracht 1 Topics on Parsing and Formal Languages - fall 2010

Opdracht 1 Topics on Parsing and Formal Languages - fall 2010 Opdracht 1 Topics on Parsing and Formal Languages - fall 2010 Rick van der Zwet 8 december 2010 Samenvatting Dit schrijven zal uitwerkingen van opgaven behandelen uit het boek [JS2009]

Nadere informatie

Inhoud eindtoets. Eindtoets. Introductie 2. Opgaven 3. Terugkoppeling 6

Inhoud eindtoets. Eindtoets. Introductie 2. Opgaven 3. Terugkoppeling 6 Inhoud eindtoets Eindtoets Introductie 2 Opgaven 3 Terugkoppeling 6 1 Formele talen en automaten Eindtoets I N T R O D U C T I E Deze eindtoets is bedoeld als voorbereiding op het tentamen van de cursus

Nadere informatie

Vorig college. IN2505-II Berekenbaarheidstheorie College 4. Opsommers versus herkenners (Th. 3.21) Opsommers

Vorig college. IN2505-II Berekenbaarheidstheorie College 4. Opsommers versus herkenners (Th. 3.21) Opsommers Vorig college College 4 Algoritmiekgroep Faculteit EWI TU Delft Vervolg NDTM s Vergelijking rekenkracht TM s en NDTM s Voorbeelden NDTM s 20 april 2009 1 2 Opsommers Opsommers versus herkenners (Th. 3.21)

Nadere informatie

Getallenleer Inleiding op codeertheorie. Cursus voor de vrije ruimte

Getallenleer Inleiding op codeertheorie. Cursus voor de vrije ruimte Getallenleer Inleiding op codeertheorie Liliane Van Maldeghem Hendrik Van Maldeghem Cursus voor de vrije ruimte 2 Hoofdstuk 1 Getallenleer 1.1 Priemgetallen 1.1.1 Definitie en eigenschappen Een priemgetal

Nadere informatie

Oplossingen oefeningen logica en eindige automaten 12 december Het bestand oplnoef12dec.zip bevat de.sen en.fa bestanden met de oplossingen.

Oplossingen oefeningen logica en eindige automaten 12 december Het bestand oplnoef12dec.zip bevat de.sen en.fa bestanden met de oplossingen. Oplossingen oefeningen logica en eindige automaten 12 december 2003 Het bestand oplnoef12dec.zip bevat de.sen en.fa bestanden met de oplossingen. Oefening 1 Deel 1: Logica Vertaal de volgende zinnen in

Nadere informatie

1 Delers 1. 3 Grootste gemene deler en kleinste gemene veelvoud 12

1 Delers 1. 3 Grootste gemene deler en kleinste gemene veelvoud 12 Katern 2 Getaltheorie Inhoudsopgave 1 Delers 1 2 Deelbaarheid door 2, 3, 5, 9 en 11 6 3 Grootste gemene deler en kleinste gemene veelvoud 12 1 Delers In Katern 1 heb je geleerd wat een deler van een getal

Nadere informatie

Het omzetten van reguliere expressies naar eindige automaten, zie de vakken Fundamentele Informatica 1 en 2.

Het omzetten van reguliere expressies naar eindige automaten, zie de vakken Fundamentele Informatica 1 en 2. Datastructuren 2016 Programmeeropdracht 3: Patroonherkenning Deadlines. Woensdag 23 november 23:59, resp. vrijdag 9 december 23:59. Inleiding. Deze opdracht is gebaseerd op Hoofdstuk 13.1.7 in het boek

Nadere informatie

Berekenbaarheid 2015 Uitwerkingen Tentamen 5 november 2015

Berekenbaarheid 2015 Uitwerkingen Tentamen 5 november 2015 erekenbaarheid 2015 Uitwerkingen Tentamen 5 november 2015 1. Definieer een standaard Turing-machine M 1 met input alfabet Σ = {a, b} die twee a s voor zijn input plakt, dus met M 1 (w) = aaw voor alle

Nadere informatie

Opdracht 1 Topics on Parsing and Formal Languages - fall 2010

Opdracht 1 Topics on Parsing and Formal Languages - fall 2010 Opdracht 1 Topics on Parsing and Formal Languages - fall 2010 Rick van der Zwet 13 november 2010 Samenvatting Dit schrijven zal uitwerkingen van opgaven behandelen uit het boek [JS2009]

Nadere informatie

Bijzondere kettingbreuken

Bijzondere kettingbreuken Hoofdstuk 15 Bijzondere kettingbreuken 15.1 Kwadratische getallen In het vorige hoofdstuk hebben we gezien dat 2 = 1, 2, 2, 2, 2, 2, 2,.... Men kan zich afvragen waarom we vanaf zeker moment alleen maar

Nadere informatie

Projectieve Vlakken en Codes

Projectieve Vlakken en Codes Projectieve Vlakken en Codes 1. De Fanocode Foutdetecterende en foutverbeterende codes. Anna en Bart doen mee aan een spelprogramma voor koppels. De ene helft van de deelnemers krijgt elk een kaart waarop

Nadere informatie

Automaten en Berekenbaarheid

Automaten en Berekenbaarheid Automaten en Berekenbaarheid Bart Demoen KU Leuven 2016-2017 Les 2: 20-35 reguliere expressies NFA DFA minimalisatie Van RE naar NFA I 2/11 structureel (als algebra s) zijn RegExp en de NFA s gelijk voor

Nadere informatie

IN2505 II Berekenbaarheidstheorie. IN2505-II Berekenbaarheidstheorie. Practicum: Inschrijven. Practicum

IN2505 II Berekenbaarheidstheorie. IN2505-II Berekenbaarheidstheorie. Practicum: Inschrijven. Practicum IN2505 II Berekenbaarheidstheorie College 1 Algoritmiekgroep Faculteit EWI TU Delft 7 april 2009 Docent: Colleges/oefeningen: dinsdag 5 + 6 (EWI-A), vrijdag 1 + 2 (AULA-A) Boek: Michael Sipser, Introduction

Nadere informatie

Paradox van zelfreproductie. IN2505-II Berekenbaarheidstheorie. Zelfreproductie? Programma s en zelfreproductie. College 11.

Paradox van zelfreproductie. IN2505-II Berekenbaarheidstheorie. Zelfreproductie? Programma s en zelfreproductie. College 11. Paradox van zelfreproductie College 11 Algoritmiekgroep Faculteit EWI TU Delft 27 mei 2009 1 Levende wezens zijn machines. 2 Levende wezens kunnen zich reproduceren. 3 Machines kunnen zich niet reproduceren.

Nadere informatie

Zomercursus Wiskunde. Module 1 Algebraïsch rekenen (versie 22 augustus 2011)

Zomercursus Wiskunde. Module 1 Algebraïsch rekenen (versie 22 augustus 2011) Katholieke Universiteit Leuven September 011 Module 1 Algebraïsch rekenen (versie augustus 011) Inhoudsopgave 1 Rekenen met haakjes 1.1 Uitwerken van haakjes en ontbinden in factoren............. 1. De

Nadere informatie

TENTAMEN Basismodellen in de Informatica VOORBEELDUITWERKING

TENTAMEN Basismodellen in de Informatica VOORBEELDUITWERKING TENTAMEN Basismodellen in de Informatica vakcode: 211180 datum: 2 juli 2009 tijd: 9:00 12:30 uur VOORBEELDUITWERKING Algemeen Bij dit tentamen mag gebruik worden gemaakt van het boek van Sudkamp, van de

Nadere informatie

Uitwerking Opgaven Formele talen, grammaticas en automaten Week 1

Uitwerking Opgaven Formele talen, grammaticas en automaten Week 1 Uitwerking Opgaven Formele talen, grammaticas en automaten Week 1 Bas Westerbaan bas@westerbaan.name 24 april 2012 1 Opgave 1.1 Een goed en voldoende antwoord is: L 1 = L 2, want L 1 en L 2 zijn alle woorden

Nadere informatie

Elfde college complexiteit. 23 april NP-volledigheid III

Elfde college complexiteit. 23 april NP-volledigheid III college 11 Elfde college complexiteit 23 april 2019 NP-volledigheid III 1 TSP Als voorbeeld bekijken we het Travelling Salesman/person Problem, ofwel het Handelsreizigersprobleem TSP. Hiervoor geldt: TSP

Nadere informatie

Berekenbaarheid 2015 Hertentamen 8 februari 2016

Berekenbaarheid 2015 Hertentamen 8 februari 2016 erekenbaarheid 2015 Hertentamen 8 februari 2016 Voor je verder leest, schrijf je naam, studentnummer en studierichting op het antwoordvel. Er zijn 10 opgaven die ieder 9 punten opleveren, de eerste 10

Nadere informatie

Getaltheorie I. c = c 1 = 1 c (1)

Getaltheorie I. c = c 1 = 1 c (1) Lesbrief 1 Getaltheorie I De getaltheorie houdt zich bezig met het onderzoek van eigenschappen van gehele getallen, en meer in het bijzonder, van natuurlijke getallen. In de getaltheorie is het gebruikelijk

Nadere informatie

VERZAMELINGEN EN AFBEELDINGEN

VERZAMELINGEN EN AFBEELDINGEN I VERZAMELINGEN EN AFBEELDINGEN Het begrip verzameling kennen we uit het dagelijks leven: een bibliotheek bevat een verzameling van boeken, een museum een verzameling van kunstvoorwerpen. We kennen verzamelingen

Nadere informatie

Vorig college. IN2505-II Berekenbaarheidstheorie. Turingmachines. Turingmachine en Taal. College 2

Vorig college. IN2505-II Berekenbaarheidstheorie. Turingmachines. Turingmachine en Taal. College 2 Vorig college College 2 Algoritmiekgroep Faculteit EWI TU Delft Welke problemen zijn (niet) algoritmisch oplosbaar? Wat is een probleem? Wat is een algoritme? 13 april 2009 1 2 Turingmachines Turingmachine

Nadere informatie

Verzamelingen deel 2. Tweede college

Verzamelingen deel 2. Tweede college 1 Verzamelingen deel 2 Tweede college herhaling Deelverzameling: AB wil zeggen dat elk element van A ook in B te vinden is: als x A dan x B Er geldt: A=B AB en BA De lege verzameling {} heeft geen elementen.

Nadere informatie

Berekenbaarheid 2016 Uitwerkingen Tentamen 26 januari 2017

Berekenbaarheid 2016 Uitwerkingen Tentamen 26 januari 2017 erekenbaarheid 2016 Uitwerkingen Tentamen 26 januari 2017 1. Geef een standaard Turing-machine M 1 die de volgende taal herkent door eindtoestand: L 1 := {w {a, b, c} w a + w b = w c } Hierin is w a een

Nadere informatie

Formeel Denken. Herfst 2004

Formeel Denken. Herfst 2004 Formeel Denken Herman Geuvers Deels gebaseerd op het herfst 2002 dictaat van Henk Barendregt en Bas Spitters, met dank aan het Discrete Wiskunde dictaat van Wim Gielen Herfst 2004 Contents 1 Talen 1 1.1

Nadere informatie

Berekenbaarheid 2013 Uitwerkingen Tentamen 23 januari 2014

Berekenbaarheid 2013 Uitwerkingen Tentamen 23 januari 2014 erekenbaarheid 2013 Uitwerkingen Tentamen 23 januari 2014 1. Geef een standaard Turing-machine die de taal L 1 := {a n b n n N} = {λ, ab, aabb,... } herkent door stoppen. Je mag in je machine hulpsymbolen

Nadere informatie

Uitleg van de Hough transformatie

Uitleg van de Hough transformatie Uitleg van de Hough transformatie Maarten M. Fokkinga, Joeri van Ruth Database groep, Fac. EWI, Universiteit Twente Versie van 17 mei 2005, 10:59 De Hough transformatie is een wiskundige techniek om een

Nadere informatie

Formeel Denken 2014 Uitwerkingen Tentamen

Formeel Denken 2014 Uitwerkingen Tentamen Formeel Denken 2014 Uitwerkingen Tentamen (29/01/15) 1. Benader de betekenis van de volgende Nederlandse zin zo goed mogelijk (6 punten) door een formule van de propositielogica: Als het regent word ik

Nadere informatie

(iii) Enkel deze bundel afgeven; geen bladen toevoegen, deze worden toch niet gelezen!

(iii) Enkel deze bundel afgeven; geen bladen toevoegen, deze worden toch niet gelezen! Examen Wiskundige Basistechniek, reeks A 12 oktober 2013, 13:30 uur Naam en Voornaam: Lees eerst dit: (i) Naam en voornaam hierboven invullen. (ii) Nietje niet losmaken. (iii) Enkel deze bundel afgeven;

Nadere informatie

Lights Out. 1 Inleiding

Lights Out. 1 Inleiding Lights Out 1 Inleiding Het spel Lights Out is een elektronisch spel dat gelanceerd werd in 1995 door Tiger Electronics. Het originele spel heeft een bord met 25 lampjes in een rooster van 5 rijen en 5

Nadere informatie

Je hebt twee uur de tijd voor het oplossen van de vraagstukken. µkw uitwerkingen. 12 juni 2015

Je hebt twee uur de tijd voor het oplossen van de vraagstukken. µkw uitwerkingen. 12 juni 2015 Je hebt twee uur de tijd voor het oplossen van de vraagstukken. Elk vraagstuk is maximaal 10 punten waard. Begin elke opgave op een nieuw vel papier. µkw uitwerkingen 12 juni 2015 Vraagstuk 1. We kunnen

Nadere informatie

Hoofdstuk 3. Equivalentierelaties. 3.1 Modulo Rekenen

Hoofdstuk 3. Equivalentierelaties. 3.1 Modulo Rekenen Hoofdstuk 3 Equivalentierelaties SCHAUM 2.8: Equivalence Relations Twee belangrijke voorbeelden van equivalentierelaties in de informatica: resten (modulo rekenen) en cardinaliteit (aftelbaarheid). 3.1

Nadere informatie

Radboud Universiteit Nijmegen

Radboud Universiteit Nijmegen Radboud Universiteit Nijmegen Faculteit der Natuurwetenschappen, Wiskunde en Informatica L(,1)-labeling van grafen Naam: Studentnummer: Studie: Begeleider: Myrte klein Brink 4166140 Bachelor Wiskunde Dr.

Nadere informatie

Volledige inductie. Hoofdstuk 7. Van een deelverzameling V van de verzameling N van alle natuurlijke getallen veronderstellen.

Volledige inductie. Hoofdstuk 7. Van een deelverzameling V van de verzameling N van alle natuurlijke getallen veronderstellen. Hoofdstuk 7 Volledige inductie Van een deelverzameling V van de verzameling N van alle natuurlijke getallen veronderstellen we het volgende: (i) 0 V (ii) k N k V k + 1 V Dan is V = N. Men ziet dit als

Nadere informatie

Uitwerkingen Rekenen met cijfers en letters

Uitwerkingen Rekenen met cijfers en letters Uitwerkingen Rekenen met cijfers en letters Maerlant College Brielle 5 oktober 2009 c Swier Garst - RGO Middelharnis 2 Inhoudsopgave Rekenen met gehele getallen 7. De gehele getallen.....................................

Nadere informatie

Uitgebreide uitwerking Tentamen Complexiteit, mei 2007

Uitgebreide uitwerking Tentamen Complexiteit, mei 2007 Uitgebreide uitwerking Tentamen Complexiteit, mei 007 Opgave. a. Een beslissingsboom beschrijft de werking van het betreffende algoritme (gebaseerd op arrayvergelijkingen) op elke mogelijke invoer. In

Nadere informatie

Lab Webdesign: Javascript 3 maart 2008

Lab Webdesign: Javascript 3 maart 2008 H5: OPERATORS In dit hoofdstuk zullen we het hebben over de operators (of ook wel: operatoren) in JavaScript waarmee allerlei rekenkundige en logische bewerkingen kunnen worden uitgevoerd. Daarbij zullen

Nadere informatie

inhoudsopgave januari 2005 handleiding algebra 2

inhoudsopgave januari 2005 handleiding algebra 2 handleiding algebra inhoudsopgave Inhoudsopgave 2 De grote lijn 3 Bespreking per paragraaf 1 Routes in een rooster 4 2 Oppervlakte in een rooster 4 3 Producten 4 4 Onderzoek 5 Tijdpad 9 Materialen voor

Nadere informatie

Uitgebreide uitwerking Tentamen Complexiteit, juni 2016

Uitgebreide uitwerking Tentamen Complexiteit, juni 2016 Uitgebreide uitwerking Tentamen Complexiteit, juni 016 Opgave 1. (3+10++7+6) a. De hoogte van de beslissingsboom (lengte van het langste pad) stelt het aantal arrayvergelijkingen in de worst case voor.

Nadere informatie

OPLOSSINGEN VAN DE OEFENINGEN

OPLOSSINGEN VAN DE OEFENINGEN OPLOSSINGEN VAN DE OEFENINGEN 1.3.1. Er zijn 42 mogelijke vercijferingen. 2.3.4. De uitkomsten zijn 0, 4 en 4 1 = 4. 2.3.6. Omdat 10 = 1 in Z 9 vinden we dat x = c 0 +... + c m = c 0 +... + c m. Het getal

Nadere informatie

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II Tweede bachelor Informatica Academiejaar 2012 2013, tweede zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele

Nadere informatie

3 Wat is een stelsel lineaire vergelijkingen?

3 Wat is een stelsel lineaire vergelijkingen? In deze les bekijken we de situatie waarin er mogelijk meerdere vergelijkingen zijn ( stelsels ) en meerdere variabelen, maar waarin elke vergelijking er relatief eenvoudig uitziet, namelijk lineair is.

Nadere informatie

TW2020 Optimalisering

TW2020 Optimalisering TW2020 Optimalisering Hoorcollege 11 Leo van Iersel Technische Universiteit Delft 25 november 2015 Leo van Iersel (TUD) TW2020 Optimalisering 25 november 2015 1 / 28 Vandaag Vraag Voor welke problemen

Nadere informatie

Reguliere Expressies

Reguliere Expressies Reguliere Expressies Een reguliere expressie (regexp, regex, regxp) is een string (een woord) die, volgens bepaalde syntaxregels, een verzameling strings (een taal) beschrijft Reguliere expressies worden

Nadere informatie

Memoriseren: Een getal is deelbaar door 10 als het laatste cijfer een 0 is. Of: Een getal is deelbaar door 10 als het eindigt op 0.

Memoriseren: Een getal is deelbaar door 10 als het laatste cijfer een 0 is. Of: Een getal is deelbaar door 10 als het eindigt op 0. REKENEN VIJFDE KLAS en/of ZESDE KLAS Luc Cielen 1. REGELS VAN DEELBAARHEID. Luc Cielen: Regels van deelbaarheid, grootste gemene deler en kleinste gemeen veelvoud 1 Deelbaarheid door 10, 100, 1000. Door

Nadere informatie

Tentamen in2505-ii Berekenbaarheidstheorie

Tentamen in2505-ii Berekenbaarheidstheorie TECHNISCHE UNIVERSITEIT DELFT Faculteit Elektrotechniek, Wiskunde en Informatica Tentamen in2505-ii Berekenbaarheidstheorie 16 juni 2008, 14.00 17.00 uur Dit tentamen bestaat uit 5 open vragen. Totaal

Nadere informatie

Supplement Verzamelingenleer. A.J.M. van Engelen en K. P. Hart

Supplement Verzamelingenleer. A.J.M. van Engelen en K. P. Hart Supplement Verzamelingenleer A.J.M. van Engelen en K. P. Hart 1 Hoofdstuk 1 Het Keuzeaxioma Het fundament van de hedendaagse verzamelingenleer werd in de vorige eeuw gelegd door Georg Cantor. Cantor gebruikte

Nadere informatie

Rekenen met cijfers en letters

Rekenen met cijfers en letters Rekenen met cijfers en letters Maerlant College Brielle 5 oktober 009 c Swier Garst - RGO Middelharnis Inhoudsopgave Rekenen met gehele getallen 7. De gehele getallen.....................................

Nadere informatie

V = {a, b, c, d, e} Computernetwerken: de knopen zijn machines in het netwerk, de kanten zijn communicatiekanalen.

V = {a, b, c, d, e} Computernetwerken: de knopen zijn machines in het netwerk, de kanten zijn communicatiekanalen. WIS14 1 14 Grafen 14.1 Grafen Gerichte grafen Voor een verzameling V is een binaire relatie op V een verzameling geordende paren van elementen van V. Voorbeeld: een binaire relatie op N is de relatie KleinerDan,

Nadere informatie

Het minimale aantal sleutels op niveau h is derhalve

Het minimale aantal sleutels op niveau h is derhalve 1 (a) In een B-boom van orde m bevat de wortel minimaal 1 sleutel en maximaal m 1 sleutels De andere knopen bevatten minimaal m 1 sleutels en maximaal m 1 sleutels (b) In een B-boom van orde 5 bevat elke

Nadere informatie

Automaten en Berekenbaarheid

Automaten en Berekenbaarheid Automaten en Berekenbaarheid Bart Demoen KU Leuven 2016-2017 Les 3: 36-54 Myhill-Nerode relaties; regulier pompen Myhill-Nerode equivalentieklassen in Σ I 2/10 belangrijk te verstaan: een equivalentie-relatie

Nadere informatie

Inleiding Analyse 2009

Inleiding Analyse 2009 Inleiding Analyse 2009 Inleveropgaven A). Stel f(, y) = In (0, 0) is f niet gedefinieerd. We bestuderen y2 2 + y 4. lim f(, y). (,y) (0,0) 1. Bepaal de waarde van f(, y) op een willekeurige rechte lijn

Nadere informatie

Onafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms

Onafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms Onafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms Giso Dal (0752975) Pagina s 5 7 1 Deelverzameling Representatie

Nadere informatie

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II Tweede bachelor Informatica Academiejaar 2014 2015, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele

Nadere informatie

Aanvullingen bij Hoofdstuk 6

Aanvullingen bij Hoofdstuk 6 Aanvullingen bij Hoofdstuk 6 We veralgemenen eerst Stelling 6.4 tot een willekeurige lineaire transformatie tussen twee vectorruimten en de overgang naar twee nieuwe basissen. Stelling 6.4. Zij A : V W

Nadere informatie

Aanvullingen bij Hoofdstuk 8

Aanvullingen bij Hoofdstuk 8 Aanvullingen bij Hoofdstuk 8 8.5 Definities voor matrices De begrippen eigenwaarde eigenvector eigenruimte karakteristieke veelterm en diagonaliseerbaar worden ook gebruikt voor vierkante matrices los

Nadere informatie

Negende college complexiteit. 9 april NP-volledigheid I: introductie

Negende college complexiteit. 9 april NP-volledigheid I: introductie College 9 Negende college complexiteit 9 april 2019 NP-volledigheid I: introductie 1 Handelbaar/onhandelbaar -1- N 10 50 100 300 1000 log 2 N 3 5 6 8 9 5N 50 250 500 1500 5000 N log 2 N 33 282 665 2469

Nadere informatie

1 Limiet van een rij Het begrip rij Bepaling van een rij Expliciet voorschrift Recursief voorschrift 3

1 Limiet van een rij Het begrip rij Bepaling van een rij Expliciet voorschrift Recursief voorschrift 3 HOOFDSTUK 6: RIJEN 1 Limiet van een rij 2 1.1 Het begrip rij 2 1.2 Bepaling van een rij 2 1.2.1 Expliciet voorschrift 2 1.2.2 Recursief voorschrift 3 1.2.3 Andere gevallen 3 1.2.4 Rijen met de grafische

Nadere informatie

Ruimtemeetkunde deel 1

Ruimtemeetkunde deel 1 Ruimtemeetkunde deel 1 1 Punten We weten reeds dat Π 0 het meetkundig model is voor de vectorruimte R 2. We definiëren nu op dezelfde manier E 0 als meetkundig model voor de vectorruimte R 3. De elementen

Nadere informatie

Hoofdstuk 4 Het schakelen van weerstanden.

Hoofdstuk 4 Het schakelen van weerstanden. Hoofdstuk 4 Het schakelen van weerstanden.. Doel. Het is de bedoeling een grote schakeling met weerstanden te vervangen door één equivalente weerstand. Een equivalente schakeling betekent dat een buitenstaander

Nadere informatie

Netwerkdiagram voor een project. AOA: Activities On Arrows - activiteiten op de pijlen.

Netwerkdiagram voor een project. AOA: Activities On Arrows - activiteiten op de pijlen. Netwerkdiagram voor een project. AOA: Activities On Arrows - activiteiten op de pijlen. Opmerking vooraf. Een netwerk is een structuur die is opgebouwd met pijlen en knooppunten. Bij het opstellen van

Nadere informatie

Basiskennis lineaire algebra

Basiskennis lineaire algebra Basiskennis lineaire algebra Lineaire algebra is belangrijk als achtergrond voor lineaire programmering, omdat we het probleem kunnen tekenen in de n-dimensionale ruimte, waarbij n gelijk is aan het aantal

Nadere informatie

Tentamen Grondslagen van de Wiskunde A Met beknopte uitwerking

Tentamen Grondslagen van de Wiskunde A Met beknopte uitwerking Tentamen Grondslagen van de Wiskunde A Met beknopte uitwerking 10 december 2013, 09:30 12:30 Dit tentamen bevat 5 opgaven; zie ook de ommezijde. Alle opgaven tellen even zwaar (10 punten); je cijfer is

Nadere informatie

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren HOOFDSTUK 3 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of procedurele programmeertalen. is het stapsgewijs in code omschrijven wat een programma moet

Nadere informatie

3. Structuren in de taal

3. Structuren in de taal 3. Structuren in de taal In dit hoofdstuk behandelen we de belangrijkst econtrolestructuren die in de algoritmiek gebruikt worden. Dit zijn o.a. de opeenvolging, selectie en lussen (herhaling). Vóór we

Nadere informatie

FLIPIT 5. (a i,j + a j,i )d i d j = d j + 0 = e d. i<j

FLIPIT 5. (a i,j + a j,i )d i d j = d j + 0 = e d. i<j FLIPIT JAAP TOP Een netwerk bestaat uit een eindig aantal punten, waarbij voor elk tweetal ervan gegeven is of er wel of niet een verbinding is tussen deze twee. De punten waarmee een gegeven punt van

Nadere informatie

6.1 Kwadraten [1] HERHALING: Volgorde bij berekeningen:

6.1 Kwadraten [1] HERHALING: Volgorde bij berekeningen: 6.1 Kwadraten [1] HERHALING: Volgorde bij berekeningen: 1) Haakjes wegwerken 2) Vermenigvuldigen en delen van links naar rechts 3) Optellen en aftrekken van links naar rechts Schrijf ALLE stappen ONDER

Nadere informatie

Deel 2. Basiskennis wiskunde

Deel 2. Basiskennis wiskunde Deel 2. Basiskennis wiskunde Vraag 26 Definieer de functie f : R R : 7 cos(2 ). Bepaal de afgeleide van de functie f in het punt 2π/2. (A) f 0 ( 2π/2) = π (B) f 0 ( 2π/2) = 2π (C) f 0 ( 2π/2) = 2π (D)

Nadere informatie

I.3 Functies. I.3.2 Voorbeeld. De afbeeldingen f: R R, x x 2 en g: R R, x x 2 zijn dus gelijk, ook al zijn ze gegeven door verschillende formules.

I.3 Functies. I.3.2 Voorbeeld. De afbeeldingen f: R R, x x 2 en g: R R, x x 2 zijn dus gelijk, ook al zijn ze gegeven door verschillende formules. I.3 Functies Iedereen is ongetwijfeld in veel situaties het begrip functie tegengekomen; vaak als een voorschrift dat aan elk getal een ander getal toevoegt, bijvoorbeeld de functie fx = x die aan elk

Nadere informatie

Willem van Ravenstein

Willem van Ravenstein Willem van Ravenstein 1. Variabelen Rekenen is het werken met getallen. Er zijn vier hoofdbewerkingen: optellen, aftrekken, vermenigvuldigen en delen. Verder ken je de bewerkingen machtsverheffen en worteltrekken.

Nadere informatie

Wiskunde klas 3. Vaardigheden. Inhoudsopgave. 1. Breuken 2. 2. Gelijksoortige termen samennemen 3. 3. Rekenen met machten 3. 4. Rekenen met wortels 4

Wiskunde klas 3. Vaardigheden. Inhoudsopgave. 1. Breuken 2. 2. Gelijksoortige termen samennemen 3. 3. Rekenen met machten 3. 4. Rekenen met wortels 4 Vaardigheden Wiskunde klas Inhoudsopgave. Breuken. Gelijksoortige termen samennemen. Rekenen met machten. Rekenen met wortels. Algebraïsche producten 6. Ontbinden in factoren 6 7. Eerstegraads vergelijkingen

Nadere informatie

Examen G0U13 Bewijzen en Redeneren Bachelor 1ste fase Wiskunde. vrijdag 31 januari 2014, 8:30 12:30. Auditorium L.00.07

Examen G0U13 Bewijzen en Redeneren Bachelor 1ste fase Wiskunde. vrijdag 31 januari 2014, 8:30 12:30. Auditorium L.00.07 Examen G0U13 Bewijzen en Redeneren Bachelor 1ste fase Wiskunde vrijdag 31 januari 2014, 8:30 12:30 Auditorium L.00.07 Geef uw antwoorden in volledige, goed lopende zinnen. Het examen bestaat uit 5 vragen.

Nadere informatie

In Vlaanderen bestaat er nog geen leerlijn programmeren! Hierdoor baseren wij ons op de leerlijn die men in Nederland toepast voor basisscholen.

In Vlaanderen bestaat er nog geen leerlijn programmeren! Hierdoor baseren wij ons op de leerlijn die men in Nederland toepast voor basisscholen. Leerlijn programmeren In Vlaanderen bestaat er nog geen leerlijn programmeren! Hierdoor baseren wij ons op de leerlijn die men in Nederland toepast voor basisscholen. Deze leerlijn is opgebouwd aan de

Nadere informatie

Veeltermen. Module 2. 2.1 Definitie en voorbeelden. Een veelterm met reële coëfficiënten in één veranderlijke x is een uitdrukking van de vorm

Veeltermen. Module 2. 2.1 Definitie en voorbeelden. Een veelterm met reële coëfficiënten in één veranderlijke x is een uitdrukking van de vorm Module 2 Veeltermen 2.1 Definitie en voorbeelden Een veelterm met reële coëfficiënten in één veranderlijke x is een uitdrukking van de vorm a 0 +a 1 x+a 2 x 2 + +a n x n met a 0,a 1,a 2,...,a n Ê en n

Nadere informatie

Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub. Belgische Olympiades in de Informatica (duur : maximum 1u15 )

Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub. Belgische Olympiades in de Informatica (duur : maximum 1u15 ) OI 2010 Finale 12 Mei 2010 Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub VOORNAAM :....................................................... NAAM :..............................................................

Nadere informatie

De Minimax-Stelling en Nash-Evenwichten

De Minimax-Stelling en Nash-Evenwichten De Minima-Stelling en Nash-Evenwichten Sebastiaan A. Terwijn Radboud Universiteit Nijmegen Afdeling Wiskunde 20 september 2010 Dit is een bijlage bij het eerstejaars keuzevak Wiskunde, Politiek, en Economie.

Nadere informatie

Verzamelingen deel 3. Derde college

Verzamelingen deel 3. Derde college 1 Verzamelingen deel 3 Derde college rekenregels Een bewerking op A heet commutatief als voor alle x en y in A geldt dat x y = y x. Een bewerking op A heet associatief als voor alle x, y en z in A geldt

Nadere informatie