Datastructuren college 10

Maat: px
Weergave met pagina beginnen:

Download "Datastructuren college 10"

Transcriptie

1 we hadden Backtracking verbetering i i Datastructuren college 0 0: : : 0: : : P r r r r r b r b r P r r r b r b r backtracking we hoeven vaak de kandidaat niet helemaal af te maken om hem te kunnen verwerpen hier verwerpen we een kandidaat permutatie zodra we keer hetzelfde element tegenkomen. je verwerpt dan in een klap alle voortzettingen scheelt veel werk backtracking: depth-first zoeken algemeen backtrack algoritme niet alle kandidaten hoeven even lang te zijn. rr r br b r b r r br b r We hoeven de boom niet echt te bouwen: doorloop boom depth-first: eerst kinderen, daarna broers en zussen kinderen van links naar rechts bijhouden van huidige pad + te onderzoek voortzettingen is voldoende begin met lege deeloplossing voegtoe ( i ) if (klaar) meld_succes; else for ( alle_voortzettingen ) voeg_toe_aan_deeloplossing; if ( past ) voegtoe (i+); haal_uit_deeloplossing; kan ook met extra functie het eigenlijke backtracken kan ook impliciet zijn 4

2 alternatief backtrack algoritme kortste pad van muis naar kaas begin met lege deeloplossing voegtoe ( i ) if (klaar) meld_succes; else for ( alle_voortzettingen ) deze staat nu if ( past ) binnen de conditie voeg_toe_aan_deeloplossing; voegtoe (i+); haal_uit_deeloplossing; 5 we willen niet alle oplossingen, maar de lengte van het kortste pad muis van niks, weet pas of er kaas is als hij er op staat zoek oplossingen met backtracken ommuur doolhof om testen op binnen doolhof blijven te voorkomen kortste pad kan geen cycle bevatten! plaats muizen op het pad om cycles te voorkomen 6 kortste pad representatie kortste pad algoritme normaal: pad = <V 0, V, V k-, V k- > met V 0 is beginpunt (muis) V k- is eindpunt (kaas) Voor alle i: V i en V i- grenzen aan elkaar we zoeken het kortste van die paden kortste pad ieder veld hoogstens keer voor hier bouwen we het pad in de doolhof vinden van buren is eenvoudig voorkomen van cycles door merken van velden geen extra geheugen nodig backtrack-functie levert afstand tot kaas op 7 maak met behulp van backtracking alle mogelijke paden (begin bij muis, geen cycles) functieresultaat is afstand tot de kaas int afstand ( veld ) if ( op eindpunt ) return 0; else if ( veld is vrij ) // de test! bezet veld; // voorkomt cycles in pad bepaal minimum afstand vanaf alle buren; maak veld vrij; // backtrack stap return minimum + ; else return oneindig; 8

3 kortste pad: C++ representatie enum Veld Vrij, Muis, Kaas, Muur ; const int Lengte = 8, Breedte = 7; const int Oneindig = Lengte * Breedte; Veld doolhof [ Breedte ] [ Lengte ] = Muur, Muur, Muur, Muur, Muur, Muur, Muur, Muur, Vrij, Vrij, Vrij, Muur, Vrij, Muur, Muur, Vrij, Muur, Vrij, Muur, Vrij, Muur, Muur, Vrij, Vrij, Vrij, Vrij, Vrij, Muur, Muur, Vrij, Vrij, Vrij, Muur, Vrij, Muur, Muur, Kaas, Muur, Vrij, Vrij, Vrij, Muur, Muur, Vrij, Muur, Vrij, Vrij, Vrij, Muur, Muur, Muur, Muur, Muur, Muur, Muur, Muur ; 9 kortste pad algoritme in C++ int kortstepad ( int x, int y ); // voor mutual recursion int stuurmuizenvanaf ( int x, int y ) int min_weg = kortstepad ( x+, y ); min_weg = min (min_weg, kortstepad ( x, y+ )); min_weg = min (min_weg, kortstepad ( x-, y )); return min (min_weg, kortstepad ( x, y- )); int kortstepad ( int x, int y ) switch ( doolhof [ x ] [ y ]) case Kaas: return 0; case Vrij: // de test! doolhof [ x ] [ y ] = Muis; int min_weg = stuurmuizenvanaf ( x, y ); doolhof [ x ] [ y ] = Vrij; // backtrack stap return min_weg + ; default: return Oneindig; i.p.v. for-loop 0 kortste pad programma int main ( ) cout << kortstepad ( 6, 4 ) << endl; system("pause"); return EXIT_SUCCESS; resultaat is 6 correct, maar niet erg informatief we willen graag het pad zelf kennen probleem: op het moment dat we het kortste pad vinden weten we niet dat dit zo is. oplossingen: alle paden bewaren: duur en onnodig kortste pad afdrukken met normaal backtrack algoritme vinden we alle oplossingen hoe vinden we het kortste? bewaar kortste tot nu toe ( ktnt ) i.p.v. meldsucces nieuwe oplossing korter dan ktnt? zo ja: ktnt = nieuwe oplossing als je alles geprobeerd hebt is ktnt de kortste! kortste pad tot nu toe bewaren

4 kortste pad afdrukken globale object kortste pad lengte kortste tot nu toe als reference argument geef huidige lengte mee zodat je weet of je iets beters gevonden hebt. void kortstepad ( veld, lengte, int& kortste ) if ( op eindpunt ) if ( lengte < kortste ) kortste = lengte; // beter pad gevonden kopieerpad ( ); else if ( veld is vrij ) // de test! bezet veld; // voorkomt cycles in pad kortstepad vanaf alle buren ( lengte+ ); maak veld vrij; // backtrack stap kortste pad printen in C++ void kortsteweg ( int x,int y, int lengte, int& kortste ) switch ( doolhof [ x ][ y ]) case Kaas: if ( lengte < kortste ) // koter pad? kortste = lengte; copyweg ( ); return; i.p.v. case Vrij: // de test! for-loop doolhof [ x ][ y ] = Muis; muizenvanaf ( x, y, lengte+, kortste ); doolhof [ x ][ y ] = Vrij; // backtrack stap return; default: return; 4 muizen vanaf de buren void muizenvanaf ( int x, int y, int lengte, int& kortste ) kortsteweg ( x+, y, lengte, kortste ); kortsteweg ( x, y+, lengte, kortste ); kortsteweg ( x-, y, lengte, kortste ); kortsteweg ( x, y-, lengte, kortste ); by reference argument: zelfde effect als globale variabele, maar mooier int main ( ) int kortste = Oneindig; kortsteweg ( 4, 6, 0, kortste ); if ( kortste < Oneindig ) cout << "De lengte van de korste weg is " << kortste << endl; toonweg ( weg ); else cout << "Geen weg gevonden\n"; toonweg ( doolhof ); system("pause"); return EXIT_SUCCESS; 5 korste pad: oplossing ##################### ### ### ### ### ### ### ### ### @ ### ### ### ### ### ### ##################### wat iedereen binnen 0 seconden al gezien had 6 4

