Opgaven Binair Zoeken en Invarianten Datastructuren, 28 april 2017, Werkgroep.

Maat: px
Weergave met pagina beginnen:

Download "Opgaven Binair Zoeken en Invarianten Datastructuren, 28 april 2017, Werkgroep."

Transcriptie

1 Opgaven Binair Zoeken en Invarianten Datastructuren, 28 april 2017, Werkgroep. Gebruik deze opgaven, naast die uit het boek, om de stof te oefenen op het werkcollege. Cijfer: Op een toets krijg je meestal zes tot acht opgaven. 1. Verwijder uit ongesorteerd array: Uit een ongesorteerde array A met n elementen wil je het element A[i] verwijderen. Hoe kun je dit zo snel mogelijk doen? (Hint: het kan in constante tijd.) Oplossing: Omdat de volgorde van de elementen mag veranderen, kun je A[i] overschrijven met het laatste element, en die positie wissen: A[i]=A[--n]; A[n]=0;. Dit werkt ook als i de laatste (gebruikte) positie was. Beoordeling/Toelichting: Je kunt alle elementen na i verschuiven, maar dan gebruik je lineaire tijd. 2. Binair Zoeken: Midpoint: Bert en Ernie praten over Binair Zoeken, met name de vraag of het nodig is om voor het te bekijken element m, exact midden tussen i en j te gaan zitten. Bert zegt dat het algoritme ook werkt als je een andere m tussen i en j kiest. Ernie vindt dat je altijd de codevoorbeelden van Gerard zo exact mogelijk moet overnemen (want daar heeft hij goede ervaringen mee). Kun je de theorie van Invariant en Variant gebruiken om Bert en Ernie verder te helpen? Oplossing: Volgens de theorie van de Invariant mag ik de Body van de loop best veranderen, als de nieuwe body maar de invaiant respecteert. Ook met een andere keuze van m (alleen zinvol in het bereik [i..j]) wordt de invariant gerespecteerd, en het veranderde programma is dus nog steeds partieel correct. Of het ook termineert, en hoe snel het is, ligt subtieler. Als m gekozen wordt strikt tussen i en j, zijn zowel m i als j m strikt kleiner dan j i, zodat afname van de Variant j i zeker is. Wanneer de range te groot wordt gekozen en ook de keuze m = i of m = j mogelijk is, kan de Variant blijven steken, oneindige lus! Voor zowel correctheid als terminatie blijkt de midpoint-formule dus vrij onbelangrijk! Het mooie van de keuze van de formule m = (i+j)/2 is, dat als j i 2 t, dan is zowel m i 2 t 1 als j m 2 t 1. Daardoor zorgt de halveringsformule voor een gegarandeerd logaritmische tijd. Maar andere keuzes kunnen ook snel zijn, zoek bv. maar eens Interpolation Search op Wikipedia. Beoordeling/Toelichting: R = Een Random keuze is niet hetzelfde als het invullen van willekeurig welke formule.

2 3. Midpoint: Bij Binair Zoeken kun je het Midpoint m kiezen als m = (i+j)/2. (a) Kan het ook met m = Math.Floor((i+j)/2) en wat is het voordeel of nadeel hiervan? (b) Kan het ook met m = i+1 en wat is het voordeel of nadeel hiervan? (c) Kan het ook met m = i + (j-i)/2 en wat is het voordeel of nadeel hiervan? (d) Kan het ook met m = (i+j)>>1 en wat is het voordeel of nadeel hiervan? Oplossing: (a) De Math.Floor verzorgt een geheeltallige afronding naar beneden maar de normale integer deling in Java of C# doet dat ook al. De extra toevoeging is dus volkomen overbodig. (b) De berekende waarde van m ligt strikt tussen i en j (het wordt namelijk alleen uitgerekend als j > i + 1). Dat is alles wat nodig is voor het invarianten-bewijs van deze zoekmethode, en daarmee levert het een correcte zoekmethode op. Probleem ervan is natuurlijk dat de Variant j i erg langzaam daalt wanneer het i is die door m wordt vervangen. Je zoekt in feite lineair door de array. Het kost dan ook lineaire tijd, O(n), om in n getallen te zoeken. (c) De uitkomst van deze formule is gelijk aan de korte formule (in alle gevallen van even/oneven i, j of verschil). De simpele formule berekent i + j, wat overflow kan geven als i en j dicht bij de maximale waarde van een int liggen. Ik denk niet dat veel studenten dit probleem in 2016 al hebben meegemaakt, want het treedt pas op bij arrays van 1G lang of meer, maar in 2017 zou het kunnen. (d) Een shift naar rechts is hetzelfde als een deling door 2 op de meeste computers/platforms. Of dat ook echt altijd zo gegarandeerd is weet ik niet. Soms beeldt je compiler een deling door 2 af op een rightshift. Beoordeling/Toelichting: 4. Sommatie: Je kunt n getallen in A zo optellen: s=0; i=0; while(i<n) { s += A[i]; i += 1; }; return s; Geef invariant en variant van deze lus. Oplossing: Invariant: s is de som van de eerste i getallen, s = i 1 k=0 A[k]. Variant: n i wordt in elke slag van de lus kleiner. Beoordeling/Toelichting: Je kunt je code ook beginnen met s=a[0]; i=1; met dezelfde Variant en Invariant. Maar dan moet je het geval n = 0 als uitzondering behandelen.

