start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c
|
|
- Annemie Jacobs
- 8 jaren geleden
- Aantal bezoeken:
Transcriptie
1 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 gedaan kan worden, ook met een Turing machine uitgevoerd kan worden. Het omzetten van het algoritme naar een Turing machine is hierbij meestal geen eenvoudige zaak. In het algemeen is het oorspronkelijke algoritme ook niet meer te herkennen na de transformatie. Een Turing machine is weliswaar een abstracte computer maar kan in principe ook gebouwd worden en is daarom ook als een implementatie van het algoritme te beschouwen. Bedenk hierbij wel dat je voor ieder algoritme een aparte Turing machine moet bouwen. In dit hoofdstuk zullen we een heel andere benadering hanteren we het programmeerformalisme als uitgangspunt ipv een (abstracte) machine die het algoritme uitvoert. Het streven is om met een minimum aan formalisme een maximum aan expressie kracht te krijgen. Het verrassende is dat er een formalisme mogelijk is dat maar op 1 regel is gebaseerd. Het formalisme dat we hanteren is gebaseerd op de Lambda Caluclus. De Lambda Calculus werd in de jaren 30 van de vorige eeuw door Alonzo Church ontwikkeld als een alternatief fundament voor de wiskunde (i.p.v. logica). Al snel bleek dat de Lambda Calculus ook zeer geschikt is om algoritmen mee te beschrijven. Alan Turing bewees dat de Lambda Calculus dezelfde klasse van algoritmen kan beschrijven als zijn Turing machines. De Lambda Calculus is nogal abstract en lastig te leren. Daarom gebruiken wij hier een wat meer toegankelijke versie die meer op een gewone programmeertaal lijkt. Definitie van een minimale programmeertaal Een programma in onze programmeertaal bestaat uit een aantal functies met een start functie. Een functie is een voorschrift waarmee het ene patroon door een ander kan worden vervangen. Hier een aantal voorbeelden: f a b = b a g x y = f x y id x = x k x y = x c x y z = x (y z) s f g x = f x (g x) app f x = f x start = id (k (f c s) (g s c)) Een functie bestaat uit een naam gevolgd door een aantal variabele namen (0 of meer), gevolgd door = gevolgd door een functie body. In de functie body mogen alleen namen van variabelen en namen van andere functies uit ons programma en haakjes om te groeperen verschijnen. Een functie body is altijd een functie applicatie (het toepassen van een functie op een aantal argumenten). Hierbij mag de functie die wordt toegepast ook een variabele zijn. De argumenten mogen functies, variabelen of andere functie toepassingen zijn. Bv. in de functie f wordt in de body a toegepast op b. In de functie c wordt x toegepast op de toepassing van y op z. Het runnen van een programma bestaat nu uit, beginnende met de start functie, alle functie applicaties uit te voeren tot dit niet meer verder kan. Het uitvoeren van een functie applicatie bestaat uit het vervangen van een functie aanroep door de rechterkant van de bijbehorende functie waarbij op de plaats van de variabelen de actuele argumenten worden ingevuld. In ons voorbeeld wordt dit: start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c De laatste functie applicatie kan niet meer herschreven worden omdat s 3 argumenten verwacht en er maar 1 krijgt. De afspraak is dan dat we niet verder herschrijven. Er zijn verschillende vragen te stellen. 1. Maakt het uit in welke volgorde je functie herschrijvingen uitvoert? 2. Eindigt het herschrijfproces altijd? 1
2 Bv. we hadden bij de tweede pijl ook kunnen kiezen om eerst het argument van id te herschrijven en daarna pas de id functie uit te voeren. Hetzelfde geldt voor de derde pijl. Hier hadden we eerst de argumenten van k kunnen herschrijven en daarna k toe te passen. In dit geval leidt dit tot extra werk omdat het tweede argument van k wordt weggegooid. Probeer zelf in het bovenstaande voorbeeld verschillende volgorden uit. Het zal blijken dat dit voor het eindresultaat niets uit maakt. Het is gemakkelijk voorbeelden te geven programma s die niet eindigen. f x = f (f x) id x = x start = f id Het herschrijf proces wordt nu: start = f id -> f (f id) -> f (f (f id)) ->... In dit geval eindigt de herschrijving niet. Voor het herschrijven zullen we de strategie hanteren dat we steeds de buitenste functie aanroep proberen te herschrijven tot dit niet meer verder gaat en dat we daarna de argumenten van de overgebleven functie van links naar rechts gaan herschrijven (waarbij we weer dezelfde regel hanteren). Deze herschrijfstrategie heet left-outer-most reductie. Er geldt nu de volgende stelling: Stelling (Church-Rosser) Als er een voor een programma een eindigende herschrijfstrategie bestaat, dan zal left-outer-most reductie ook eindigen en bovendien zal het resultaat hetzelfde zijn. Het bewijs van deze stelling is zeer technisch en zullen we daarom achterwege laten. Intuïtief is het resultaat wel te snappen omdat de buitenste functie applicatie nooit kan wegvallen en daarom op zeker moment altijd uitgevoerd moet worden. Het moment van herschrijven van de buitenste functie applicatie kan daarom het al of niet eindigen van het programma niet veranderen. De antwoorden op bovenstaande vragen zijn dus: 1. De volgorde maakt alleen uit als de ene volgorde eindigt en de andere niet. Alle eindigende herschrijf strategieën leiden tot hetzelfde resultaat. 2. Nee. Hiermee hebben we het basis formalisme gedefinieerd. Het lijkt op het eerste gezicht een weinig bruikbaar formalisme. Er zitten bv geen getallen en bewerkingen op getallen in het formalisme. Deze zullen we zelf moeten definiëren. De enige regel die we hebben is het vervangen van linkerkanten door rechterkanten. In deze zin is het formalisme erg minimaal. Alvorens verder te gaan maken een kleine uitbreiding op het formalisme, n.m.l. anonieme functies. Deze vereenvoudigen de notatie in veel gevallen maar veranderen de kracht van het formalisme niet. Een anonieme functie heeft de vorm \v1 v2 -> body en mag aan de rechter kant van functie definities verschijnen op iedere plek waar ook een functie aanroep mag staan. We geven een paar voorbeelden. h = (\x y -> x) c s f a b = app (\x -> c x a) b We kunnen een definitie met anonieme functies altijd vervangen door een aantal definities zonder anonieme functies. In het eerste voorbeeld kunnen we de anonieme functie vervangen door k. Het tweede voorbeeld kunnen we vervangen door twee functies: f a b = app (f a) b f a x = c x a 2
3 Men kan eenvoudig nagaan dat de nieuwe functies samen hetzelfde resultaat opleveren als de oorspronkelijke definitie met anonieme functie. Let er op dat in de aanroep van de nieuwe functie f a als extra argument zit. Getallen als functies Om te kunnen rekenen hebben we in ieder geval getallen en hun operaties (optellen, aftrekken, vermenigvuldigen, delen, etc.) nodig. Voor de definitie van getallen vallen we terug op de Peano axioma s. Peano was de eerste die een formele definitie van natuurlijke getallen gaf. Voor die tijd beschouwde men natuurlijke getallen als een (goddelijk) gegeven. Het principe van volledige inductie zoals dit in het dictaat discrete wiskunde wordt behandeld is gebaseerd op de Peano Axioma s. Het idee van Peano was de natuurlijke getallen onder te verdelen in twee klassen. De ene klasse bevat alleen het getal 0. Deze andere klasse bevat alle getallen die een opvolger van een natuurlijk zijn (alle andere getallen). We zullen 0 in het Peano formalisme zero noemen en de opvolger van het getal n aanduiden met suc n (successor n). Op deze wijze is 1: suc zero, 2: suc (suc zero), etc. We beginnen al functies in het bovenstaande formalisme te herkennen. Maar we zijn er nog niet. Laten we eerst naar de optel operatie van natuurlijke getallen kijken. We kunnen deze als volgt definiëren: add n zero = n add n (suc pm) = suc (add n pm) In woorden: Als we 0 bij n optellen is het resultaat n. Als we de opvolger van pm bij n willen optellen is het resultaat de opvolger van het resultaat van de som van n en pm. Omdat de laatste optelling eenvoudiger is dan de oorspronkelijke zal de recursie uiteindelijk eindigen als pm 0 is geworden. De definitie boven lijkt een aardige poging getallen en optelling in ons formalisme te definiëren, maar de definities hebben ook aan de linker kant een patroon (zero en suc m) en dit is niet toegestaan. Bovendien hebben we voor zero en suc nog geen definitie. We geven nu een definitie van zero, suc en add in bovenstaand formalisme en zullen m.b.v een aantal voorbeelden laten zien dat deze definities inderdaad tot de gewenste resultaten leiden. zero = \f g -> f suc n = \f g -> g n add n m = m n (\pm -> suc (add n pm)) We zien dat in de definities volop gebruik wordt gemaakt van anonieme functies. In zero en suc is dit niet echt nodig (we kunnen de definities vervangen door: zero f g = f en suc n f g = g n). add zouden we zonder anonieme functies naar 2 minder goed leesbare functies moeten transformeren. In add zien we dat we het argument m echt als functie gebruiken en toepassen op 2 argumenten. Bekijk nu het herschrijven van de expressie add (suc zero) (suc zero) add (suc zero) (suc zero) -> def add (suc zero)(suc zero)(\pm -> suc (add (suc zero) pm)) -> (f a) b == f a b suc zero(suc zero)(\pm -> suc (add (suc zero) pm)) -> def. suc (\pm -> suc (add (suc zero) pm)) zero -> toepassing suc (add (suc zero) zero)) -> def add suc (zero (suc zero) ((\pm -> suc(add (suc zero) pm))) -> def zero suc (suc zero) Dit lijkt misschien allemaal heel ingewikkeld, maar het komt precies op hetzelfde neer als de definitie van optellen die we boven hebben gegeven. We maken handig gebruik van het feit dat een getal nu een functie is die je kunt toepassen op twee argumenten. Als het getal 0 is selecteert dit het eerste argument. Als het getal de opvolger is van een ander, dan selecteert dit het tweede argument en past dit toe op de ander. Daarom moet het tweede argument van m in add ook een functie zijn. Je kunt de definitie ook lezen als: 3
4 add n m = n, if m == 0 en add n m = suc (add n pm), if m == suc pm. Opgave Definieer zelf vermenigvuldiging en uitgaande van optelling. Doe hetzelfde met machtsverheffen. Opgave Definieer de functie pred, die de voorganger van een getal geeft. Definieer hierbij de voorganger van 0 als 0. Gebruik deze definitie om aftrekken (sub) te definiëren. Probeer ook een rechtstreekse definitie van sub te geven. Opgave Definieer de faculteit functie gebruikmakend van bovenstaande definitie van getallen. We zien dat het formalisme krachtig genoeg is om natuurlijke getallen en de operaties daarop te definiëren. In het voorafgaande hebben we de functionele programmeertaal Amanda gebruikt. Programma s in Amanda kunnen op een recht-toe-recht-aan manier naar dit formalisme geconverteerd worden. We hebben al gezien hoe we natuurlijke getallen representeren. We kijken nu naar de definitie van lijsten. In Amanda heeft een lijst de vorm: [] of (x:xs). We definiëren nu voor [] de functie Nil en voor (x:xs) de functie Cons. Nil = \f g -> f Cons x xs = \f g -> g x xs We kunnen nu b.v de functie length als volgt definieren: length xs = xs zero (\x xs -> suc (length xs)) Andere data typen kunnen op analoge wijze geconverteerd worden. Opgave Geef zelf een implementatie van binaire bomen en de functie depth. Opgave Bedenk een representatie voor True, False en de if constructie. Amanda beschikt over een aantal syntactische constructies zoals lijstcomprehensies en pattern matching. Ook deze constructies zijn om te werken naar constructies binnen het minimale formalisme. Turing Machines en het minimale formalisme We hebben al gezien dat het eenvoudig is om een Turing machine in Amanda (en daarom ook in het minimale formalisme) te implementeren. Het omgekeerde is veel lastiger. Het minimale formalisme is weliswaar eenvoudig maar lastig m.b.v een Turing machine uit te drukken omdat we in feite de herschrijfregel (links door rechts vervangen) moeten uitdrukken. Omdat de herschrijfregels willekeurig kunnen zijn is dit lastig. We zullen daarom een programma niet rechtstreeks op een Turing machine afbeelden, maar via een tussenstap. De tussenstap is een vertaling van een programma naar een equivalent programma waarin maar 3 verschillende functies in voorkomen. We geven eerst de definities van deze 3 functies. I x = x K x y = x S f g x = f x (g x) I is de identiteitsfunctie, K gooit zijn tweede argument weg en S past zijn eerste argument toe op het derde argument en op de toepassing van het tweede op het derde argument. Het blijkt nu dat we iedere functie kunnen om schrijven in termen van I, K en S. We beginnen met een aantal voorbeelden. De truc is dat we de rechterkant van de functie f x1.. xn = rechts-expr net zolang herschrijven tot dat deze van de vorm SKI-expr x1.. xn is, waarbij SKI-expr een uitdrukking is die alleen maar S,K, I en andere functie namen bevat en geen 4
5 variabelen meer. Bij het omschrijven werken we een voor een de variabelen weg te beginnen bij de laatste. h x y = y => I y => K I x y f x y z = x (y z) => S (K x) y z => S (K S) K x y z t x y z = y z (x z) => S y x z => S S (K x) y z => S (K (S S)) K x y z Er geldt dus: h = K I f = S (K S) K t = S (K (S S)) K Als een functie nog andere functies bevat kunnen deze op het eind vervangen worden door hun SKI representaties. Hoewel het omzetten van een functie naar het SKI formaat ingewikkeld lijkt is het algoritme wat deze omzetting uitvoert vrij kort. Een Turing machine die SKI expressie kan evalueren We schetsen nu een Turing machine die SKI expressies kan evalueren. We gebruiken een Turing machine met 6 tapes. Tape 0 bevat de invoer en uiteindelijk het eindresultaat. Er zijn 3 tapes (Arg0, Arg1 en Arg2) die de argumenten van een expressie bevatten (maximaal 3 voor een S expressie). Tape 4 is de to do expressie stack. Hierop kunnen meerdere expressies gescheiden door een separator geplaatst worden. De expressies op deze tape staan in de volgorde waarin ze geëvalueerd moeten worden. Tape 5 is de huidige expressie stack. Deze bevat de expressie die op dit moment geëvalueerd wordt. Het algoritme start met het kopiëren van de input naar de to do stack. Op de oorspronkelijke invoertape wordt het markeringssymbool # gezet. Op deze plaats moet straks het resultaat neergezet worden. 1. Het algoritme begint met een check of er nog iets op de to do tape staat. Zo nee, dan is het resultaat dat wat op de invoer tape staat. Staat er wel wat op de to do stack dan wordt de eerste expressie naar tape 5 gekopieerd. We gaan nu verder met wat op tape 5 staat. 2. Als dit begint met een I dan checken we eerst of er wat na de I staat. Als dit zo is dan kan I verwijderd worden waarna het algoritme opnieuw begint met de rest van de invoer (I is immers de identiteitsfunctie). Als er na de I niets meer staat dan is het resultaat I en wordt teruggeschreven naar de positie van de eerste # op de invoer tape. 3. Als deze begint met een K dan checken we eerst hoeveel argumenten er na de K op de invoer staan. Dit is een kwestie van tellen hoeveel geneste haakjes expressies er op de invoer na de K staan. a. Als dit er twee of meer zijn dan moeten de K en het tweede argument verwijderd worden. Waarna het algoritme opnieuw begint op de plaats waar K stond in de invoerstring. b. Als er 0 argumenten zijn de is het resultaat K en zijn we klaar. c. Als er 1 argument is dan moet de K blijven staan en herhalen we het algoritme voor het ene argument. 4. Als de expressie met een S begint dan checken we eerst het aantal argumenten na de S. a. Als dit er 3 of meer zijn dan kopiëren we de eerste 3 argumenten naar resp Arg0, Arg1 en Arg2, waarbij we ze samen met de S verwijderen van de invoer. Daarna kopiëren we de string Arg0 Arg2 (Arg1 Arg2) terug naar de positie waar S stond en herhalen het algoritme vanaf de positie waar S stond. b. Als er 0 argumenten zijn dan is het resultaat S. c. Als er 1 argument is Opmerking Als we ons echter beperken tot een vast programma dan is het wel mogelijk een Turing machine te maken die het programma kan uitvoeren zonder de tussenstap via SKI expressies te maken. Je hoeft 5
6 dan immers maar een vast aantal functies te kunnen executeren (net zoals voor de SKI machine). De constructie gaat op vergelijkbare wijze. 6
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 informatieCollege Notatie, Recursie, Lijsten
College 2016-2017 2. Notatie, Recursie, Lijsten Doaitse Swierstra (Jeroen Bransen) Utrecht University September 13, 2016 Functieapplicatie functieapplicatie associeert naar links: als x in f x y moet kiezen
Nadere informatie1 Inleiding in Functioneel Programmeren
1 Inleiding in Functioneel Programmeren door Elroy Jumpertz 1.1 Inleiding Aangezien Informatica een populaire minor is voor wiskundestudenten, leek het mij nuttig om een stukje te schrijven over een onderwerp
Nadere informatieVorig 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 informatieInleiding Programmeren 2
Inleiding Programmeren 2 Gertjan van Noord November 26, 2018 Stof week 3 nogmaals Zelle hoofdstuk 8 en recursie Brookshear hoofdstuk 5: Algoritmes Datastructuren: tuples Een geheel andere manier om te
Nadere informatieElfde 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 informatieAls een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.
HOOFDSTUK 3 3.1 Stapsgewijs programmeren In de vorige hoofdstukken zijn programmeertalen beschreven die imperatief zijn. is het stapsgewijs in code omschrijven wat een programma moet doen, net als een
Nadere informatieGaap, ja, nog een keer. In één variabele hebben we deze formule nu al een paar keer gezien:
Van de opgaven met een letter en dus zonder nummer staat het antwoord achterin. De vragen met een nummer behoren tot het huiswerk. Spieken achterin helpt je niets in het beter snappen... 1 Stelling van
Nadere informatieHOOFDSTUK 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 informatieWat is FP? The Haskell School of Expression. Functies. Types 1+1=2. Iedere expressie (en waarde) heeft een type.
Wat is FP? The Haskell School of Expression Functioneel Programmeren Een andere manier om tegen programmeren aan te kijken Gebaseerd op het uitrekenen van expressies 1+1=2 Eenvoudig maar krachtig (modulair,
Nadere informatieWe 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 informatieVariabelen en statements in ActionScript
Ontwikkelen van Apps voor ios en Android Variabelen en statements in ActionScript 6.1 Inleiding Als we het in de informatica over variabelen hebben, bedoelen we een stukje in het geheugen van de computer
Nadere informatieGetallensystemen, 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 informatie1.3 Rekenen met pijlen
14 Getallen 1.3 Rekenen met pijlen 1.3.1 Het optellen van pijlen Jeweetnuwatdegetallenlijnisendat0nochpositiefnochnegatiefis. Wezullen nu een soort rekenen met pijlen gaan invoeren. We spreken af dat bij
Nadere informatie8.1 Herleiden [1] Herleiden bij vermenigvuldigen: -5 3a 6b 8c = -720abc 1) Vermenigvuldigen cijfers (let op teken) 2) Letters op alfabetische volgorde
8.1 Herleiden [1] Herleiden bij vermenigvuldigen: -5 3a 6b 8c = -720abc 1) Vermenigvuldigen cijfers (let op teken) 2) Letters op alfabetische volgorde Optellen: 5a + 3b + 2a + 6b = 7a + 9b 1) Alleen gelijksoortige
Nadere informatiePracticum Programmeerprincipes
REEKS 3 Practicum Programmeerprincipes 2009-2010 fvdbergh@vub.ac.be WERKEN MET FUNCTIES IN PICO Functies, controlestructuren, recursie, iteratie, blokstructuren en functionele parameters in Pico. Het woordenboek
Nadere informatie3 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 informatie10 Meer over functies
10 Meer over functies In hoofdstuk 5 hebben we functies uitgebreid bestudeerd. In dit hoofdstuk bekijken we drie andere aspecten van functies: recursieve functies dat wil zeggen, functies die zichzelf
Nadere informatieNu een leuk stukje wiskunde ter vermaak (hoop ik dan maar). Optellen van oneindig veel getallen
Nu een leuk stukje wiskunde ter vermaak (hoop ik dan maar). Optellen van oneindig veel getallen Ter inleiding: tellen Turven, maar: onhandig bij grote aantallen. Romeinse cijfers: speciale symbolen voor
Nadere informatieV.2 Limieten van functies
V.2 Limieten van functies Beschouw een deelverzameling D R, een functie f: D R en zij c R. We willen het gedrag van f in de buurt van c bestuderen. De functiewaarde in c is daarvoor niet belangrijk, de
Nadere informatieInleiding Programmeren 2
Inleiding Programmeren 2 Gertjan van Noord November 28, 2016 Stof week 3 nogmaals Zelle hoofdstuk 8 en recursie Brookshear hoofdstuk 5: Algoritmes Datastructuren: tuples Een geheel andere manier om te
Nadere informatieModelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 13 november 2015 Expressies Functies Ingebouwde functies Variabelenbereik Inleveropgave 1 Terugblik Programma is een lijst van opdrachten Terugblik Programma is
Nadere informatieConstanten. Variabelen. Expressies. Variabelen. Constanten. Voorbeeld : varid.py. een symbolische naam voor een object.
een symbolische naam voor een object. Variabelen Constanten Variabelen Expressies naam : geeft de plaats in het geheugen aan waarde : de inhoud van het object identifier : een rij van letters en/of cijfers
Nadere informatie8.1 Herleiden [1] Herleiden bij vermenigvuldigen: -5 3a 6b 8c = -720abc 1) Vermenigvuldigen cijfers (let op teken) 2) Letters op alfabetische volgorde
8.1 Herleiden [1] Herleiden bij vermenigvuldigen: -5 3a 6b 8c = -720abc 1) Vermenigvuldigen cijfers (let op teken) 2) Letters op alfabetische volgorde Optellen: 5a + 3b + 2a + 6b = 7a + 9b 1) Alleen gelijksoortige
Nadere informatieRecursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40
Recursion Introductie 37 Leerkern 37 5.1 Foundations of recursion 37 5.2 Recursive analysis 37 5.3 Applications of recursion 38 Terugkoppeling 40 Uitwerking van de opgaven 40 Hoofdstuk 5 Recursion I N
Nadere informatieOntwerp van Algoritmen: opgaven weken 3 en 4
0 Ontwerp van Algoritmen: opgaven weken 3 en 4 Voor alle volgende opgaven over programmaatjes geldt de spelregel: formuleer altijd eerst alle bewijsverplichtingen. selectie 45. (tail distribution)(prima
Nadere informatieAlgoritmen abstract bezien
Algoritmen abstract bezien Jaap van Oosten Department Wiskunde, Universiteit Utrecht Gastcollege bij Programmeren in de Wiskunde, 6 april 2017 Een algoritme is een rekenvoorschrift dat op elk moment van
Nadere informatiePracticumopgave 3: SAT-solver
Practicumopgave 3: SAT-solver Modelleren en Programmeren 2015/2016 Deadline: donderdag 7 januari 2016, 23:59 Introductie In het vak Inleiding Logica is onder andere de propositielogica behandeld. Veel
Nadere informatieUitleg 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 informatieAanvulling bij de cursus Calculus 1. Complexe getallen
Aanvulling bij de cursus Calculus 1 Complexe getallen A.C.M. Ran In dit dictaat worden complexe getallen behandeld. Ook in het Calculusboek van Adams kun je iets over complexe getallen lezen, namelijk
Nadere informatie1. Vectoren in R n. y-as
1. Vectoren in R n Vectoren en hun meetkundige voorstelling. Een vector in R n is een rijtje (a 1, a 2,..., a n ) van reële getallen. De getallen a i heten de coördinaten van de vector. In het speciale
Nadere informatieProgrammeren in Java les 3
4 september 2015 Deze les korte herhaling vorige week loops methodes Variabelen Soorten variabelen in Java: integer: een geheel getal, bijv. 1,2,3,4 float: een gebroken getal, bijv. 3.1415 double: een
Nadere informatieextra oefening algoritmiek - antwoorden
extra oefening algoritmiek - antwoorden opgave "Formule 1" Maak een programma dat de gebruiker drie getal A, B en C in laat voeren. De gebruiker zorgt ervoor dat er positieve gehele getallen worden ingevoerd.
Nadere informatieFaculteit Elektrotechniek - Capaciteitsgroep ICS Tentamen Schakeltechniek. Vakcodes 5A010/5A050, 19 januari 2004, 9:00u-12:00u
Faculteit Elektrotechniek - Capaciteitsgroep ICS Tentamen Schakeltechniek Vakcodes 5A010/5A050, 19 januari 2004, 9:00u-12:00u achternaam : voorletters : identiteitsnummer : opleiding : Tijdens dit tentamen
Nadere informatieTalen & 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 informatieLogisch en Functioneel Programmeren voor Wiskunde D
Logisch en Functioneel Programmeren voor Wiskunde D Wouter Swierstra Doaitse Swierstra Jurriën Stutterheim Technical Report UU-CS-2011-033 Sept 2011 Department of Information and Computing Sciences Utrecht
Nadere informatieIII.2 De ordening op R en ongelijkheden
III.2 De ordening op R en ongelijkheden In de vorige paragraaf hebben we axioma s gegeven voor de optelling en vermenigvuldiging in R, maar om R vast te leggen moeten we ook ongelijkheden in R beschouwen.
Nadere informatieMachten, exponenten en logaritmen
Machten, eponenten en logaritmen Machten, eponenten en logaritmen Macht, eponent en grondtal Eponenten en logaritmen hebben alles met machtsverheffen te maken. Een macht als 4 is niets anders dan de herhaalde
Nadere informatieUitgebreide 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 informatieVerzamelingen, Lijsten, Functioneel Programmeren
Verzamelingen, Lijsten, Functioneel Programmeren Jan van Eijck jve@cwi.nl Stage Ignatiuscollege, 17 mei 2010 Samenvatting In deze lezing gaan we in op de overeenkomsten en verschillen tussen verzamelingen
Nadere informatieParadox 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 informatieTENTAMEN 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 informatieZoemzinnen. Algemene info. Functies met een variabel aantal argumenten
Zoemzinnen Functies met een variabel aantal argumenten Bij het definiëren van een functie leg je in principe vast hoeveel argumenten er aan de functie moeten doorgegeven worden. Dit aantal correspondeert
Nadere informatie2. Optellen en aftrekken van gelijknamige breuken
1. Wat is een breuk? Een breuk Een breuk is een verhoudingsgetal. Een breuk geeft aan hoe groot een deel is van een geheel. Stel een taart is verdeeld in stukken. Je neemt 2 stukken van de taart. Je hebt
Nadere informatieOnafhankelijke 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 informatieAutomaten. 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 informatieBijzondere getallen. Oneindig (als getal) TomVerhoeff. Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica
Bijzondere getallen Oneindig (als getal) TomVerhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica T.Verhoeff@TUE.NL http://www.win.tue.nl/~wstomv/ Oneindig ... Oneindig 2 Top tien
Nadere informatieOEFENINGEN PYTHON REEKS 1
Vraag 1: Expressies & Types OEFENINGEN PYTHON REEKS 1 Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3), zijn er float s die behoren
Nadere informatieIntroductie tot de cursus
Inhoud introductietalen en ontleders Introductie tot de cursus 1 Plaats en functie van de cursus 7 2 Inhoud van de cursus 7 2.1 Voorkennis 7 2.2 Leerdoelen 8 2.3 Opbouw van de cursus 8 3 Leermiddelen en
Nadere informatieSemantiek (2IT40) Bas Luttik. HG 7.14 tel.: Hoorcollege 8 (7 juni 2007)
Bas Luttik s.p.luttik@tue.nl http://www.win.tue.nl/~luttik HG 7.14 tel.: 040 247 5152 Hoorcollege 8 (7 juni 2007) Functionele talen Idee: een programma definieert reeks (wiskundige) functies. Programma
Nadere informatieVakgroep CW KAHO Sint-Lieven
Vakgroep CW KAHO Sint-Lieven Objecten Programmeren voor de Sport: Een inleiding tot JAVA objecten Wetenschapsweek 20 November 2012 Tony Wauters en Tim Vermeulen tony.wauters@kahosl.be en tim.vermeulen@kahosl.be
Nadere informatieCombinatorische Algoritmen: Binary Decision Diagrams, Deel III
Combinatorische Algoritmen: Binary Decision Diagrams, Deel III Sjoerd van Egmond LIACS, Leiden University, The Netherlands svegmond@liacs.nl 2 juni 2010 Samenvatting Deze notitie beschrijft een nederlandse
Nadere informatieCollege Introductie
College 2016-2017 Introductie Doaitse Swierstra (Jeroen Bransen) Utrecht University September 13, 2016 Waarom is FP anders? in plaats van opdrachten die na elkaar moeten worden uitgevoerd, definiëren we
Nadere informatieHOE TEKEN IK EEN OMGEVINGSMODEL
HOE TEKEN IK EEN OMGEVINGSMODEL MATTIAS DE WAEL 1. Inleiding Om de allereenvoudigste Scheme expressies te begrijpen volstaat het substitutiemodel. Het substitutiemodel verondersteld het bestaan van een
Nadere informatiePraktisch bestaan er enkele eenvoudige methoden om een decimaal getal om te zetten naar een binair getal. We bespreken hier de twee technieken.
Talstelsels 1 Algemeenheden Digitale systemen werken met nullen en enen omdat dit elektronisch gemakkelijke te verwezenlijken is. De transistor kent enkel twee toestanden (geleiden of sperren) Hierdoor
Nadere informatieHaskell: programmeren in een luie, puur functionele taal
Haskell: programmeren in een luie, puur functionele taal Jan van Eijck jve@cwi.nl 5 Talen Symposium, 12 juli 2010 Samenvatting In deze mini-cursus laten we zien hoe je met eindige en oneindige lijsten
Nadere informatieStelling. 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 informatieHet 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 informatierecursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie
Hoofdstuk 5 Recursion I N T R O D U C T I E Veel methoden die we op een datastructuur aan kunnen roepen, zullen op een recursieve wijze geïmplementeerd worden. Recursie is een techniek waarbij een vraagstuk
Nadere informatieopgaven 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 informatieHelden van de wiskunde: L.E.J. Brouwer Brouwers visie vanuit een logica-informatica perspectief
Helden van de wiskunde: L.E.J. Brouwer Brouwers visie vanuit een logica-informatica perspectief Herman Geuvers Radboud Universiteit Nijmegen Technische Universiteit Eindhoven 1 Helden van de wiskunde:
Nadere informatie[8] De ene 1 is de andere niet
[8] De ene 1 is de andere niet Volg mee via 08_Types.py In de volgende leerfiche gaan we rekenen met Python. Dat kan je in een programma doen, maar dat kan je ook gewoon vanuit het Shell-venster doen.
Nadere informatieVerzamelingen, Lijsten, Functioneel Programmeren
Verzamelingen, Lijsten, Functioneel Programmeren Jan van Eijck jve@cwi.nl Stage Ignatiuscollege, 20 mei 2008 Samenvatting In deze lezing gaan we in op de overeenkomsten en verschillen tussen verzamelingen
Nadere informatieequationeel programmeren 2015 01 05 college 1
equationeel programmeren 2015 01 05 college 1 schema praktische zaken opmerkingen vooraf lambda termen materiaal schema praktische zaken opmerkingen vooraf lambda termen materiaal wie hoorcolleges: Femke
Nadere informatieDivide & Conquer: Verdeel en Heers vervolg. Algoritmiek
Divide & Conquer: Verdeel en Heers vervolg Algoritmiek Algoritmische technieken Vorige keer: Divide and conquer techniek Aantal toepassingen van de techniek Analyse met Master theorem en substitutie Vandaag:
Nadere informatieHoofdstuk 1. Inleiding. Lichamen
Hoofdstuk 1 Lichamen Inleiding In Lineaire Algebra 1 en 2 heb je al kennis gemaakt met de twee belangrijkste begrippen uit de lineaire algebra: vectorruimte en lineaire afbeelding. In dit hoofdstuk gaan
Nadere informatieVerzamelingen, Lijsten, Functioneel Programmeren
Verzamelingen, Lijsten, Functioneel Programmeren Jan van Eijck jve@cwi.nl Lezing 4e Gymnasium, 19 november 2015 Samenvatting In deze lezing gaan we in op de overeenkomsten en verschillen tussen verzamelingen
Nadere informatieBijzondere 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 informatierh276a 0 We breiden nu bovenstaand programmafragment uit door assignments toe te voegen aan een nieuwe variabele m, aldus:
rh276a 0 Een paar praktische stellinkjes 0 Standaardeindiging stelling (standaardeindiging 0) : Het volgende programmafragment eindigt, heeft als repetitie-invariant 0 n n N en als variante functie N n
Nadere informatieVerzamelingen 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 informatieEen eenvoudig algoritme om permutaties te genereren
Een eenvoudig algoritme om permutaties te genereren Daniel von Asmuth Inleiding Er zijn in de vakliteratuur verschillende manieren beschreven om alle permutaties van een verzameling te generen. De methoden
Nadere informatieZo gaat jouw kunstwerk er straks uitzien. Of misschien wel heel anders.
Spirograaf in Python Een kunstwerk maken Met programmeren kun je alles maken! Ook een kunstwerk! In deze les maken we zelf een kunstwerk met Python. Hiervoor zal je werken met herhalingen en variabelen.
Nadere informatieHoofdstuk 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 informatieTentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI
Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI Vrijdag 22 januari 2010 Toelichting Dit is een open boek tentamen. Communicatie en het gebruik van hulpmiddelen zijn niet toegestaan.
Nadere informatieFundamenten 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 informatieDefinitie 1.1. Een partitie van een natuurlijk getal n is een niet stijgende rij positieve natuurlijke getallen met som n
Hoofdstuk 1 Inleidende begrippen 1.1 Definities Definitie 1.1. Een partitie van een natuurlijk getal n is een niet stijgende rij positieve natuurlijke getallen met som n Voor het tellen van het aantal
Nadere informatieMin maal min is plus
Min maal min is plus Als ik een verontruste wiskundeleraar moet geloven, is de rekenregel voor het product van twee negatieve getallen nog steeds een probleem. Hessel Pot schreef me: waarom willen we dat
Nadere informatieUitwerking 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 informatieUitwerking Puzzel 93-1, Doelloos
Uitwerking Puzzel 93-1, Doelloos Wobien Doyer Lieke de Rooij Volgens de titel is deze puzzel zonder doel, dus zonder bekende toepassing. Het doel is echter nul en dat is zeker in de wiskunde niet niks.
Nadere informatieTentamen Discrete Wiskunde 1 10 april 2012, 14:00 17:00 uur
Tentamen Discrete Wiskunde 0 april 0, :00 7:00 uur Schrijf je naam op ieder blad dat je inlevert. Onderbouw je antwoorden, met een goede argumentatie zijn ook punten te verdienen. Veel succes! Opgave.
Nadere informatieTer Leering ende Vermaeck
Ter Leering ende Vermaeck 15 december 2011 1 Caleidoscoop 1. Geef een relatie op Z die niet reflexief of symmetrisch is, maar wel transitief. 2. Geef een relatie op Z die niet symmetrisch is, maar wel
Nadere informatieTENTAMEN WISKUNDIGE BEELDVERWERKINGSTECHNIEKEN
TENTAMEN WISKUNDIGE BEELDVERWERKINGSTECHNIEKEN Vakcode: 8D. Datum: Donderdag 8 juli 4. Tijd: 14. 17. uur. Plaats: MA 1.44/1.46 Lees dit vóórdat je begint! Maak iedere opgave op een apart vel. Schrijf je
Nadere informatieTermherschrijven. Jan van Eijck CWI. jve@cwi.nl. Achtergrondcollege Software Evolution, 22 september 2005
Termherschrijven Jan van Eijck CWI jve@cwi.nl Achtergrondcollege Software Evolution, 22 september 2005 Samenvatting Wat zijn termen? Samenvatting Samenvatting Wat zijn termen? Wat zijn regels voor vereenvoudigen
Nadere informatieGö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 informatieProgrammeermethoden NA. Week 5: Functies (vervolg)
Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Functies Vorige week bekeken we functies: def
Nadere informatieEen topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:
Java Les 2 Theorie Beslissingen Algemeen Net als in het dagelijks leven worden in software programma s beslissingen genomen, naast het toekennen van waarden aan variabelen zijn beslissingen één van de
Nadere informatieVierde college complexiteit. 26 februari Beslissingsbomen en selectie Toernooimethode Adversary argument
Complexiteit 2019/04 College 4 Vierde college complexiteit 26 februari 2019 Beslissingsbomen en selectie Toernooimethode Adversary argument 1 Complexiteit 2019/04 Zoeken: samengevat Ongeordend lineair
Nadere informatieNetwerkstroming. Algoritmiek
Netwerkstroming Vandaag Netwerkstroming: definitie en toepassing Het rest-netwerk Verbeterende paden Ford-Fulkerson algoritme Minimum Snede Maximum Stroming Stelling Variant: Edmonds-Karp Toepassing: koppelingen
Nadere informatieJava Les 3 Theorie Herhaal structuren
Java Les 3 Theorie Herhaal structuren Algemeen Een herhaal structuur een is programmeertechniek waarbij bepaalde Java instructies worden herhaald net zo lang tot een bepaalde voorwaarde is bereikt. Een
Nadere informatieII.3 Equivalentierelaties en quotiënten
II.3 Equivalentierelaties en quotiënten Een belangrijk begrip in de wiskunde is het begrip relatie. Een relatie op een verzameling is een verband tussen twee elementen uit die verzameling waarbij de volgorde
Nadere informatieVolledige 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 informatieIN2505 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 informatieEXCEL BASIS 2013
EXCEL BASIS 2013 WWW.I-LEARNING.BE - 4 FORMULE-INVOER ALS EXCEL EEN BEREKENING MOET DOEN, MOET JE EEN FORMULE OF EEN FUNCTIE INVOEREN 4.1 OPERATOREN + om op te tellen - om af te trekken / om te delen *
Nadere informatieRSA. F.A. Grootjen. 8 maart 2002
RSA F.A. Grootjen 8 maart 2002 1 Delers Eerst wat terminologie over gehele getallen. We zeggen a deelt b (of a is een deler van b) als b = qa voor een of ander geheel getal q. In plaats van a deelt b schrijven
Nadere informatieLogische Complexiteit
Logische Complexiteit Universele Turing machines College 12 Donderdag 18 Maart 1 / 11 Hoog-niveau beschrijvingen en coderen Vanaf nu: hoog-niveau beschrijvingen van TM s. Daarbij worden objecten die geen
Nadere informatieBreuken met letters WISNET-HBO. update juli 2013
Breuken met letters WISNET-HBO update juli 2013 De bedoeling van deze les is het repeteren met pen en papier van het werken met breuken. Steeds wordt bij gebruik van letters verondersteld dat de noemers
Nadere informatieModelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 11 december 2015 Ingebouwde datastructuren Meer boomstructuren Access specifiers Gebruikersinvoer Codestijl Packages SAT-solver Ingebouwde datastructuren Ingebouwde
Nadere informatiePYTHON REEKS 1: BASICS. Mathias Polfliet
PYTHON REEKS 1: BASICS Mathias Polfliet mpolflie@etrovub.be EENVOUDIGE REKENMACHINE 2 soorten getallen Getallen Z -> integers (gehele getallen) Getallen R -> floating points (reële getallen) Door beperkte
Nadere informatieBouwstenen voor PSE. Datatypes en Datastructuren
Bouwstenen voor PSE Datatypes en Datastructuren Definitie Datatype Klasse van dataobjecten tesamen met operaties om ze te construeren, te manipuleren en te verwijderen. Een datatype omvat een specificatie
Nadere informatieOneindig in Wiskunde & Informatica. Lezing in de reeks Oneindig 3 oktober 2007 / Studium Generale TU Delft. Tom Verhoeff
Oneindig in Wiskunde & Informatica Lezing in de reeks Oneindig 3 oktober 2007 / Studium Generale TU Delft Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde & Informatica http://www.win.tue.nl/~wstomv/
Nadere informatie