5 op de zelfde manier magische vierkanten in zo min mogelijk zetten met een paard op een schaakbord van een positie naar een andere vind een rondgang van het paard op het schaakbord zodat alle posities bezocht worden. 7 vierkant van N bij N bevat getallen van 0N -, of N som van alle rijen en kolommen is gelijk soms ook de som van de diagonaal gelijk oplossing oplossing magische vierkanten met backtracking N bij N vierkant is matrix int[n][n] met een beetje moeite kunnen we de som van de rijen en kolommen uitrekenen +++(m-)+m = m*(m+)/ hier m = N - er bestaan betere algoritmen dan backtracking! dus totale som (N -)*(N -+)/ voor iedere rij/kolom is de som dus (N -)*N/ vul kolom voor kolom kijk of som nog steeds kan passen gebruik bool vrij[nn] om te kijken of getallen vrij zijn 9 magische vierkanten in C++ const int N = ; const int NN = N*N; const int SOM = (NN-)*N/; int main ( ) int m [ N ] [ N ]; bool vrij [ NN ]; for ( int i=0; i<nn; i+= ) vrij [ i ] = true; vul ( 0, 0, m, vrij, 0 ); system("pause"); return EXIT_SUCCESS; 0 5

6 vullen in C++ void vul( int i, int j, int m [N][N], bool vrij [NN], int s ) if ( j==n ) // vierkant vol? som in print ( m ); kolom else if ( i==n && s==som ) // kolom vol en som klopt? vul ( 0, j+, m, vrij, 0 ); else if ( i<n ) // nog wat toevoegen aan kolom? for ( int n=0; n<nn; n+= ) if ( vrij[n] && s+n<=som ) // n vrij en past hier? waar kijken we vrij [ n ] = false; naar de rijen? m [ i ][ j ] = n; vul ( i+, j, m, vrij, s+n ); // recursie vrij [ n ] = true; // backtrack stap vullen in C++ void vul ( int i, int j, int m [N][N], bool vrij [NN], int s ) if ( j==n ) print ( m ); bool klopt ( int m [N][N], int i ) else if ( i==n && s==som ) vul ( 0, j+, m, vrij, 0 ); int s=0; else if ( i<n ) for ( int j=0; j<n; j+= ) for ( int n=0; n<nn; n+= ) s += m [ i ][ j ]; if ( vrij[n] && s+n<=som ) return s==som; vrij [ n ] = false; m [ i ][ j ] = n; if ( j<n- klopt ( m, i )) vul ( i+, j, m, vrij, s+n ); vrij[n] = true; kan dit slimmer? representatie deeloplossing kortste pad analyse globale rij waar we oplossing in bouwen permutaties, n-queens één globaal bord/wereld waar we oplossing in bouwen muis in doolhof, kortste pad paard op schaakbord soms rij van borden nodig schaakspel, 5 puzzel Algemeen voor backtrack algoritmen: O(V L ) V aantal mogelijkheden L langst mogelijke pad niet beter dan brute force; effect afsnijden sub-bomen is onzeker Voor muis in doolhof: V = Lengte * Breedte n L = Lengte * Breedte n complexiteit = O(V L ) door slim te genereren: O( L ) = O( Lengte*Breedte ) dergelijke heuristieken helpen dus echt door afsnijden sub-bomen met predikaat valt hoeveelheid werk vaak nog wel mee 4 6

7 kanoën waar gebeurd: soldaten moeten een brede rivier oversteken kleine jongentjes willen wel helpen met hun kano maar, in de kano kunnen of kinderen, of soldaat dus niet soldaten, of soldaat + kind de oplossing is niet moeilijk, maar we gaan met backtracking een oplossing zoeken backtrack kanoën oplossing is een rijtje van die situaties klasse kant met: aantal jongens hier aantal soldaten hier kant van de kano methoden voor: is klaar? kan over varen? vaar over constructor 5 6 const int Begin = ; enum InBoot J, JJ, S ; enum Kano Hier, Daar ; class Kant public: int jongens; int soldaten; Kano kano; klasse kant Kant ( ): jongens ( Begin ), soldaten ( Begin ), kano ( Hier ) ; bool klaar ( ) return soldaten==0 && jongens==begin && kano==hier; ; bool kan ( InBoot i ); void vaar ( Kant& naar, InBoot i ); ; 7 de methode kan bool Kant :: kan ( InBoot i ) if ( kano==hier ) switch ( i ) case J: return jongens >0; case JJ: return jongens >; case S: return soldaten>0; else // kano==daar switch ( i ) case J: return Begin-jongens >0; case JJ: return Begin-jongens >; case S: return Begin-soldaten>0; 8 7

8 methode vaar void Kant :: vaar ( Kant& naar, InBoot i ) if ( kano==hier ) naar.kano = Daar; &! switch ( i ) case J: naar.jongens = jongens-; naar.soldaten = soldaten ; return; case JJ:naar.jongens = jongens-; naar.soldaten = soldaten ; return; case S: naar.jongens = jongens ; naar.soldaten = soldaten-; return; else. 9 uitvoer operator << ostream& operator << (ostream& os, Kant k) return os << "Kant: Jongens " << k.jongens << " soldaten " << k.soldaten << ", daar: Jongens " << begin-k.jongens << " soldaten " << begin-k.soldaten << (k.kano==hier?" kano is hier\n":" kano is daar\n"); 0 backtracken voor kortste oplossing nodig: huidig pad en beste tot nu toe + lengte const int MaxPad = 0*Begin; // kies iets dat zeker lang genoeg is Kant pad [ MaxPad ]; Kant kortste [ MaxPad ]; int lengte = MaxPad; // ktnt: pad // ktnt: lengte bewaren van huidige pad in beste tot nu toe: void bewaar ( int l ) lengte = l; for ( int i=0; i<=l; i+= ) kortste [ i ] = pad [ i ]; toevoegen void voegtoe ( int i ) assert ( i<maxpad- ); if ( pad [ i ]. klaar ( ) ) if ( i < lengte ) bewaar ( i ); type conversie else for ( InBoot ib=j; ib<=s; ib = InBoot ( ib+ ) ) if ( pad [ i ]. kan ( ib ) ) pad [ i ]. vaar ( pad [ i+ ], ib ); voegtoe ( i+ ); // backtrack stap is impliciet 8