3 5. Kriebels op de Krim: In Simferopol is een straat met n huizen (aan één kant, 0 t/m n 1) waar op nr 0 een Rus woont en op nr n 1 een Oekraiener; ertussenin kunnen allerlei nationaliteiten wonen. Vind na het vragen van hoogstens lg n nationaliteiten twee buren (personen met opeenvolgende huisnummers) van verschillende nationaliteit. Geef een variant en invariant van je algoritme. Oplossing: Dat er Alien Neighbors zijn in een deel i..j van de straat volgt uit land(i) land(j). Dit is gegeven voor (i, j) = (0, n 1) en geeft direct het antwoord als j = i + 1. Je kunt dus dit algoritme maken met invariant land(i) land(j): i = 0; j= n-1 { m = (i+j)/2 if (land(m)!= land(i)) j=m else i=m } return i Het verschil j i halveert per stap, dit is je variant, dit doe je dus hoogstens lg(n 1) keer voordat het verschil 1 is. Per ronde vraag je maar 1 nationaliteit op, nl. land(m) omdat je land(i) al weet. Beoordeling/Toelichting: Max 3pt. Voor een goed geformuleerde invariant en variant 1pt; voor een kort en goed algoritme 1pt en als dit ook aansluit bij inv/var nog een punt. E = Een early Stopping variant (die steeds kijkt of m en m + 1 verschillen van nationaliteit en eventueel vanuit de loop direct termineert) kan, maar is meestal niet zinvol. Het geëiste aantal bekeken nationaliteiten wordt niet gehaald (zie T). L = Je zoekt Lineair, dus WorstCase Θ(n) personen bekijken. Max 1/2 pt voor het algoritme. M = Midpoint m = i + (j-i)/2 is nodeloos ingewikkeld; geen aftrek. G = Werkt alleen als iedereen van de Genoemde nationaliteiten is, min 1/2. T = Je vraagt Twee nationaliteiten per ronde, dus ongeveer 2 lg n, dit kost 1/2 punt. 6. Machtsverheffen: Om, gegeven x en (int) a, de waarde M = x a te berekenen gebruiken we een variabele R en de invariant inv: M = R x a. (a) Geef een bijpassende initialisatie en een loop-conditie die na afloop de conclusie M = R rechtvaardigt. (Je code kan de variabelen R, x en a wijzigen, maar de gewenste uitkomst M is onbekend en ligt al vantevoren vast.) (b) Geef een Body die inv respecteert en een variant reduceert. Het kan in lg a slagen! Oplossing: (a) Het algoritme wijzigt alleen R, x en a, de contante M blijft ongewijzigd (en is de gewenste uitvoerwaarde). Je introduceert inv met de toekenning R = 1 en de conclusie volgt als a == 0 dus de conditie is (a>0). (b) Kies als variant: a. Doel van de body is dan a te verlagen onder behoud van inv. De code { a--; R *= x; } kan altijd maar verlaagt a met maar 1. Als a even is gebruik je { a /= 2; x *= x; }. Doe in de body in ieder geval een keer het tweede. Dan halveert a iedere ronde en weet je zeker dat je een logaritmische tijd haalt. Beoordeling/Toelichting: Te halen 3pt, 1 voor (a) en 2 voor (b)

4 7. Invariant: Pizza: Een berg van k pizza s van omvang p 0 t/m p k 1 wordt verdeeld onder n programmeurs. Elk krijgt (i) een stuk uit één pizza (ii) van integer grootte, (iii) ieders stuk is even groot en (iv) ze hebben honger dus ze willen zo veel mogelijk eten. Voorbeeld: Als n = 3 en er zijn twee pizzas van omvang 7 en 9, is de uitkomst 4. Uit de eerste pizza kan 1 stuk van 4 en uit de 2e kunnen twee stukken van 4, maar als je stukken van 5 wilt snijden kan er uit beide pizza s maar 1. Geef een algoritme dat de maximaal mogelijke portie-omvang berekent met binair zoeken. Geef een variant en invariant van je algoritme. Is de rekentijd polynomiaal? Oplossing: Geef mog(i) de betekenis: omvang i is mogelijk. Je zoekt een i met mog(i) mog(i + 1). In ieder geval is 0 mogelijk en de maximale pizza plus 1 niet. Of m mogelijk is kun je testen door op te tellen hoeveel stukken je van grootte m kunt snijden uit alle pizza s. Je kunt dus dit algoritme maken met invariant mog(i) mog(j): i = 0; j = p.max + 1; { m = (i+j)/2; v = 0; for (w=1; w<k; w++) v+= p[w]/m; if (v < n) j=m else i=m } return i Het verschil j i halveert per stap, dit is je variant. Daaruit volgt een aantal ronden van lg(max(p)) en omdat het optellen van de stukken k tijd kost, is de totale tijd O(k lg(max(p))). Deze tijd is polynomiaal omdat lg(max(p)) overeenkomt met het aantal bits waarmee de getallen worden opgeschreven. Beoordeling/Toelichting: Voor algoritme 1pt en voor (in)variant en rekentijd 2pt (en voor beide samen dan 3pt). I = Initialisatie met j = p.max is fout omdat deze waarde soms kan. Zelfs j = p.sum is fout omdat die waarde kan als portie, nl. wanneer k = n = 1. L = Zoekt Lineair ipv binair, dit kost veel te veel tijd.

5 8. Het Gat: Gegeven is een gesorteerde array A van integers, waarbij A[n 1] A[0] n. Geef de invariant voor een algoritme dat een getal tussen A[0] en A[n 1] vindt, dat niet voorkomt in A. Geef ook het algoritme (het moet logaritmische tijd gebruiken). Oplossing: Dat er een getal niet voorkomt in segment [i..j] volgt uit A[j] A[i] > j i. Dit is gegeven voor i = 0 en j = n 1. Als A[i + 1] A[i] > 1, ontbreekt A[i] + 1. Je kunt dus dit algoritme maken met invariant A[j] A[i] > j i: i = 0; j= n-1 { m = (i+j)/2 if (A[m]-A[i] > m-i) j=m else i=m } return A[i]+1 Beoordeling/Toelichting: Voor een goed geformuleerde invariant 2pt; voor een kort en goed algoritme 1pt (en voor beide samen dan 3pt). Centraal punt in deze vraag is, dat je een logisch argument (waaruit volgt het bestaan van een gat) kunt operationaliseren naar een heldere invariant, en van daar uit code kunt genereren. A = Je invariant is wel OK, maar omzetten naar een Algoritme lukt niet. B = Zegt: variant van Binary search dus logaritmisch; pas hier mee op, want ik kan code schrijven die nog veel meer op BS lijkt maar toch niet logaritmisch is. Gelukkig werd het beredeneren van de tijdgrens niet gevraagd. C = Geen invariant, maar wel goede (inzichtelijke, correcte, compacte, logaritmische) Code; toch die 1pt. E = Je kunt niet binair zoeken met Eén variabele. G = Levert een index op ipv. een getal; fout, bv. als alle getallen groter dan n zijn. I = Je vergelijkt een Index en een waarde (als in if (A[m] > m)); gaat bv. fout wanneer alle waarden groter zijn dan n. Dan is het altijd true, maar je komt niet altijd goed uit. M = Midpointformule simpeler dan m = (i+j)/2 bestaat niet! Waarom toch m = i + (j-i)/2 zovaak voorkomt is me een raadsel. Het handigst is, deze midpointformule aan het begin van de body te zetten; onhandig is, een midpointformule te zetten op elke plek waar je i of j verandert. R = Je levert A[i+i] op ipv A[i]+1, die waarde komt juist wel voor! T = Waarde Teruggeven ontbreekt (of verkeerde waarde). V = Je moet stoppen bij Verschil 1, dus niet bij 0, als in while (j > i). Bij verschil 1 wordt je midpoint gekozen als de ondergrens, mogelijk verandert je ondergrens niet en kom je in een infinite loop. Z = Absoluut Zoeken, je vergelijkt A[m] met A[0]+m. Dit kan een correct algoritme opleveren (maar niet als je op gelijkheid test). Uiteraard is wel een andere invariant nodig, nl A[i] A[0] + i A[j] > A[0] + j.

6 9. Het Duplicaat: Gegeven is een gesorteerde array A van integers, waarbij A[n 1] A[0] < n 1. Geef een algoritme dat een getal tussen A[0] en A[n 1] vindt, dat meervoudig voorkomt in A. Geef ook de invariant van je algoritme. Oplossing: Dat er een getal dubbel voorkomt in segment [i..j] volgt uit A[j] A[i] < j i. Dit is gegeven voor i = 0 en j = n 1. Als A[i + 1] A[i] < 1, is A[i] = A[i + 1], dus dubbel. Je kunt dus dit algoritme maken met invariant A[j] A[i] < j i: i = 0; j= n-1 { m = (i+j)/2 if (A[m]-A[i] < m-i) j=m else i=m } return A[i] Beoordeling/Toelichting: Voor een goed geformuleerde invariant 1pt; voor een kort en goed algoritme 1pt (en voor beide samen dan 2pt). Centraal punt in deze vraag is, dat je een logisch argument (waaruit volgt het bestaan van een duplicaat) kunt operationaliseren naar een heldere invariant, en van daar uit code kunt genereren. A = Je invariant is wel OK, maar omzetten naar een Algoritme lukt niet. E = Je kunt niet binair zoeken met Eén variabele. I = Je vergelijkt tussen een Index en een waarde (als in if (A[m] > m)); dit is nooit goed, wat je kunt inzien door een voorbeeld waarin alle waarden groter zijn dan n. Dan is het altijd true, maar je komt niet altijd goed uit. L = Lineaire tijd; hoogstens 1pt totaal. M = Midpointformule simpeler dan m = (i+j)/2 bestaat niet! Waarom toch m = i + (j-i)/2 zovaak voorkomt is me een raadsel. Het handigst is, deze midpointformule aan het begin van de body te zetten; onhandig is, een midpointformule te zetten op elke plek waar je i of j verandert. S = Succestest rond m (if (A[m] == A[m+1])) is overbodig. T = Termineert niet omdat je doorgaat tot j-i == 0; Je moet stoppen bij 1. Bij verschil 1 wordt je midpoint gekozen als de ondergrens, mogelijk verandert je ondergrens niet en kom je in een infinite loop. 10. Interpolation Search: Volgens Wikipedia heeft Interpolation Search een verwachte complexiteit van O(lg lg n) stappen. Kun je dit bewijzen of experimenteel bevestigen? Oplossing: Beoordeling/Toelichting: Dit is een onderzoeksopdrachtje waarvoor geen kort zinvol antwoord bestaat. Wel heel leuk om te doen (correct te krijgen!!) en er een beetje mee te experimenteren. Boeiend om te zien hoe je programma met 5 of 6 vergelijkingen een waarde vindt in een catalogus van miljoenen getallen.

7 11. LinkaBurka: Van een rij kabouters is de meest linkse, nr 1, een meisje en de meeste rechtse, nr n, een jongen. De rest draagt burka s zodat het geslacht niet bekend is. Je moet de meest linkse positie (laagste) vinden waar verschillende seksen aangrenzend staan. (a) Kan dit in O(lg n) stappen? Leg uit! (b) Geef een zo snel mogelijk algoritme. (c) Wat is de asymptotische complexiteit van je algoritme? Oplossing: Het kan niet in O(lg n) stappen, het kan zelfs niet beter dan lineair, dwz. niet in o(n) stappen. Als namelijk kabouter n de enige jongen is, dan is natuurlijk posities n 1 en n het juiste antwoord. Maar hiervan kun je niet zeker zijn zonder alle andere kabouters te checken dat het meisjes zijn. In het slechtste geval (hier: aalemaal meisje op 1 na) is dus ieder algoritme gedwongen om alle kabouters te bekijken. (b) Lineair algoritme met invariant ( i < j : K[i] == M): j=2; while(k[j] == M) j++; Print posities j-1 en j; (c) Dit algoritme is lineair, dus O(n) of Θ(n) is hier het goede antwoord. Beoordeling/Toelichting: Te behalen 3pt: 1 voor een bewijs dat Θ(n) nodig is, 1 voor het algoritme, en 1 voor de complexiteit. Voor wie binair zoeken gebruikte, ook al was dit perfect gereproduceerd, helaas geen punten omdat dit hier niet werkt. A = Een Andere complexiteit: als je minder dan lineair hebt klopt je algoritme of je analyse niet (zie (a)). Als je meer dan lineair hebt is je algoritme niet snel genoeg. B = Er is niet gegeven dat meisjes en jongens in twee Blokken staan (ahw gesorteerd). De vraag heeft de duidelijke suggestie in zich dat er meerdere wisselingen tussen meisjes en jongens kunnen optreden. D = Doorgaan als je de eerste positie al gevonden hebt is zinloos, -1/2. E = Een Early Stopping algoritme is nodeloos gecompliceerd, zie ook hoorcollege en notes. H = een halveringsmethode om dan toch alles van links te bekijken is veel te omslachtig. K = Je kunt geen Kansen aan de invoer toekennen, want er is niets gegeven over een willekeurige samenstelling van de kaboutergroep. L = Antwoord Lineair is niet genoeg, je moet echt O(n) opschrijven. M = Antwoord O(n 1) of O(n/2) is niet genoeg vereenvoudigd. S = Als het gesorteerd is... ; wat is sortering in deze context? Zie ook B. V = Te Vage omschrijving van het algoritme.