9 resultaat: programma uitvoeren Assertion failed: i<maxpad- hoe kan dit?? cycle jongentje blijft heen en weer roeien wat doen we eraan? testen op nieuwe situatie kortste pad kan nooit keer dezelfde toestand bevatten andere mogelijkeheid: bovengrens op lengte pad void voegtoe ( int i ) assert ( i<maxpad- ); if ( pad[i].klaar() ) if ( i<lengte ) bewaar ( i ); else for ( InBoot ib=j; ib<=s; ib = InBoot ( ib+ ) ) if ( pad[i].kan( ib ) ) pad[i].vaar ( pad[i+], ib ); if ( isnieuw ( i ) ) voegtoe( i+ ); // backtrack toevoegen e poging 4 resultaat 0: Kant: Jongens soldaten, daar: Jongens 0 soldaten 0, kano is hier : Kant: Jongens 0 soldaten, daar: Jongens soldaten 0, kano is daar : Kant: Jongens soldaten, daar: Jongens soldaten 0, kano is hier : Kant: Jongens soldaten, daar: Jongens soldaten, kano is daar 4: Kant: Jongens soldaten, daar: Jongens 0 soldaten, kano is hier 5: Kant: Jongens 0 soldaten, daar: Jongens soldaten, kano is daar 6: Kant: Jongens soldaten, daar: Jongens soldaten, kano is hier 7: Kant: Jongens soldaten 0, daar: Jongens soldaten, kano is daar 8: Kant: Jongens soldaten 0, daar: Jongens 0 soldaten, kano is hier ga na dat dit een correcte oplossing is programma werkt ook voor andere Begin waarden resultaat Begin = 0: Kant: Jongens soldaten, daar: Jongens 0 soldaten 0 kano is hier : Kant: Jongens soldaten, daar: Jongens soldaten 0 kano is daar : Kant: Jongens soldaten, daar: Jongens soldaten 0 kano is hier : Kant: Jongens 0 soldaten, daar: Jongens soldaten 0 kano is daar 4: Kant: Jongens soldaten, daar: Jongens soldaten 0 kano is hier 5: Kant: Jongens soldaten, daar: Jongens soldaten kano is daar 6: Kant: Jongens soldaten, daar: Jongens soldaten kano is hier 7: Kant: Jongens 0 soldaten, daar: Jongens soldaten kano is daar 8: Kant: Jongens soldaten, daar: Jongens soldaten kano is hier 9: Kant: Jongens soldaten, daar: Jongens soldaten kano is daar 0: Kant: Jongens soldaten, daar: Jongens soldaten kano is hier : Kant: Jongens soldaten 0, daar: Jongens soldaten kano is daar : Kant: Jongens soldaten 0, daar: Jongens 0 soldaten kano is hier kan het net zo snel met jongens en soldaten? 5 6 9

10 reflectie void voegtoe ( int i ) assert ( i<maxpad- ); if ( pad[i].klaar() ) is het wel nodig om hier if ( i<lengte ) een abort te doen? bewaar(i); else for ( InBoot ib=j; ib<=s; ib = InBoot (ib+) ) if ( pad[i].kan(ib) ) pad[i].vaar ( pad[i+], ib ); if ( isnieuw ( i ) ) voegtoe( i+ ); // backtrack 7 void voegtoe ( int i ) if ( pad[i].klaar() ) if ( i<lengte ) bewaar(i); else if ( i<maxpad- ) for ( InBoot ib=j; ib<=s; ib = InBoot (ib+) ) if ( pad[i].kan(ib) ) zonder abort pad[i].vaar ( pad[i+], ib ); if ( isnieuw ( i ) ) voegtoe( i+ ); // backtrack is die nog echt nodig? Nee, maar wel verstandig om takken snel af te snijden 8 op de zelfde manier boer, geit, kool en wolf kannibalen en missionarissen. 9 heuristieken Archimedes: Eureka! slimme vondsten representatie van de toestand n-queens: rij van kolomen i.p.v. heel bord volgorde van nieuwe elementen in voegtoe eerste koningin op eerste helft van de velden afbreken van het zoeken er zit een cycle in het pad herkennen dat we hier al zijn geweest we hebben de gespiegelde toestand al gezien herkennen dat het niets meer zal worden we hebben al een kortere oplossing gezien. maken backtracking vaak net bruikbaar 40 0

11 moeten we backtracken? alleen als je geen beter algoritme weet: O(n L ) breadth-first zoeken is vaak sneller, maar kan veel administratie vergen breadth-first: doorzoek heel niveau voordat je naar kinderen kijkt. muis in doolhof breadth-first idee: merk alle velden met afstand tot de kaas op veld van de kaas is afstand 0 op alle buren is afstand op buren van veld met n is afstand hoogstens n+ Analyse: buren van veld met afstand n vinden en merken: O(Lengte*Breedte) = O(n ) = O(V) Alle L velden merken: O(L * V) = O(n 4 ) Onthouden wat te merken veld vinden in O() totaal L * O() = O(L) = O(n )!! 4 4 breadth-first doolhof breadth-first doolhof const int Muur=-, Kaas=0, Vrij=Oneindig; void vuldoolhof ( ) bool gevonden = true; // er is een veld met afstand n void merkveld ( int i, int j, int n ) if ( doolhof[i][j] > n ) doolhof[i][j] = n; in het begin alles Oneindig (groot) for ( int n=0; gevonden ;n++ ) gevonden = false; for ( int i = 0; i < Lengte; i++ ) iets slimmer dan n<lengte*breedte for ( int j = 0; j < Breedte; j++ ) if ( doolhof[i][j]==n ) // er is een veld op afstand n void merkvelden ( int i, int j, int n ) merkveld ( i+, j, n ); merkveld ( i-, j, n ); merkveld ( i, j+, n ); merkveld ( i, j-, n ); merkvelden ( i, j, n+ ); gevonden = true; 4 44