8 12. Gelijke buren: Van een integer array A is gegeven dat A[0] even is en A[999] ook. (a) Bewijs dat er in A twee getallen naast elkaar staan met gelijke pariteit (dwz., er is een i waarvoor A[i] en A[i + 1] beide even, of beide oneven zijn). (b) Iwan zegt dat je, om opeenvolgende getallen van gelijke pariteit snel te vinden, de invariant even(i + A[i]) odd(j + A[j]) kunt gebruiken. Laat zien hoe je een programma kunt initialiseren voor die invariant, en hoe je uit j = i + 1 concludeert dat je een oplossing gevonden hebt. (c) Geef code die hoogstens 10 getallen van A bekijkt en twee opeenvolgende getallen van gelijke pariteit afdrukt. Oplossing: (a) Bewijs uit het ongerijmde. Stel dat er nergens twee gelijke pariteiten naast elkaar staan. Dan komt na elk even getal een oneven getal en omgekeerd. Omdat op de even positie A[0] een even getal staat, staat dan op elke even positie een even getal en op elke oneven positie een oneven getal. Dus is A[999] oneven, wat in tegenspraak is met het gegeven. (b) Als de pariteit van A[i] gelijk is aan die van i, zoals voor i = 0, dan is A[i] + i even, en als de pariteit ongelijk is, zoals voor j = 999, dan is A[j] + j oneven. De invariant: even(i + A[i]) odd(j + A[j]) kun je dus verkrijgen met initialisatie i=0; j=999;. Verder, als i + A[i] even is maar i A[i + 1] is oneven, dan hebben A[i] en A[i + 1] gelijke pariteit. (c) Het kan heel snel met binair zoeken: i = 0; j = 999; { m = (i+j)/2; if (even(m+a[m])) i=m; else j=m; } print A[i] en A[i+1]; Beoordeling/Toelichting: Tot 3pt, 1 per deelvraag. Omdat na initialisatie j i 2 10, is j i 2 0 na hoogstens 10 stappen, maar hierover hoefde je niets te zeggen voor punten. Codes: C = Conditie (A[m] % 2 == 0) geeft je steeds een even A[i] en (als je ooit een oneven getal tegenkomt) een oneven A[j]). Uiteindelijk lever je juist een even/oneven paar op. E = Early Stopper, kijkt naar twee getallen per ronde dus totaal max 20, 1pt. L = Lineair zoeken geeft geen punt. Als je het afbreekt na tien stappen (om aan de grens op aantal te bekijken waarden te voldoen) vindt je methode natuurlijk iet altijd een antwoord! N = Heeft Niets met de gegeven invariant van doen.

9 13. Geheeltallige Logaritme: Loes moet een methode public int flog(long x schrijven die voor positieve x de floor (naar beneden afgeronde waarde) van de 2-logaritme van x oplevert. De returnwaarde R voldoet aan 2 R x en 2 R+1 > x; voorbeeld flog(30) zou 4 teruggeven. (a) Geef een invariant van een loop waarmee Loes R kan uitrekenen. (b) Geef de initialisatie die jouw invariant waar maakt. (c) Geef een loop die R uitrekent en maximaal 6 vergelijkingen met x doet. Oplossing: (a) Houd exponenten i en j bij, waarvan je weet dat (Inv): 2 i x 2 j > x. (b) Omdat x positief is, geldt 2 0 x en omdat x een long is geldt 2 63 > x. Je kunt je invariant daarom initialiseren met int i = 0; int j = 63;. (c) Behalve de initialisatie heb je een body nodig die j i halveert: m = (i+j)/2; if ((1<<m) <= x) i=m; else j=m; gevolgd door een return statement retun i;. Het verschil j i is in het begin 63 en halveert in elke stap, zodat het na hoogstens zes stappen 1 is. Beoordeling/Toelichting: Per deelvraag een punt

Opgaven Binair Zoeken en Invarianten Datastructuren, 4 mei 2016, Werkgroep.

Opgaven Binair Zoeken en Invarianten Datastructuren, 4 mei 2016, Werkgroep. Opgaven Binair Zoeken en Invarianten Datastructuren, 4 mei 2016, Werkgroep. Gebruik deze opgaven, naast die uit het boek, om de stof te oefenen op het werkcollege. Cijfer: Op een toets krijg je meestal

Nadere informatie

Eerste Huiswerk Algoritmiek 18 februari 2015, uitwisselen, WerkCollege.

Eerste Huiswerk Algoritmiek 18 februari 2015, uitwisselen, WerkCollege. Eerste Huiswerk Algoritmiek 18 februari 2015, uitwisselen, WerkCollege. Kijk een huiswerkset na met een team van twee, voorzie de uitwerking van commentaar en becijfering, en neem de nagekeken set mee

Nadere informatie

Eerste Toets Datastructuren 22 mei 2019, , Educ-β en Megaron.

Eerste Toets Datastructuren 22 mei 2019, , Educ-β en Megaron. Eerste Toets Datastructuren 22 mei 209, 3.30 5.30, Educ-β en Megaron. Motiveer je antwoorden kort! Stel geen vragen over deze toets; als je een vraag niet duidelijk vindt, schrijf dan op hoe je de vraag

Nadere informatie

Eerste Toets Datastructuren 11 juli 2018, , Educ-α.

Eerste Toets Datastructuren 11 juli 2018, , Educ-α. Eerste Toets Datastructuren 11 juli 2018, 13.30 15.30, Educ-α. Motiveer je antwoorden kort! Stel geen vragen over deze toets; als je een vraag niet duidelijk vindt, schrijf dan op hoe je de vraag interpreteert

Nadere informatie

Vierde college complexiteit. 14 februari Beslissingsbomen

Vierde college complexiteit. 14 februari Beslissingsbomen College 4 Vierde college complexiteit 14 februari 2017 Restant zoeken Beslissingsbomen 1 Binair zoeken Links := 1; Rechts := n; while Links Rechts do Midden := Links + Rechts 2 ; if X = A[Midden] then

Nadere informatie

Derde college complexiteit. 7 februari Zoeken

Derde college complexiteit. 7 februari Zoeken College 3 Derde college complexiteit 7 februari 2017 Recurrente Betrekkingen Zoeken 1 Recurrente betrekkingen -1- Rij van Fibonacci: 0,1,1,2,3,5,8,13,21,... Vanaf het derde element: som van de voorgaande

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

Vierde college complexiteit. 26 februari Beslissingsbomen en selectie Toernooimethode Adversary argument

Vierde 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 informatie

Vierde college complexiteit. 16 februari Beslissingsbomen en selectie

Vierde college complexiteit. 16 februari Beslissingsbomen en selectie Complexiteit 2016/04 College 4 Vierde college complexiteit 16 februari 2016 Beslissingsbomen en selectie 1 Complexiteit 2016/04 Zoeken: samengevat Ongeordend lineair zoeken: Θ(n) sleutelvergelijkingen

Nadere informatie

Opgaven Registers Concurrency, 29 nov 2018, Werkgroep.

Opgaven Registers Concurrency, 29 nov 2018, Werkgroep. Opgaven Registers Concurrency, 29 nov 2018, Werkgroep. Gebruik deze opgaven om de stof te oefenen op het werkcollege. Cijfer: Op een toets krijg je meestal zes tot acht opgaven. 1. Safe Integer: Van een

Nadere informatie

Uitgebreide uitwerking Tentamen Complexiteit, juni 2017

Uitgebreide uitwerking Tentamen Complexiteit, juni 2017 Uitgebreide uitwerking Tentamen Complexiteit, juni 017 Opgave 1. a. Een pad van de wortel naar een blad stelt de serie achtereenvolgende arrayvergelijkingen voor die het algoritme doet op zekere invoer.

Nadere informatie

Datastructuren en Algoritmen

Datastructuren en Algoritmen Datastructuren en Algoritmen Tentamen Vrijdag 6 november 2015 13.30-16.30 Toelichting Bij dit tentamen mag je gebruik maken van een spiekbriefje van maximaal 2 kantjes. Verder mogen er geen hulpmiddelen

Nadere informatie

Opgaven Sommaties Datastructuren, 8 mei 2019, Werkgroep.

Opgaven Sommaties Datastructuren, 8 mei 2019, Werkgroep. Opgaven Sommaties Datastructuren, 8 mei 019, Werkgroep. Gebruik deze opgaven, naast die uit het boek, om de stof te oefenen op het werkcollege. Cijfer: Op een toets krijg je meestal zes tot acht opgaven.

Nadere informatie

Vijfde college complexiteit. 21 februari Selectie Toernooimethode Adversary argument

Vijfde college complexiteit. 21 februari Selectie Toernooimethode Adversary argument Complexiteit 2017/05 College 5 Vijfde college complexiteit 21 februari 2017 Selectie Toernooimethode Adversary argument 1 Complexiteit 2017/05 Opgave 28 Gegeven twee oplopend gesorteerde even lange rijen

Nadere informatie

Tweede Toets Datastructuren 26 juni 2019, , Educ-β.

Tweede Toets Datastructuren 26 juni 2019, , Educ-β. Tweede Toets Datastructuren 26 juni 2019, 17.00 19.00, Educ-β. Motiveer je antwoorden kort! Stel geen vragen over deze toets; als je een vraag niet duidelijk vindt, schrijf dan op hoe je de vraag interpreteert

Nadere informatie

Inleiding Programmeren 2

Inleiding 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 informatie

Opgaven Eigenschappen van Getallen Security, 2018, Werkgroep.

Opgaven Eigenschappen van Getallen Security, 2018, Werkgroep. Opgaven Eigenschappen van Getallen Security, 2018, Werkgroep. Gebruik deze opgaven, naast die uit het boek, om de stof te oefenen op het werkcollege. Cijfer: Op een toets krijg je meestal zes tot acht

Nadere informatie

Eerste Toets Datastructuren 25 mei 2018, , Educ-Γ.

Eerste Toets Datastructuren 25 mei 2018, , Educ-Γ. Eerste Toets Datastructuren 25 mei 2018, 11.00 13.00, Educ-Γ. Motiveer je antwoorden kort! Stel geen vragen over deze toets; als je een vraag niet duidelijk vindt, schrijf dan op hoe je de vraag interpreteert

Nadere informatie

Opgaven Fibonacci-getallen Datastructuren, 23 juni 2017, Werkgroep.

Opgaven Fibonacci-getallen Datastructuren, 23 juni 2017, Werkgroep. Opgaven Fibonacci-getallen Datastructuren, 3 juni 017, Werkgroep Gebruik deze opgaven, naast die uit het boek, om de stof te oefenen op het werkcollege Cijfer: Op een toets krijg je meestal zes tot acht

Nadere informatie

Opgaven Analyse van Algoritmen 10 mei 2019, Datastructuren, Werkgroep.

Opgaven Analyse van Algoritmen 10 mei 2019, Datastructuren, Werkgroep. Opgaven Analyse van Algoritmen 10 mei 019, Datastructuren, Werkgroep. Gebruik deze opgaven, naast die uit het boek, om de stof te oefenen op het werkcollege. Cijfer: Op een toets krijg je meestal zes tot

Nadere informatie

Eerste Toets Concurrency 20 december 2018, , Educ-β.

Eerste Toets Concurrency 20 december 2018, , Educ-β. Eerste Toets Concurrency 20 december 2018, 11.00 13.00, Educ-β. Motiveer je antwoorden kort! Stel geen vragen over deze toets; als je een vraag niet duidelijk vindt, schrijf dan op hoe je de vraag interpreteert

Nadere informatie

Inleiding Programmeren 2

Inleiding 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 informatie

Opgaven QuickSort 3 mei 2019, Werkgroep, Datastructuren.

Opgaven QuickSort 3 mei 2019, Werkgroep, Datastructuren. Opgaven QuickSort 3 mei 2019, Werkgroep, Datastructuren. Als je klaar bent, maak dan de opgaven van vorige keer af. Cijfer: Op een toets krijg je meestal zes tot acht opgaven. 1. Doe QuickSort: Voer QuickSort

Nadere informatie

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

Programmeermethoden. Recursie. week 11: november kosterswa/pm/ Programmeermethoden Recursie week 11: 21 25 november 2016 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Derde programmeeropgave 1 Het spel Gomoku programmeren we als volgt: week 1: pointerpracticum,

Nadere informatie

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40

Recursion. 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 informatie

Zevende college algoritmiek. 24 maart Verdeel en Heers

Zevende college algoritmiek. 24 maart Verdeel en Heers Zevende college algoritmiek 24 maart 2016 Verdeel en Heers 1 Verdeel en heers 1 Divide and Conquer 1. Verdeel een instantie van het probleem in twee (of meer) kleinere instanties 2. Los de kleinere instanties

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

Java Les 3 Theorie Herhaal structuren

Java 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 informatie

Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2

Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2 Controle structuren De algemene vorm: 1 bloks door middel van indentatie Keuze Herhaling if expressie :...... In de volgende vorm is het else gedeelte weggelaten: if expressie :... Het if keuze- of conditioneel

Nadere informatie

Elfde college algoritmiek. 18 mei Algoritme van Dijkstra, Heap, Heapify & Heapsort

Elfde college algoritmiek. 18 mei Algoritme van Dijkstra, Heap, Heapify & Heapsort Algoritmiek 018/Algoritme van Dijkstra Elfde college algoritmiek 18 mei 018 Algoritme van Dijkstra, Heap, Heapify & Heapsort 1 Algoritmiek 018/Algoritme van Dijkstra Uit college 10: Voorb. -1- A B C D

Nadere informatie

Opgaven Hash Tabellen Datastructuren, 15 juni 2018, Werkgroep.

Opgaven Hash Tabellen Datastructuren, 15 juni 2018, Werkgroep. Opgaven Hash Tabellen Datastructuren, 15 juni 2018, Werkgroep. Gebruik deze opgaven, naast die uit het boek, om de stof te oefenen op het werkcollege. Cijfer: Op een toets krijg je meestal zes tot acht

Nadere informatie

Tweede Toets Datastructuren 29 juni 2016, , Educ-Γ.

Tweede Toets Datastructuren 29 juni 2016, , Educ-Γ. Tweede Toets Datastructuren 29 juni 2016, 13.30 15.30, Educ-Γ. Motiveer je antwoorden kort! Zet je mobiel uit. Stel geen vragen over deze toets; als je een vraag niet duidelijk vindt, schrijf dan op hoe

Nadere informatie

Een eenvoudig algoritme om permutaties te genereren

Een 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 informatie

Programmeermethoden NA. Week 3: Controlestructuren

Programmeermethoden NA. Week 3: Controlestructuren Programmeermethoden NA Week 3: Controlestructuren Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Inleveren opdracht 1 Lever digitaal sxxxxxxx-syyyyyyy-opdr1.py

Nadere informatie

Zevende college algoritmiek. 23/24 maart Verdeel en Heers

Zevende college algoritmiek. 23/24 maart Verdeel en Heers Zevende college algoritmiek 23/24 maart 2017 Verdeel en Heers 1 Algoritmiek 2017/Backtracking Tweede Programmeeropdracht 0 1 2 3 0 1 2 3 4 1 2 3 4 5 2 Algoritmiek 2017/Backtracking Tweede Programmeeropdracht

Nadere informatie

Tweede Toets Datastructuren 27 juni 2018, , Olympos Hal 2.

Tweede Toets Datastructuren 27 juni 2018, , Olympos Hal 2. Tweede Toets Datastructuren 27 juni 2018, 13.30 15.30, Olympos Hal 2. Motiveer je antwoorden kort! Stel geen vragen over deze toets; als je een vraag niet duidelijk vindt, schrijf dan op hoe je de vraag

Nadere informatie

Zevende college Algoritmiek. 6 april Verdeel en Heers

Zevende college Algoritmiek. 6 april Verdeel en Heers Zevende college Algoritmiek 6 april 2018 Verdeel en Heers 1 Algoritmiek 2018/Backtracking Programmeeropdracht 2 Puzzel 2: D O N A L D G E R A L D + R O B E R T Elke letter stelt een cijfer voor (0,1,...,9)

Nadere informatie

Een spoedcursus python

Een spoedcursus python Een spoedcursus python Zoals je in de titel misschien al gezien hebt, geven wij een spoedcursus Python. Door deze cursus leer je alle basics, zoals het rekenen met Python en het gebruik van strings. Het

Nadere informatie

Datastructuren en algoritmen voor CKI

Datastructuren en algoritmen voor CKI Datastructuren en algoritmen voor CKI Jeroen Bransen 1 11 september 2015 1 met dank aan Hans Bodlaender en Gerard Tel Heaps en heapsort Heap 1 2 3 4 5 6 7 8 9 10 16 14 10 8 7 9 3 2 4 1 16 14 10 8 7 9 3

Nadere informatie

Achtste college algoritmiek. 12 april Verdeel en Heers. Dynamisch Programmeren

Achtste college algoritmiek. 12 april Verdeel en Heers. Dynamisch Programmeren Achtste college algoritmiek 12 april 2019 Verdeel en Heers Dynamisch Programmeren 1 Uit college 7: Partitie Partitie Partitie(A[l r]) :: // partitioneert een (sub)array, met A[l] als spil (pivot) p :=

Nadere informatie

Twaalfde college complexiteit. 11 mei 2012. Overzicht, MST

Twaalfde college complexiteit. 11 mei 2012. Overzicht, MST College 12 Twaalfde college complexiteit 11 mei 2012 Overzicht, MST 1 Agenda voor vandaag Minimum Opspannende Boom (minimum spanning tree) als voorbeeld van greedy algoritmen Overzicht: wat voor technieken

Nadere informatie

1 Rekenen met gehele getallen

1 Rekenen met gehele getallen 1 Inhoudsopgave 1 Rekenen met gehele getallen... 1.1 De gehele getallen... 1. Optellen... 1. Opgaven... 1. Aftrekken... 1. Opgaven... 1. Vermenigvuldigen... 1. Opgaven... 1.8 Delen... 9 1.9 Opgaven...9

Nadere informatie

Datastructuren. Analyse van algoritmen. José Lagerberg. FNWI, UvA. José Lagerberg (FNWI, UvA) Datastructuren 1 / 46

Datastructuren. Analyse van algoritmen. José Lagerberg. FNWI, UvA. José Lagerberg (FNWI, UvA) Datastructuren 1 / 46 Datastructuren Analyse van algoritmen José Lagerberg FNWI, UvA José Lagerberg (FNWI, UvA) Datastructuren 1 / 46 Datastructuren en Algoritmen Datastructuren, 6 ECTS eerstejaars Bachelor INF Datastructuren,

Nadere informatie

ALGORITMIEK: antwoorden werkcollege 5

ALGORITMIEK: antwoorden werkcollege 5 ALGORITMIEK: antwoorden werkcollege 5 opgave 1. a. Brute force algoritme, direct afgeleid uit de observatie: loop v.l.n.r. door de tekst; als je een A tegenkomt op plek i (0 i < n 1), loop dan van daaruit

Nadere informatie

Opgaven Heaps Datastructuren, 8 juni 2018, Werkgroep.

Opgaven Heaps Datastructuren, 8 juni 2018, Werkgroep. Opgaven Heaps Datastructuren, 8 juni 2018, Werkgroep. Gebruik deze opgaven, naast die uit het boek, om de stof te oefenen op het werkcollege. Cijfer: Op een toets krijg je meestal zes tot acht opgaven.

Nadere informatie

Examen Datastructuren en Algoritmen II

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

Nadere informatie

Programmeermethoden NA. Week 6: Lijsten

Programmeermethoden NA. Week 6: Lijsten Programmeermethoden NA Week 6: Lijsten Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna2016/ Getal opbouwen Stel je leest losse karakters (waaronder cijfers) en je moet daar een getal

Nadere informatie

Basisvaardigheden algebra. Willem van Ravenstein. 2012 Den Haag

Basisvaardigheden algebra. Willem van Ravenstein. 2012 Den Haag Basisvaardigheden algebra Willem van Ravenstein 2012 Den Haag 1. Variabelen Rekenenis het werken met getallen. Er zijn vier hoofdbewerkingen: optellen, aftrekken, vermenigvuldigen en delen. Verder ken

Nadere informatie

Tweede Huiswerk Security 26 of 28 oktober, 11.00, Nabespreken op Werkcollege.

Tweede Huiswerk Security 26 of 28 oktober, 11.00, Nabespreken op Werkcollege. Tweede Huiswerk Security 26 of 28 oktober, 11.00, Nabespreken op Werkcollege. Kijk het huiswerk van je collega s na en schrijf de namen van de nakijkers linksboven en het totaalcijfer rechts onder de namen

Nadere informatie

Programmeermethoden NA

Programmeermethoden NA Programmeermethoden NA Week 6: Lijsten Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Getal opbouwen Stel je leest losse karakters (waaronder

Nadere informatie

Tweede college complexiteit. 12 februari Wiskundige achtergrond

Tweede college complexiteit. 12 februari Wiskundige achtergrond College 2 Tweede college complexiteit 12 februari 2019 Wiskundige achtergrond 1 Agenda vanmiddag Floor, Ceiling Rekenregels logaritmen Tellen Formele definitie O, Ω, Θ met voorbeelden Stellingen over faculteiten

Nadere informatie

Uitgebreide uitwerking Tentamen Complexiteit, juni 2018

Uitgebreide uitwerking Tentamen Complexiteit, juni 2018 Uitgebreide uitwerking Tentamen Complexiteit, juni 018 Opgave 1. a. Een pad van de wortel naar een blad stelt de serie achtereenvolgende arrayvergelijkingen voor die het algoritme doet op zekere invoer.

Nadere informatie

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/ Programmeermethoden Recursie Walter Kosters week 11: 20 24 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Vierde programmeeropgave 1 De Grote getallen programmeren we als volgt: week 1: pointerpracticum,

Nadere informatie

Opgaven Zoekbomen Datastructuren, 20 juni 2018, Werkgroep.

Opgaven Zoekbomen Datastructuren, 20 juni 2018, Werkgroep. Opgaven Zoekbomen Datastructuren, 20 juni 2018, Werkgroep. Gebruik deze opgaven, naast die uit het boek, om de stof te oefenen op het werkcollege. Cijfer: Op een toets krijg je meestal zes tot acht opgaven.

Nadere informatie

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python. 1 Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python. Voordat je leert programmeren, moet je jouw pc zo instellen dat

Nadere informatie

Opgaven Recursie: Analyse en Master Theorem Datastructuren, 6 juni 2018, Werkgroep.

Opgaven Recursie: Analyse en Master Theorem Datastructuren, 6 juni 2018, Werkgroep. Opgaven Recursie: Analyse en Master Theorem Datastructuren, 6 juni 2018, Werkgroep. Gebruik deze opgaven, naast die uit het boek, om de stof te oefenen op het werkcollege. Cijfer: Op een toets krijg je

Nadere informatie

Syntax- (compile), runtime- en logische fouten Binaire operatoren

Syntax- (compile), runtime- en logische fouten Binaire operatoren Inhoud Syntax- (compile), runtime- en logische fouten Binaire operatoren Operaties op numerieke datatypen Evaluatie van expressies, bindingssterkte Assignment operaties en short-cut operatoren Controle

Nadere informatie

Voortgezet Prog. voor KI

Voortgezet Prog. voor KI Voortgezet Prog. voor KI Docent: Michael Wilkinson IWI 142 tel. 050-3638140 (secr. 3633939) Frank Brokken RC 352 tel. 050-3633688 Voorkennis: Inleiding Programmeren voor KI (nieuwe stijl) Stof: Practicum

Nadere informatie

Divide & Conquer: Verdeel en Heers vervolg. Algoritmiek

Divide & 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 informatie

Zevende college complexiteit. 7 maart Mergesort, Ondergrens sorteren (Quicksort)

Zevende college complexiteit. 7 maart Mergesort, Ondergrens sorteren (Quicksort) College 7 Zevende college complexiteit 7 maart 2017 Mergesort, Ondergrens sorteren (Quicksort) 1 Inversies Definitie: een inversie van de permutatie A[1],A[2],...,A[n] is een paar (A[i],A[j]) waarvoor

Nadere informatie

Het programma ELGAMAL

Het programma ELGAMAL Het programma ELGAMAL Gerard Tel Universiteit Utrecht, Departement Informatica 21 oktober 2005 Dit boekje is een inhoudelijke beschrijving van het programma ELGAMAL dat door Gerard Tel is geschreven voor

Nadere informatie

Geldwisselprobleem van Frobenius

Geldwisselprobleem van Frobenius Geldwisselprobleem van Frobenius Karin van de Meeberg en Dieuwertje Ewalts 12 december 2001 1 Inhoudsopgave 1 Inleiding 3 2 Afspraken 3 3 Is er wel zo n g? 3 4 Eén waarde 4 5 Twee waarden 4 6 Lampenalgoritme

Nadere informatie

algoritmiek - antwoorden

algoritmiek - antwoorden 2016 algoritmiek - antwoorden F. Vonk versie 1 28-8-2016 inhoudsopgave eenvoudige algoritmes... - 3 - complexe algoritmes... - 7 - zoeken (vwo)... - 10 - sorteren (vwo)... - 12 - Dit werk is gelicenseerd

Nadere informatie

Programmeermethoden. Controle-structuren. Walter Kosters. week 3: september kosterswa/pm/

Programmeermethoden. Controle-structuren. Walter Kosters. week 3: september kosterswa/pm/ Programmeermethoden Controle-structuren Walter Kosters week 3: 17 21 september 2018 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Inleveren opgave 1 Inleveren: digitaal clintonobama1.cc en print van mooi.pdf.

Nadere informatie

Combinatorische Algoritmen: Binary Decision Diagrams, Deel III

Combinatorische 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 informatie

Tijd is geen goede maatstaf, want is afhankelijk van computer waarop algoritme wordt gedraaid.

Tijd is geen goede maatstaf, want is afhankelijk van computer waarop algoritme wordt gedraaid. Complexiteit of efficiëntie van algoritmen Hoe meet je deze? Tijd is geen goede maatstaf, want is afhankelijk van computer waarop algoritme wordt gedraaid. Een betere maatstaf is het aantal berekeningsstappen

Nadere informatie

Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen

Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen dat er zowel typografische als inhoudelijke onvolkomenheden

Nadere informatie

oefening JavaScript - antwoorden

oefening JavaScript - antwoorden oefening JavaScript - antwoorden De antwoorden op deze opgaven zijn meestal wat aan de brede kant voor een Word document. Het is daarom handig om ze in Notepad++ te kopiëren en ze dan te bekijken. opgave

Nadere informatie

Programmeermethoden NA. Week 5: Functies (vervolg)

Programmeermethoden 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 informatie

Tweede Toets Concurrency 2 februari 2017, , Educ-β.

Tweede Toets Concurrency 2 februari 2017, , Educ-β. Tweede Toets Concurrency 2 februari 2017, 8.30 10.30, Educ-β. Motiveer je antwoorden kort! Zet je mobiel uit. Stel geen vragen over deze toets; als je een vraag niet duidelijk vindt, schrijf dan op hoe

Nadere informatie

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Een 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 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

Vakgroep CW KAHO Sint-Lieven

Vakgroep 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 informatie

Vierde college algoritmiek. 23/24 februari Complexiteit en Brute Force

Vierde college algoritmiek. 23/24 februari Complexiteit en Brute Force Algoritmiek 2017/Complexiteit Vierde college algoritmiek 23/24 februari 2017 Complexiteit en Brute Force 1 Algoritmiek 2017/Complexiteit Tijdcomplexiteit Complexiteit (= tijdcomplexiteit) van een algoritme:

Nadere informatie

recursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie

recursie 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 informatie

Programmeren (1) Examen NAAM:

Programmeren (1) Examen NAAM: Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien) en geef zowel klad als net af. Bij heel wat vragen moet je zelf Java-code schrijven. Hou dit kort en bondig. Je hoeft

Nadere informatie

Programmeren in Java les 3

Programmeren 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 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

Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 2 juni 2009, uur

Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 2 juni 2009, uur Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 2 juni 2009, 10.00 13.00 uur Opgave 1. a. Een toestand wordt bepaald door: het aantal lucifers op tafel, het aantal lucifers in het bezit van Romeo,

Nadere informatie

Achtste college algoritmiek. 8 april Dynamisch Programmeren

Achtste college algoritmiek. 8 april Dynamisch Programmeren Achtste college algoritmiek 8 april 2016 Dynamisch Programmeren 1 Werkcollege-opgave Dutch Flag Problem Gegeven een array gevuld met R, W, en B. Reorganiseer dit array zo dat van links naar rechts eerst

Nadere informatie

Opgave 1. (4 punten) Inleiding: Vraag: Hints: (maximaal 2 bonuspunten) Herkansingstentamen Algoritmiek voor Biologen

Opgave 1. (4 punten) Inleiding: Vraag: Hints: (maximaal 2 bonuspunten) Herkansingstentamen Algoritmiek voor Biologen Opgave 1. (4 punten) Elk jaar verliest een boom al z'n bladeren. Een boom begint op dag D met B bladeren. Op de eerste dag is voor elk blad dat aan de boom zit de kans op afvallen 0.03. Voor elke volgende

Nadere informatie

VBA voor Doe het Zelvers deel 20

VBA voor Doe het Zelvers deel 20 VBA voor Doe het Zelvers deel 20 Handleiding van Auteur: leofact Augustus 2015 handleiding: VBA voor Doe het Zelvers deel 20 Vorige aflevering In het vorige deel werd besproken hoe je de structuur en vensteropbouw

Nadere informatie

Small Basic Programmeren Text Console 2

Small Basic Programmeren Text Console 2 Oefening 1: Hoogste getal Je leest een reeks positieve gehele getallen in totdat je het getal 0 (nul) invoert. Daarna stopt de invoer en druk je een regel af met het hoogste getal uit de reeks. Voorbeeld:

Nadere informatie

Uitwerking tentamen Algoritmiek 10 juni :00 13:00

Uitwerking tentamen Algoritmiek 10 juni :00 13:00 Uitwerking tentamen Algoritmiek 10 juni 2014 10:00 13:00 1. Dominono s a. Toestanden: n x n bord met in elk hokje een O, een X of een -. Hierbij is het aantal X gelijk aan het aantal O of hooguit één hoger.

Nadere informatie

[13] Rondjes draaien (loops)

[13] Rondjes draaien (loops) [13] Rondjes draaien (loops) Met de if else uit de leerfiche [11] hebben we leren werken met één van de belangrijkste programmeerstructuren in Python. Bijna even belangrijk zijn de verschillende mogelijkheden

Nadere informatie

VBA voor doe het Zelvers deel 22. Handleiding van Helpmij.nl. Auteur: leofact

VBA voor doe het Zelvers deel 22. Handleiding van Helpmij.nl. Auteur: leofact VBA voor doe het Zelvers deel 22 Handleiding van Helpmij.nl Auteur: leofact december 2015 Vorige aflevering In de vorige aflevering werden de regular expressions behandeld. Voor VBA zijn deze beschikbaar

Nadere informatie

Variabelen en statements in ActionScript

Variabelen 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 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

5 Afronden en afkappen

5 Afronden en afkappen WIS5 1 5 Afronden en afkappen 5.1 Floor en ceiling Floor en ceiling Conversiefuncties van reële getallen naar gehele getallen. x = het grootste gehele getal et x x = het kleinste gehele getal et x Uitspraak:

Nadere informatie

sheets Programmeren 1 Java college 6, Walter Kosters De sheets zijn gebaseerd op met name hoofdstuk 13 en 14 van: D. Bell en M. Parr, Java voor studenten, Prentice Hall, 2002 http://www.liacs.nl/home/kosters/java/

Nadere informatie

1.3 Rekenen met pijlen

1.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 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

Datastructuren en algoritmen voor CKI

Datastructuren en algoritmen voor CKI Datastructuren en algoritmen voor CKI Jeroen Bransen 1 2 september 2015 1 met dank aan Hans Bodlaender en Gerard Tel Organisatie Website Vakwebsite: http://www.cs.uu.nl/docs/vakken/ki2v12009/ Bevat alle

Nadere informatie

Rekenkundige rijen. WISNET-HBO update aug. 2013

Rekenkundige rijen. WISNET-HBO update aug. 2013 Rekenkundige rijen WISNET-HBO update aug. 2013 1 Inleiding Een rij (sequtentie) is een serie getallen achter elkaar opgeschreven met komma's ertussen. Ieder getal in zo'n rij noemen we een term. Het is

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

ALGORITMIEK: antwoorden werkcollege 5

ALGORITMIEK: antwoorden werkcollege 5 1 ALGORITMIEK: antwoorden werkcollege 5 opgave 1. a. Brute force algoritme, direct afgeleid uit de observatie: loop v.l.n.r. door de tekst; als je een A tegenkomt op plek i (0 i < n 1), loop dan van daaruit

Nadere informatie

ALGORITMIEK: antwoorden werkcollege 5

ALGORITMIEK: antwoorden werkcollege 5 ALGORITMIEK: antwoorden werkcollege 5 opgave 1. a. Brute force algoritme, direct afgeleid uit de observatie: loop v.l.n.r. door de tekst; als je een A tegenkomt op plek i (0 i < n 1), loop dan van daaruit

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

Opgave 1. (4 punten) Inleiding: Vraag: Hints: (maximaal 2 bonuspunten) Tentamen Algoritmiek voor Biologen

Opgave 1. (4 punten) Inleiding: Vraag: Hints: (maximaal 2 bonuspunten) Tentamen Algoritmiek voor Biologen Opgave 1. (4 punten) Elk jaar verliest een boom al z'n bladeren. Een boom begint op dag D met B bladeren. Op de eerste dag is voor elk blad dat aan de boom zit de kans op afvallen 0.03. Voor elke volgende

Nadere informatie

Zevende college complexiteit. 17 maart Ondergrens sorteren, Quicksort

Zevende college complexiteit. 17 maart Ondergrens sorteren, Quicksort College 7 Zevende college complexiteit 17 maart 2008 Ondergrens sorteren, Quicksort 1 Sorteren We bekijken sorteeralgoritmen gebaseerd op het doen van vergelijkingen van de vorm A[i] < A[j]. Aannames:

Nadere informatie