12 breadth-first doolhof void toonweg ( ) for ( int i = 0; i < Lengte; i++ ) for ( int j = 0; j < Breedte; j++ ) switch ( doolhof [i][j] ) case Vrij: cout << " "; break; case Muur: cout << "###"; break; default: cout << setw() << doolhof[i][j] << ' ';break; cout << endl; 45 breadth-first doolhof resultaat ##################### ### ### 8 ### ### ### 5 ### 7 ### ### ### ### ### 7 ### ### 0 ### ### ### ### ### ##################### kortste weg van ieder punt direct af te lezen door aanpassen doolhof is administratie klein met bijhouden velden (queue) gaat het nog beter denk twee keer na voor je gaat programmeren!! reflectie is belangrijk!!! 46 Wat hebben we gedaan dictaat: H boek: backtracking komt niet voor Zoeken van oplossingen: in principe boom van oplossingen depth-first: bouw steeds één tak; rij i.p.v. boom brute force: bouw complete kandidaat-oplossing test of kandidaat-oplossing voldoet backtrack: test bij iedere toevoeging of het nog wat kan worden Opgave: weer backtracking 47

Verslag Opdracht 4: Magische Vierkanten

Verslag Opdracht 4: Magische Vierkanten Verslag Opdracht 4: Magische Vierkanten Stefan Schrama, Evert Mouw, Universiteit Leiden 2007-08-14 Inhoudsopgave 1 Inleiding 2 2 Uitleg probleem 2 3 Theorie 2 4 Aanpak 2 5 Implementatie 4 6 Experimenten

Nadere informatie

Datastructuren: stapels, rijen en binaire bomen

Datastructuren: stapels, rijen en binaire bomen Programmeermethoden Datastructuren: stapels, rijen en binaire bomen week 12: 23 27 november 2015 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Inleiding In de informatica worden Abstracte DataTypen (ADT s)

Nadere informatie

definities recursieve datastructuren college 13 plaatjes soorten Graph = ( V, E ) V vertices, nodes, objecten, knopen, punten

definities recursieve datastructuren college 13 plaatjes soorten Graph = ( V, E ) V vertices, nodes, objecten, knopen, punten recursieve datastructuren college graphs definities Graph = ( V, E ) V vertices, nodes, objecten, knopen, punten E edges, arcs, kanten, pijlen, lijnen verbinding tussen knopen Voorbeelden steden en verbindingswegen

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

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

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

Hoe een TomTom een sudoku oplost

Hoe een TomTom een sudoku oplost Hoe een TomTom een sudoku oplost dr. Arnold Meijster a.meijster@rug.nl Palindromen Opdracht: Ga van een willekeurig woord na, of het een palindroom is of niet. lol pop lepel negen droomoord parterretrap

Nadere informatie

colleges recursieve datastructuren college 9 prioriteit van operatoren prioriteit in recursive descent parser

colleges recursieve datastructuren college 9 prioriteit van operatoren prioriteit in recursive descent parser colleges recursieve datastructuren college 9 interpreteren: waarde van bomen bepalen transformeren: vorm van bomen veranderen parseren herkennen van expressie in de tekst herkennen van functies onderwerp

Nadere informatie

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, 14.00-15.30, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Dit tentamen bestaat uit twee delen. Deel 1 (14.00-14.45, gesloten

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 6 december 2013 Terugblik Programma en geheugen Opdrachten Variabelen Methoden Objecten Klasse Programma en geheugen Opdrachten Variabelen zijn gegroepeerd in

Nadere informatie

Recapitulatie: Ongeïnformeerd zoeken. Zoekalgoritmen ( ) College 2: Ongeïnformeerd zoeken. Dynamische breadth-first search

Recapitulatie: Ongeïnformeerd zoeken. Zoekalgoritmen ( ) College 2: Ongeïnformeerd zoeken. Dynamische breadth-first search Recapitulatie: Ongeïnformeerd zoeken Zoekalgoritmen (009 00) College : Ongeïnformeerd zoeken Peter de Waal, Tekst: Linda van der Gaag een algoritme voor ongeïnformeerd zoeken doorzoekt de zoekruimte van

Nadere informatie

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing Introductie In dit document geven we een mogelijke oplossing voor het eerste practicum. Deze oplossing gebruikt verschillende klassen en overerving,

Nadere informatie

De Leidsche Flesch Studievereniging voor Natuurkunde, Sterrenkunde, Wiskunde en Informatica sinds DLF Pointerworkshop

De Leidsche Flesch Studievereniging voor Natuurkunde, Sterrenkunde, Wiskunde en Informatica sinds DLF Pointerworkshop DLF Pointerworkshop Opgaven 2 maart 2016 XKCD # 371 In dit document staan een aantal oude tentamenopgaven om te oefenen voor het hertentamen PR Bij de selectie is rekening gehouden met de opgaven die het

Nadere informatie

Practicumopgave 3: SAT-solver

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

Modelleren en Programmeren

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

9. Strategieën en oplossingsmethoden

9. Strategieën en oplossingsmethoden 9. Strategieën en oplossingsmethoden In dit hoofdstuk wordt nog even terug gekeken naar alle voorgaande hoofdstukken. We herhalen globaal de structuren en geven enkele richtlijnen voor het ontwerpen van

Nadere informatie

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

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

Tree traversal. Bomen zijn overal. Ferd van Odenhoven. 15 november 2011

Tree traversal. Bomen zijn overal. Ferd van Odenhoven. 15 november 2011 15 november 2011 Tree traversal Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 15 november 2011 ODE/FHTBM Tree traversal 15 november 2011 1/22 1 ODE/FHTBM Tree

Nadere informatie

NAAM: Programmeren 1 Examen 29/08/2012

NAAM: Programmeren 1 Examen 29/08/2012 Programmeren 29 augustus 202 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet je

Nadere informatie

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10 CPP 1 van 10 ADSdt 1-2009 TENTAMENVOORBLAD Voor aanvang van het tentamen s.v.p. de tentamengegevens goed doorlezen om eventuele misverstanden te voorkomen!! Naam student : Studentnummer : Groep : Studieonderdeel

Nadere informatie

software constructie recursieve datastructuren college 15 5 stappen plan ontwerpen de software bestaat uiteindelijk uit datatypen functies

software constructie recursieve datastructuren college 15 5 stappen plan ontwerpen de software bestaat uiteindelijk uit datatypen functies software constructie recursieve datastructuren college 15 software engineering highlights 1 de software bestaat uiteindelijk uit datatypen functies verbindingen geven gebruik aan main is de top van het

Nadere informatie

Algoritmiek. 2 februari Introductie

Algoritmiek. 2 februari Introductie College 1 Algoritmiek 2 februari 2017 Introductie 1 Introductie -1- docent: Rudy van Vliet rvvliet@liacs.nl assistent werkcollege: Bart van Strien bartbes@gmail.com website: http://www.liacs.leidenuniv.nl/~vlietrvan1/algoritmiek/

Nadere informatie

Informatica: C# WPO 10

Informatica: C# WPO 10 Informatica: C# WPO 10 1. Inhoud 2D arrays, lijsten van arrays, NULL-values 2. Oefeningen Demo 1: Fill and print 2D array Demo 2: Fill and print list of array A: Matrix optelling A: Matrix * constante

Nadere informatie

public boolean equaldates() post: returns true iff there if the list contains at least two BirthDay objects with the same daynumber

public boolean equaldates() post: returns true iff there if the list contains at least two BirthDay objects with the same daynumber Tentamen TI1310 Datastructuren en Algoritmen, 15 april 2011, 9.00-12.00 TU Delft, Faculteit EWI, Basiseenheid Software Engineering Bij het tentamen mag alleen de boeken van Goodrich en Tamassia worden

Nadere informatie

extra oefening algoritmiek - antwoorden

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

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 13 december 2013 Terugblik Fibonacci public class Fibonacci { public static void main(string[] args) { // Print het vijfde Fibonaccigetal System.out.println(fib(5));

Nadere informatie

Planning. 1. Mini College. 2. Introductiecursus Imperatief Programmeren. 3. Crash and Compile (vanaf 17:00 uur)

Planning. 1. Mini College. 2. Introductiecursus Imperatief Programmeren. 3. Crash and Compile (vanaf 17:00 uur) Planning 1. Mini College 2. Introductiecursus Imperatief Programmeren 3. Crash and Compile (vanaf 17:00 uur) Geschiedinis van de Codemonkeys imperatief programmeren voor beginners Geschiedenis van de Codemonkey

Nadere informatie

Tiende college algoritmiek. 14 april Dynamisch Programmeren, Gretige Algoritmen, Kortste Pad met BFS

Tiende college algoritmiek. 14 april Dynamisch Programmeren, Gretige Algoritmen, Kortste Pad met BFS Algoritmiek 2016/Dynamisch Programmeren Tiende college algoritmiek 14 april 2016 Dynamisch Programmeren, Gretige Algoritmen, Kortste Pad met BFS 1 Algoritmiek 2016/Dynamisch Programmeren Houtzaagmolen

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

Tentamen Programmeren in C (EE1400)

Tentamen Programmeren in C (EE1400) TU Delft Tentamen Programmeren in C (EE1400) 5 april 2012, 9.00 12.00 Faculteit EWI - Zet op elk antwoordblad je naam en studienummer. - Beantwoord alle vragen zo nauwkeurig mogelijk. - Wanneer C code

Nadere informatie

Objectgericht Programmeren. (in Python)

Objectgericht Programmeren. (in Python) Objectgericht Programmeren (in Python) Motivatie Programmeren is moeilijk Waarom? Complexiteit 100 200 300 400 500 kloc (1000 lijnen code) g1 = raw_input("eerste getal?") g2 = raw_input("tweede getal?")

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

Negende college algoritmiek. 15 april Dynamisch Programmeren

Negende college algoritmiek. 15 april Dynamisch Programmeren Negende college algoritmiek 15 april 2016 Dynamisch Programmeren 1 algemeen Uit college 8: DP: - nuttig bij problemen met overlappende deelproblemen - druk een oplossing van het probleem uit in oplossingen

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

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

Deze actie kadert binnen het project SOLABIO-'Soorten en landschappen als dragers voor biodiversiteit', mede gefinancierd door het Europees programma

Deze actie kadert binnen het project SOLABIO-'Soorten en landschappen als dragers voor biodiversiteit', mede gefinancierd door het Europees programma !"#" $% #!&'!()!!$% *!$ + ), -!. /!& $ 0 ( 1 & & $ $ 1 ( #!& #!& #!& &% 2/3*""4 $$%/"32"4 5 ) 66 &. ) #!& ) 7 &, 89 8.9,7 !!:%$ " # $ # % $ & $ ;!!! $!:%$ 1!!! 0 0!!! ;, *!$ *!# + ; *! *!* *!-

Nadere informatie

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag u gebruik maken van: Barnes, Object-Oriented Programming with Java en de Notitie Algoritmiek

Nadere informatie

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren Universiteit van Amsterdam FNWI Voorbeeld van tussentoets Inleiding programmeren Opgave 1: Wat is de uitvoer van dit programma? public class Opgave { static int i = 0 ; static int j = 1 ; int i = 1 ; int

Nadere informatie

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN Onderdeel van SmartProducts INHOUD COLLEGE 3 Scope van variabelen {3.9} Class ontwerpen en maken,

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

2 Recurrente betrekkingen

2 Recurrente betrekkingen WIS2 1 2 Recurrente betrekkingen 2.1 Fibonacci De getallen van Fibonacci Fibonacci (= Leonardo van Pisa), 1202: Bereken het aantal paren konijnen na één jaar, als 1. er na 1 maand 1 paar pasgeboren konijnen

Nadere informatie

sheets Programmeren 2 Java Recursie, de muis en graphics Walter Kosters http://www.liacs.nl/home/kosters/java/

sheets Programmeren 2 Java Recursie, de muis en graphics Walter Kosters http://www.liacs.nl/home/kosters/java/ sheets Programmeren 2 Java Recursie, de muis en graphics Walter Kosters http://www.liacs.nl/home/kosters/java/ 1 Java intro Voorkennis: dat wat bij het college Programmeren 1 over Java behandeld is; zie

Nadere informatie

Een typisch programma in C en C++ bestaat uit een aantal onderdelen:

Een typisch programma in C en C++ bestaat uit een aantal onderdelen: Eerste stappen in C. Een typisch programma in C en C++ bestaat uit een aantal onderdelen: /* Alles wat op meerdere lijnen staat zoals hier is commentaar. */ // Dit is commentaar op 1 lijn. Geldig tot einde

Nadere informatie

Tentamen in2705 Software Engineering

Tentamen in2705 Software Engineering Tentamen in2705 Software Engineering Voorbeeld (bijna tweemaal te groot) U mag meenemen naar dit tentamen: Lethbridge, afdrukken PPT slides, afdrukken handouts. 1. De TU wil een nieuw systeem ontwikkelen

Nadere informatie

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur 1. deze opgave telt voor 30% van het totaal. Schrijf een compleet programma, dat door de gebruiker vanaf

Nadere informatie

Hoofdstuk!7!Kortste!paden!

Hoofdstuk!7!Kortste!paden! oofdstukkortstepaden oofdstukkortstepaden In een gewogen graaf is men soms geïnteresseerd in het kortste pad tussen twee punten: dat is een pad, waarbij de som van de gewichten zo klein mogelijk is..inleiding

Nadere informatie

Tiende college algoritmiek. 26 april Gretige algoritmen

Tiende college algoritmiek. 26 april Gretige algoritmen Algoritmiek 01/10 College 10 Tiende college algoritmiek april 01 Gretige algoritmen 1 Algoritmiek 01/10 Muntenprobleem Gegeven onbeperkt veel munten van d 1,d,...d m eurocent, en een te betalen bedrag

Nadere informatie

Derde college algoritmiek. 23 februari Toestand-actie-ruimte

Derde college algoritmiek. 23 februari Toestand-actie-ruimte College 3 Derde college algoritmiek 23 februari 2012 Toestand-actie-ruimte 1 BZboom: verwijderen 60 20 80 10 40 70 100 1 15 30 75 5 25 35 100 verwijderen = 60 20 80 10 40 70 1 15 30 75 5 25 35 verwijderen

Nadere informatie

Elke groep van 3 leerlingen heeft een 9 setje speelkaarten nodig: 2 t/m 10, bijvoorbeeld alle schoppen, of alle harten kaarten.

Elke groep van 3 leerlingen heeft een 9 setje speelkaarten nodig: 2 t/m 10, bijvoorbeeld alle schoppen, of alle harten kaarten. Versie 16 januari 2017 Sorteren unplugged Sorteren gebeurt heel veel. De namen van alle leerlingen in de klas staan vaak op alfabetische volgorde. De wedstrijden van een volleybal team staan op volgorde

Nadere informatie

n-queens Local Search met Conflict Minimalizatie

n-queens Local Search met Conflict Minimalizatie n-queens Local Search met Conflict Minimalizatie Efficient Local Search with Conflict Minimalization: A Case Study of the n-queens Problem, door Rok Sosič en Jun Gu. Sjoerd van Egmond svegmond@liacs.nl

Nadere informatie

Week 1 20-02-2013. Hier vind je uitwerkingen van enkele opgaven uit het dictaat Grafen: Kleuren en Routeren.

Week 1 20-02-2013. Hier vind je uitwerkingen van enkele opgaven uit het dictaat Grafen: Kleuren en Routeren. Combinatorische Optimalisatie, 2013 Week 1 20-02-2013 Hier vind je uitwerkingen van enkele opgaven uit het dictaat Grafen: Kleuren en Routeren. Opgave 1.16 Bewijs dat elke graaf een even aantal punten

Nadere informatie

Programmeren A. Genetisch Programma voor het Partitie Probleem. begeleiding:

Programmeren A. Genetisch Programma voor het Partitie Probleem. begeleiding: Programmeren A Genetisch Programma voor het Partitie Probleem begeleiding: Inleiding Het Partitie Probleem luidt als volgt: Gegeven een verzameling van n positieve integers, vindt twee disjuncte deelverzamelingen

Nadere informatie

9 Meer over datatypen

9 Meer over datatypen 9 Meer over datatypen We hebben al gezien dat het gebruik van symbolische constanten de leesbaarheid van een programma kan verbeteren. Door een geschikte naam (identifier) voor een constante te definiëren,

Nadere informatie

Algoritmisch Denken: Dodo s Bit Parity

Algoritmisch Denken: Dodo s Bit Parity Algoritmisch Denken: Dodo s Opdrachtomschrijving: Jouw opdracht, als je deze accepteert, is om Mimi (een Dodo) te leren een bit parity fout te ontdekken en te herstellen. Leerdoelen: Ik kan een correct

Nadere informatie

Kunstmatige Intelligentie (AI) Hoofdstuk van Russell/Norvig = [RN] Genetische algoritmen. voorjaar 2016 College 11, 3 mei 2016

Kunstmatige Intelligentie (AI) Hoofdstuk van Russell/Norvig = [RN] Genetische algoritmen. voorjaar 2016 College 11, 3 mei 2016 AI Kunstmatige Intelligentie (AI) Hoofdstuk 4.1.4 van Russell/Norvig = [RN] Genetische algoritmen voorjaar 2016 College 11, 3 mei 2016 www.liacs.leidenuniv.nl/ kosterswa/ai/ 1 Introductie Er zijn allerlei

Nadere informatie

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double. Algemeen C# Variabele Een variabele is een willekeurige waarde die word opgeslagen. Een variabele heeft altijd een datetype ( De soort waarde die een variabele bevat). Datatypes Een datatype is de sort

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

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

4EE11 Project Programmeren voor W. College 3, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

4EE11 Project Programmeren voor W. College 3, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 4EE11 Project Programmeren voor W College 3, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 1 Onderwerpen Grotere programma s ontwerpen/maken Datastructuren en algoritmes 2 Evolutie,

Nadere informatie

Magidoku s en verborgen symmetrieën

Magidoku s en verborgen symmetrieën Uitwerking Puzzel 92-6 Magidoku s en verborgen symmetrieën Wobien Doyer Lieke de Rooij Een Latijns vierkant van orde n, is een vierkante matrix, gevuld met n verschillende symbolen waarvan elk precies

Nadere informatie

Verzamelingen, Lijsten, Functioneel Programmeren

Verzamelingen, 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 informatie

WISKUNDE B -DAG 2002 1+ 1 = 2. maar en hoe nu verder? 29 november 2002

WISKUNDE B -DAG 2002 1+ 1 = 2. maar en hoe nu verder? 29 november 2002 - 0 - WISKUNDE B -DAG 2002 1+ 1 = 2 maar en hoe nu verder? 29 november 2002 De Wiskunde B-dag wordt gesponsord door Texas Instruments - 1 - Inleiding Snel machtverheffen Stel je voor dat je 7 25 moet uitrekenen.

Nadere informatie

Informatica. Deel II & III: les 5. Basis- & slimme algoritmen. Jan Lemeire Informatica deel II & III februari mei Parallel Systems: Introduction

Informatica. Deel II & III: les 5. Basis- & slimme algoritmen. Jan Lemeire Informatica deel II & III februari mei Parallel Systems: Introduction Informatica Deel II & III: les 5 Basis- & slimme algoritmen Jan Lemeire Informatica deel II & III februari mei 2016 Parallel Systems: Introduction Oefening Iets met een functie public class IetsMetFunctie

Nadere informatie

Sommige praktische IP problemen kunnen worden geformuleerd als optimalisering op een netwerk.

Sommige praktische IP problemen kunnen worden geformuleerd als optimalisering op een netwerk. Netwerkanalyse (H3) Sommige praktische IP problemen kunnen worden geformuleerd als optimalisering op een netwerk. Deze problemen kunnen vaak als continu LP probleem worden opgelost. Door de speciale structuur

Nadere informatie

Tiende college algoritmiek. 13/21 april Gretige Algoritmen Algoritme van Dijkstra

Tiende college algoritmiek. 13/21 april Gretige Algoritmen Algoritme van Dijkstra Algoritmiek 017/Gretige Algoritmen Tiende college algoritmiek 13/1 april 017 Gretige Algoritmen Algoritme van Dijkstra 1 Algoritmiek 017/Gretige Algoritmen Muntenprobleem Gegeven onbeperkt veel munten

Nadere informatie

X. Grafische elementen

X. Grafische elementen X. Grafische elementen Om u te helpen bij grafische voorstellingen heeft java een aantal grafische afbeeldingen die u kunt gebruiken. Meestal worden zij in de methode paint(graphics g) geplaatst. Zij moeten

Nadere informatie

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

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

Nadere informatie

Kunstmatige Intelligentie (AI) Hoofdstuk 6 van Russell/Norvig = [RN] Constrained Satisfaction Problemen (CSP s) voorjaar 2015 College 7, 31 maart 2015

Kunstmatige Intelligentie (AI) Hoofdstuk 6 van Russell/Norvig = [RN] Constrained Satisfaction Problemen (CSP s) voorjaar 2015 College 7, 31 maart 2015 AI Kunstmatige Intelligentie (AI) Hoofdstuk 6 van Russell/Norvig = [RN] Constrained Satisfaction Problemen (CSP s) voorjaar 2015 College 7, 31 maart 2015 www.liacs.leidenuniv.nl/ kosterswa/ai/ 1 Introductie

Nadere informatie

Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft

Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit

Nadere informatie

Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 3 juni 2008, uur

Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 3 juni 2008, uur Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 3 juni 2008, 10.00 13.00 uur Opgave 1. a. Een toestand is hier een m bij n bord met voor elk vakje aangegeven of het leeg is, óf een witte steen bevat

Nadere informatie

dynamic programming recursieve datastructuren college 11 Fibonacci met tabel

dynamic programming recursieve datastructuren college 11 Fibonacci met tabel dynamic programming recursieve datastructuren college 11 dynamic programming onthouden of opnieuw berekenen? idee: onthoud tussenresultaten van de berekingen om herhaald uitrekenen te voorkomen hier vooral

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

datastructuren college 13

datastructuren college 13 datastructuren college 13 GUI deel 2 1 events for the GUI een event is iedere voor het programma van buiten komende gebeurtenis muis knop in, nog steeds in, los, bewogen... het GUI-systeem doet veel werk

Nadere informatie

Online c++ leren programmeren:

Online c++ leren programmeren: Online c++ leren programmeren: Inhoud 1)Waar vind ik een c++ compiler?... 2 2)Hoe start ik een programma in c++?... 2 3)Een eerste c++ programma:... 3 Een eerste programma schrijven:... 3 Mijn eerste programma

Nadere informatie

Algoritmen, Datastructuren en Complexiteit ( en ) Uitwerkingen

Algoritmen, Datastructuren en Complexiteit ( en ) Uitwerkingen Universiteit Twente 2009-2010/2 Afdeling Informatica, Faculteit EWI Tentamen dinsdag 19 januari 2010, 8.45-12.15 Algoritmen, Datastructuren en Complexiteit (214020 en 214025) Uitwerkingen Bij dit tentamen

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

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010 Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar 2009-2010 16 juni, 2010 **BELANGRIJK** 1. Lees eerst de volledige opgave (inclusief

Nadere informatie

Elfde college algoritmiek. 21 april Dijkstra en Branch & Bound

Elfde college algoritmiek. 21 april Dijkstra en Branch & Bound Algoritmiek 011/11 College 11 Elfde college algoritmiek 1 april 011 Dijkstra en Branch & Bound 1 Algoritmiek 011/11 Kortste paden Gegeven een graaf G met gewichten op de takken, en een beginknoop s. We

Nadere informatie

Tree traversal. Ferd van Odenhoven. 15 november Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering. Doorlopen van bomen

Tree traversal. Ferd van Odenhoven. 15 november Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering. Doorlopen van bomen Tree traversal Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 15 november 2011 ODE/FHTBM Tree traversal 15 november 2011 1/22 1 ODE/FHTBM Tree traversal 15 november

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

Elfde college algoritmiek. 16 mei Dijkstra, Gretige algoritmen en Branch & Bound

Elfde college algoritmiek. 16 mei Dijkstra, Gretige algoritmen en Branch & Bound Algoritmiek 013/11 College 11 Elfde college algoritmiek 1 mei 013 Dijkstra, Gretige algoritmen en Branch & Bound 1 Algoritmiek 013/11 Voorbeeld -1- A B C D E F G H 9 7 5 A B C D E F G H 0 9 9 7 5 A B C

Nadere informatie

Inleiding tot Func.oneel Programmeren les 3

Inleiding tot Func.oneel Programmeren les 3 Inleiding tot Func.oneel Programmeren les 3 Kris Luyten, Jo Vermeulen {kris.luyten,jo.vermeulen}@uhasselt.be Exper.secentrum voor Digitale Media Universiteit Hasselt Currying Currying: een func.e met meerdere

Nadere informatie

Overzicht. Inleiding. Toepassingen. Verwante problemen. Modellering. Exacte oplosmethode: B&B. Insertie heuristieken. Local Search

Overzicht. Inleiding. Toepassingen. Verwante problemen. Modellering. Exacte oplosmethode: B&B. Insertie heuristieken. Local Search Overzicht Inleiding Toepassingen Verwante problemen Modellering Exacte oplosmethode: B&B Insertie heuristieken Local Search Handelsreizigersprobleem 1 Cyclische permutatie van steden b 3 77 a 93 21 42

Nadere informatie

Informatica 2e semester

Informatica 2e semester Informatica Les 5 Basis- & slimme algoritmen Jan Lemeire Informatica 2 e semester februari mei 2017 Vandaag 1. Iets met functie 2. Interfaces en abstracte klasses 3. Newton s algoritme 4. Oefening op interfaces

Nadere informatie

Lineaire data structuren. Doorlopen van een lijst

Lineaire data structuren. Doorlopen van een lijst Lineaire data structuren array: vast aantal data items die aaneensluitend gestockeerd zijn de elementen zijn bereikbaar via een index lijst: een aantal individuele elementen die met elkaar gelinkt zijn

Nadere informatie

REEKS I. Zaterdag 6 november 2010, 9u

REEKS I. Zaterdag 6 november 2010, 9u TEST INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCHAPPEN - ACADEMIEJAAR 2010-2011 REEKS I Zaterdag 6 november 2010, 9u NAAM :... VRAAG 1: MINSTENS [5 PUNTEN] Schrijf een methode minstens(), met twee

Nadere informatie

De wiskunde en het programmeren van Sudoku s

De wiskunde en het programmeren van Sudoku s De wiskunde en het programmeren van Sudoku s Evert van de Vrie Open Universiteit Nederland 8 1 3 5 7 2 6 2 4 5 1 7 9 4 3 2 9 6 3 8 1 4 5 9 Workshop 4 1 Onderwerpen Korte historie Oplosmethoden Wiskunde

Nadere informatie

10 Meer over functies

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

Sudoku s en Wiskunde

Sudoku s en Wiskunde Non impeditus ab ulla scientia Sudoku s en Wiskunde K. P. Hart 3 februari, 2006 Programma Tellen Makkelijk, medium, moeilijk Hoeveel zaadjes? Een miljoen dollar verdienen? Puzzels Tellen Vooralsnog onbegonnen

Nadere informatie

Stel dat u 15 tellers nodig heeft. Dat kunt u een array van tellers als volgt declareren:

Stel dat u 15 tellers nodig heeft. Dat kunt u een array van tellers als volgt declareren: V. Arrays A. Wat zijn arrays? Een array is een verzameling van variabelen. Ze hebben allen dezelfde naam en hetzelfde type. Men kan ze van elkaar onderscheiden door een volgnummer, index genoemd. Enkele

Nadere informatie

Een gelinkte lijst in C#

Een gelinkte lijst in C# Een gelinkte lijst in C# In deze tutorial ga demonstreren hoe je een gelinkte lijst kan opstellen in C#. We gaan een klasse schrijven, die een gelijkaardige functionaliteit heeft als een ArrayList, namelijk

Nadere informatie

Cursus Algoritmiek - - - najaar 2005

Cursus Algoritmiek - - - najaar 2005 Cursus Algoritmiek - - - najaar 2005 Practicumopdracht 4 : werken met kale gegevensbestanden 1. Achtergrond In de 2 e en de 3 e practicumopdracht heb je al kennis gemaakt met het via het toetsenbord laten

Nadere informatie

Programmeren met Arduino-software

Programmeren met Arduino-software Programmeren met Arduino-software De software waarin we programmeren is Arduino IDE. Deze software is te downloaden via www.arduino.cc. De programmeertaal die hier gebruikt wordt, is gebaseerd op C en

Nadere informatie

continue in een for, while of do lus herhaalt de lus vroegtijdig. De volgende herhaling wordt onmiddellijk begonnen.

continue in een for, while of do lus herhaalt de lus vroegtijdig. De volgende herhaling wordt onmiddellijk begonnen. Hoofdstuk 3: controlestructuren instructies en blokken Naar elke instructie staat een ; Instructies worden door de haakjes {} in een block samengevat. if else if ( expression) statement1; else statement2;

Nadere informatie

7 Omzetten van Recursieve naar Iteratieve Algoritmen

7 Omzetten van Recursieve naar Iteratieve Algoritmen 7 Omzetten van Recursieve naar Iteratieve Algoritmen Het lijkt mogelijk om elke oplossings-algoritme, die vaak in eerste instantie recursief geformuleerd werd, om te zetten in een iteratieve algoritme

Nadere informatie

compileren & interpreteren - compileren: vertalen (omzetten) - interpreteren: vertolken

compileren & interpreteren - compileren: vertalen (omzetten) - interpreteren: vertolken compileren & interpreteren - compileren: vertalen (omzetten) - interpreteren: vertolken - belangrijkste punten: - ontleden van de programmatekst - bijhouden van de datastructuren Data Structuren en Algoritmen

Nadere informatie

Het minimale aantal sleutels op niveau h is derhalve

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

Nadere informatie

Uitwerkingen Sum of Us

Uitwerkingen Sum of Us Instant Insanity Uitwerkingen Sum of Us Opgave A: - Opgave B: Voor elk van de vier kubussen kun je een graaf maken die correspondeert met de desbetreffende kubus. Elk van deze grafen bevat drie lijnen.

Nadere informatie