Programmeren A. Genetisch Programma voor het Partitie Probleem. begeleiding:
|
|
|
- Hidde de Wit
- 8 jaren geleden
- Aantal bezoeken:
Transcriptie
1 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 waarvan de vereniging weer de originele verzameling is èn zodat de som van de elementen van de ene deelverzameling gelijk is aan de som van de elementen van de andere deelverzameling. Een voorbeeld van dit probleem is een blokkendoos met daarin een aantal blokken die allemaal een bepaalde hoogte hebben. Zijn er nu van de blokken twee even hoge torens te bouwen zonder dat er een blok overblijft? Dit probleem lijkt niet echt bijzonder, maar tot nu toe heeft nog nooit iemand er een efficiënt algoritme voor bedacht dat altijd het juiste resultaat geeft. In deze opdracht gaan we een speciaal algoritme voor dit probleem ontwerpen. Het algoritme is speciaal, omdat a. het geheel anders werkt dan de algoritmen die je tot nu toe bij programmeren A hebt gehad, en b. het in somige gevallen niet eindigt. Het algoritme werkt globaal als volgt. Er wordt een aantal start-oplossingen gegokt. Vervolgens worden er wat oplossingen veranderd volgens twee hieronder omschreven principes. Daarna worden enkele minder goede oplossingen vervangen door betere oplossingen. Dan wordt er gekeken of er een oplossing bij zit die optimaal is (twee even hoge torens) en als dat niet het geval is herhaalt dit proces zich. Genetische Algoritmen Mensen die bekend zijn met de evolutie-theorie van Darwin herkennen hierboven misschien een soort evolutie. Dit is goed mogelijk, want de bedenkers van dit 1
2 soort algoritmen hebben Darwins evolutie theorie als uitgangspunt genomen. Men noemt deze algoritmen dan ook genetische algoritmen. Bij genetische algoritmen worden (mogelijke) oplossingen voorgesteld als chromosomen. Een chromosoom is een rijtje genen die allemaal een bepaalde waarde hebben. Een verzameling chromosomen noemt men ook wel een generatie. De evolutie is nu een proces waarin de éne generatie uit de andere ontstaat door kleine veranderingen van de chromosomen en door vervanging van minder goede chromosomen door betere chromosomen (survival of the fittest). Het idee is nu een generatie van chromosomen (= oplossingen) te laten evolueren om zo steeds betere chromosomen te krijgen. Uiteindelijk kan dan een chromosoom gevonden worden die een geschikte oplossing representeert voor het betreffende probleem. Chromosomen, mutaties en cross-overs Een chromosoom kan op twee manieren veranderen. We zullen dit laten zien door middel van voorbeelden. Stel een chromosoom bestaat uit 6 genen en elk gen heeft de waarde 0 of een 1. Dan is een voorbeeld van een chromosoom. De eerste manier om een chromosoom te veranderen is door middel van eenmutatie. Een mutatie houdt in dat één of meerdere genen van het chromosoom een andere waarde krijgen, ofwel, gemuteerd worden. Stel dat het 1 e en 4 e gen van een andere waarde krijgen. Het resultaat is dan: Merk op dat iets anders niet mogelijk is, want elk gen heeft de waarde 0 of 1. Als de genen van een chromosoom meer dan twee mogelijke waarden hebben, dan moet ook de nieuwe waarde van het gen, al dan niet willekeurig, bepaald worden. In deze opgave zullen we alleen met chromosomen werken waarvan de genen òf de éne waarde òf de andere waarde hebben. Genen zijn in deze opgave dus tweewaardig. De tweede manier waarop chromosomen kunnen veranderen is door middel van een cross-over. Als twee chromosomen en volgens het crossover principe veranderen kan het resultaat bestaan uit de chromosomen: en In dit geval is de eerste helft van gecombineerd met de tweede helft van en andersom. Echter, het hoeft niet zo te zijn dat het punt waar de chromosomen gesplitst worden precies op de helft van de chromosomen ligt. Een ander resultaat van een cross-over zou dus kunnen zijn: en Nu zijn de chromosomen na het eerste gen gesplitst. Het is mogelijk de chromosomen op meerdere plaatsten te kruisen, maar wij zullen deze mogelijkheid buiten beschouwing laten. De datastructuren Omdat genen tweewaardig zijn zullen we chromosomen gebruiken waarin elk gen 2
3 een boolean is. De constante aantal_blokken geeft aan hoeveel blokken er in de verzameling zitten. De verzameling blokken wordt gerepresenteerd door een array van integers. Element i van dit array geeft de hoogte van blok i. Elk chromosoom heeft voor elk blok een gen en is dus een array ter lengte aantal_blokken. Voor de duidelijkheid definiëren we een constante chrom_lengte die de lengte van een chromosoom voorstelt, dus chrom_lengte = aantal_blokken. Een generatie bestaat uit pop_grootte (populatie grootte) chromosomen. pop_grootte is ook een constante en een generatie is dus een array ter lengte pop_grootte van chromosomen. We krijgen zo de volgende declaraties: const aantal_blokken = 20; {aatal blokken in de invoer verzameling} chrom_lengte = aantal_blokken; {lengte van een chromosoom } pop_grootte = 10; {aantal chromosomen in een generatie } type blokken_rij = array [1..aantal_blokken] of integer; chromosoom = array [1..chrom_lengte] of boolean; generatie = array [1..pop_grootte] of chromosoom; Random getallen Voordat we aan de implementatie kunnen beginnen, moeten we eerst nog een manier hebben om willekeurige getallen te genereren. Dit is nodig, omdat zowel bij een mutatie als bij een cross-over een willekeurige positie in de chromosomen moet worden bepaald. We gebruiken hiervoor de volgende function: function random(i: integer): integer; { Deze function levert een random integer op uit het interval [0..i- 1]. De globale variabele random_int wordt bij elke aanroep aangepast. } const modulus = 65536; factor = 25173; toename = 13849; begin random := (random_int div (modulus div i)) mod i; random_int := (factor*random_int + toename) mod modulus; end; (* random *) Om deze function te gebruiken in je programma moet je het volgende doen: 3
4 1. Een globale variabele random_int van het type integer declareren. 2. De function copiëren in je programma. 3. De variabele random_int een initiële waarde geven, voordat je de function random voor het eerst aanroept. De getallen die de function random oplevert, zijn niet echt willekeurig. We spreken dan ook van een pseudo-random generator. De resultaten van random zijn te beïnvloeden door de initiële waarde van random_int. Opgave 1 Schrijf een procedure die de hoogtes van de blokken inleest. Er mag vanuit worden gegaan dat er precies aantal_blokken hoogtes ingevoerd worden. De procedure heeft een blokken_rij als parameter. In deze rij moeten de ingelezen hoogtes komen te staan. Merk op dat een hoogte een positief getal moet zijn! Opgave 2 Schrijf een procedure die een chromosoom een willekeurige waarde geeft. Gebruik hiervoor de gegeven function, random. Deze function geeft een willekeurige integer als resultaat. Bedenk zelf een geschikte manier om van zo n integer een boolean te maken. Opgave 3 Schrijf een procedure die één willekeurig gen van een chromosoom muteert. Gebruik hiervoor weer de random-function. Schrijf ook een procedure die twee chromosomen op een willekeurige plaats kruist en zo een cross-over uitvoert. Een chromosoom representeert dus twee deelverzamelingen blokken. Noem deze verzamelingen T en F. De verzameling T bestaat uit de blokken waarvoor het corresponderende gen true is. De verzameling F bestaat uit de blokken waarvoor het corresponderende gen false is. De hoogte van de toren van verzameling T wordt nu berekend door de hoogtes van de blokken waarvoor het corresponderende gen true is te sommeren. De hoogte van de toren van verzameling F wordt op een analoge manier berekend. Opgave 4 Schrijf de function: function hoogte_toren(ch: chromosoom; b: boolean): integer; 4
5 { Deze function geeft de hoogte van de toren van verzameling T van ch als b = true en van F van ch als b = false. } Naast mutaties en cross-overs speelt er nog een ander principe een rol in de evolutie. Dit principe staat wel bekend onder de naam natuurlijke selectie. De bedoeling hiervan is dat sterkere chromosomen meer kans hebben te overleven dan zwakkere chromosomen. Bij ons probleem is een chromosoom sterker dan een ander chromosoom als het hoogteverschil tussen de T- en de F-toren van het chromosoom kleiner is dan het hoogteverschil tussen de T- en F-toren van het andere chromosoom. Opgave 5 Schrijf een function die gegeven een chromosoom het hoogteverschil tussen de T- en F-toren van dit chromosoom berekent. Hiervoor kan de function uit opgave 4 gebruikt worden, maar het is mogelijk een efficiëntere procedure te schrijven. Opgave 6 Als voor een chromosoom het hoogteverschil 0 is, is dat chromosoom een optimale oplossing voor het partitie probleem. Minder goede oplossingen zijn chromosomen met grotere hoogteverschillen. Een sterk chromosoom heeft dus een kleiner hoogteverschil dan een zwak chromosoom. Schrijf nu een function die de sterkte van een chromosoom geeft. We zijn nu al een eind op weg naar het uiteindelijke programma. We moeten nu alleen nog voor het volgende zorgen: Een nieuwe generatie maken van een oude generatie. Een selectie-mechanisme toevoegen, zodat zwakkere chromosomen verwijderd worden en sterkere verdubbeld. De evolutie simuleren. Een manier om het sterkste chromosoom in een generatie te bepalen, zodat gecontroleerd kan worden of er twee even hoge torens gevonden zijn. Een procedure die het uiteindelijke resultaat op een begrijpelijke manier afdrukt. 5
6 Wat betreft het maken van een nieuwe generatie waarschuwen we er voor dat de nieuwe generatie niet te veel moet afwijken van de oude. Hierdoor kan het namelijk zo zijn dat er naast de zwakke chromosomen ook veel sterke chromosomen verdwijnen. Het aantal cross-overs en mutaties moet dus niet te hoog zijn. Een mogelijke manier om te selecteren is: zoek de twee sterkste chromosomen en de twee zwakste en vervang de twee zwakste chromosomen door de sterkste twee. Een manier die minder gericht is op de aller sterkste is: kies twee paar chromosomen (willekeurig) en verdubbel van elk paar de sterkste ten koste van de zwakste. Deze laatste manier is enigszins te vergelijken met levende organismen. Wanneer twee organismen elkaar tegen komen, zal de sterkste van de twee de ander kunnen doden... De evolutie bestaat uit het afwisselen van de ene generatie chromosomen door de andere generatie. We kunnen het evolutie proces in een aantal stappen weergeven: 1. Maak nieuwe generatie, door middel van mutaties en cross-overs. 2. Voer selectie uit op nieuwe generatie. 3. Controleer of het sterkste chromosoom de gezochte oplossing is. 4. Zo nee, dan stap 1, zo ja, dan klaar. De evolutie stopt dus als er een optimaal chromosoom gevonden is. We kunnen echter een beetje soepeler zijn en de evolutie al laten stoppen als er een chromosoom gevonden is waarvan het hoogteverschil een bepaalde kleine waarde heeft, bijvoorbeeld 3 of minder. Dit is soms nodig, want er zijn verzamelingen blokken waarmee het niet mogelijk is twee even hoge torens te bouwen. Uiteindelijk geeft het evolutie-algoritme een resultaat. Dit is in eerste instantie een chromosoom. We willen echter een partitie van de verzameling blokken. Bedenk dus een manier om gegeven zo n chromosoom de verzamelingen T en F van dit chromosoom netjes af te drukken. Geef bij elke verzameling ook aan wat de hoogte is van de toren van die verzameling. Opgave 7 Schrijf nu een genetisch programma voor het partitie probleem. Test je programma met verschillende verzamelingen blokken. Probeer ook te onderzoeken wat het effect is van het aantal mutaties/cross-overs dat per evolutie-stap uitgevoerd wordt. 6
7 Beoordeling Het programma wordt beoordeeld op de werking, correctheid en efficiëntie van de algoritmen, duidelijkheid van de algoritmen, I/O en vooral ook op de leesbaarheid van de programmatekst. Naast de programmatekst moet ook voorbeeld invoer- en uitvoer ingeleverd worden. 7
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.
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
Examen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2016 2017, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele
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
Hoofdstuk 6: Zelf functies maken
Programmeren in Microsoft Visual Basic 6.0, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Marnix Gymnasium Rotterdam, januari 2004 Hoofdstuk 6: Zelf functies maken 6.0 Leerdoel
Genetische algoritmen in Java met JGAP
Genetische algoritmen in Java met JGAP Inleiding JGAP, uitgesproken als "jee-gep", is een framework voor het implementeren van genetische algoritmen en het gebruik ervan in Java. Genetische algoritmen
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
Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft
I ' Tentamen Objectgeorienteerd Programmeren TI 1200 1 februari 2012 9.00-12.00 Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit
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
{ auteur, toelichting }
Programmeren Blok A Trilogie van (programmeer)talen http://www.win.tue.nl/ wstomv/edu/ip0/ College Syntaxis (vormleer): Hoe ziet t eruit, hoe schrijf je t? Tom Verhoeff Technische Universiteit Eindhoven
Onafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms
Onafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms Giso Dal (0752975) Pagina s 5 7 1 Deelverzameling Representatie
Hoofdstuk 7: Werken met arrays
Programmeren in Microsoft Visual Basic 6.0, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Marnix Gymnasium Rotterdam, januari 2004 Hoofdstuk 7: Werken met arrays 7.0 Leerdoel
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
Hoofdstuk 6: Zelf functies maken
Programmeren in Microsoft Visual Basic 2010 Express, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Vespucci College, Marnix Gymnasium Rotterdam, december 2011 Hoofdstuk
OEFENINGEN PYTHON REEKS 6
OEFENINGEN PYTHON REEKS 6 1. A) Schrijf een functie die een getal x en een getal y meekrijgt. De functie geeft de uitkomst van volgende bewerking als returnwaarde terug: x y x als x y x y y als x < y B)
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:
II. ZELFGEDEFINIEERDE FUNCTIES
II. ZELFGEDEFINIEERDE FUNCTIES In Excel bestaat reeds een uitgebreide reeks van functies zoals SOM, GEMIDDELDE, AFRONDEN, NU enz. Het is de bedoeling om functies aan deze lijst toe te voegen door in Visual
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
Uitwerking Puzzel 93-1, Doelloos
Uitwerking Puzzel 93-1, Doelloos Wobien Doyer Lieke de Rooij Volgens de titel is deze puzzel zonder doel, dus zonder bekende toepassing. Het doel is echter nul en dat is zeker in de wiskunde niet niks.
Tentamen Kunstmatige Intelligentie (INFOB2KI)
Tentamen Kunstmatige Intelligentie (INFOB2KI) 30 januari 2014 10:30-12:30 Vooraf Mobiele telefoons dienen uitgeschakeld te zijn. Het tentamen bestaat uit 7 opgaven; in totaal kunnen er 100 punten behaald
Uitleg: In de bovenstaande oefening zie je in het eerste blokje een LEES en een SCHRIJF opdracht. Dit is nog lesstof uit het tweede trimester.
In onderstaande oefeningen zijn kleuren gebruikt. Deze dienen aleen om de structuren makkelijker terug te kunnen herkennen. Ze worden niet standaard zo gebruikt. De dunne rood/roze balken zijn ook geen
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
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,
Datastructuren Uitwerking jan
Datastructuren Uitwerking jan 2015 1 1a. Een abstracte datastructuur is een beschrijving van een datastructuur, met de specificatie van wat er opgeslagen wordt (de data en hun structuur) en welke operaties
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,
Examen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2014 2015, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele
opgaven formele structuren tellen Opgave 1. Zij A een oneindige verzameling en B een eindige. Dat wil zeggen (zie pagina 6 van het dictaat): 2 a 2.
opgaven formele structuren tellen Opgave 1. Zij A een oneindige verzameling en B een eindige. Dat wil zeggen (zie pagina 6 van het dictaat): ℵ 0 #A, B = {b 0,..., b n 1 } voor een zeker natuurlijk getal
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
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
Een korte samenvatting van enkele FORTRAN opdrachten
Een korte samenvatting van enkele FORTRAN opdrachten Inhoud 1 Introductie 3 2 De structuur van een FORTRAN programma 3 3 Datatypen, variabelen en declaraties 3 4 Expressies-volgorde van uitwerking 4 5
Verzamelingen, Lijsten, Functioneel Programmeren
Verzamelingen, Lijsten, Functioneel Programmeren Jan van Eijck [email protected] Lezing 4e Gymnasium, 19 november 2015 Samenvatting In deze lezing gaan we in op de overeenkomsten en verschillen tussen verzamelingen
Turbo Pascal (deel 1)
Turbo Pascal (deel 1) MSX CLUB MAGAZINE 34 Erik van Bilsen Scanned, ocr ed and converted to PDF by HansO, 2001 Erik van Bilsen leert u het klappen van de Turbo Pascal zweep. Turbo Pascal toepassen Deze
Datum. Vraag het bedrag in BEF. Reken om naar EURO. Toon het bedrag in EURO. --- Vraag het bedrag in BEF--- --- Reken om naar EURO---
3UREOHPHQRSORVVHQPHW9%$WRHSDVVLQJHQELMGHHO Naam. NR : Klas. PC : Datum. 23*$9( Hieronder vind je het algoritme om een bedrag in BEF om te rekenen naar EURO. Zet het algoritme om in programmacode. Noem
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 :..............................................................
Inleiding Analyse 2009
Inleiding Analyse 2009 Inleveropgaven A). Stel f(, y) = In (0, 0) is f niet gedefinieerd. We bestuderen y2 2 + y 4. lim f(, y). (,y) (0,0) 1. Bepaal de waarde van f(, y) op een willekeurige rechte lijn
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
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
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
Modeluitwerking Tentamen Computationele Intelligentie Universiteit Leiden Informatica Vrijdag 11 Januari 2013
Modeluitwerking Tentamen Computationele Intelligentie Universiteit Leiden Informatica Vrijdag Januari 20 Opgave. Python Gegeven is de volgende (slechte) Python code:. def t(x): 2. def p(y):. return x*y
OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet.
Les C-02: Werken met Programma Structuur Diagrammen 2.0 Inleiding In deze lesbrief bekijken we een methode om een algoritme zodanig structuur te geven dat er gemakkelijk programmacode bij te schrijven
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
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
Functioneel programmeren
Functioneel programmeren Practicumopgave 2: Mastermind Het doel van deze opgave is het implementeren van het spel Mastermind; zie http://nl.wikipedia.org/wiki/mastermind voor een uitleg. Het spel is klein
Tentamen Programmeren in C (EE1400)
TU Delft Tentamen Programmeren in C (EE1400) 3 feb. 2012, 9.00 12.00 Faculteit EWI - Zet op elk antwoordblad je naam en studienummer. - Beantwoord alle vragen zo nauwkeurig mogelijk. - Wanneer C code gevraagd
Programmeeropgaven. Sem Prog DD
Programmeeropgaven Sem Prog DD EENVOUDIGE SEQUENTIES SomVanTweeGetallen Rechthoek Trein Trein: formulier Einstein Rapport Autokost Factuur CONSTANTEN Utopia Utopia KEUZESTRUCTUUR IF THEN ELSE END
Opmerkingen en vragen aan Ultieme vraag: Hoe beïnvloedt dit de winstkansen?
2IP05: Programmeren Blok A http://www.win.tue.nl/ wstomv/edu/2ip05/ 5 spelers, 2 dobbelstenen Probleem met dobbelspel College 1 Per ronde werpt elke speler 1 Kees Hemerik Tom Verhoeff Technische Universiteit
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
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
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
Informatica: C# WPO 7
Informatica: C# WPO 7 1. Inhoud 1D-arrays, Lijsten 2. Oefeningen Demo 1: Vul de 1D-array Demo 2: Stringreplace Demo 3: Vul de lijst Demo 4: Debug oplossingen demo s 1, 2 en 3 A: Array reversal A: Gemiddelde
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
TW2020 Optimalisering
TW2020 Optimalisering Hoorcollege 11 Leo van Iersel Technische Universiteit Delft 25 november 2015 Leo van Iersel (TUD) TW2020 Optimalisering 25 november 2015 1 / 28 Vandaag Vraag Voor welke problemen
Pythoncursus. Opdrachtenserie 3. Tanja, Koen en Marein oktober Opdracht 1 - Turtlegraphics
Pythoncursus Opdrachtenserie 3 Tanja, Koen en Marein oktober 2018 Opdracht 1 - Turtlegraphics In deze opdracht gaan we tekenen! Hiervoor gebruiken we de library turtlegraphics, waarmee je met Python een
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,
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:
Zelftest Inleiding Programmeren
Zelftest Inleiding Programmeren Document: n0824test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST INLEIDING PROGRAMMEREN Deze
Hoofdstuk 7: Werken met arrays
Programmeren in Microsoft Visual Basic 2010 Express, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Vespucci College, Marnix Gymnasium Rotterdam, december 2011 Hoofdstuk
Programmeermethoden NA. Week 5: Functies (vervolg)
Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna2016/ Functies Vorige week bekeken we functies: def bereken(a, x): return a * (x
Pascal uitgediept Data structuren
Pascal uitgediept Data structuren MSX Computer & Club Magazine nummer 68-juni/juli 1994 Herman Post Scanned, ocr ed and converted to PDF by HansO, 2001 In deze aflevering wordt bekeken hoe zelf een datastructuur
Info-books. Toegepaste Informatica. Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) AL20. Jos Gils Erik Goossens
Info-books AL20 Toegepaste Informatica Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) Jos Gils Erik Goossens Hoofdstuk 6 Lusstructuren of iteraties 6.1 Probleemstelling Het gebeurt dikwijls
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
Opgave 2. Binaire informatie
Opgave 2. Binaire informatie In deze opgave krijgt je programma telkens als invoer een vierkant rooster dat eigenlijk is gevuld met uitsluitend nullen en enen. Van een deel van de cellen is (nog) niet
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............................
Hoofdstuk 5: Functies voor getallen en teksten
Programmeren in Microsoft Visual Basic 6.0, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Marnix Gymnasium Rotterdam, maart 2001 Hoofdstuk 5: Functies voor getallen en teksten
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
Verzamelingen, Lijsten, Functioneel Programmeren
Verzamelingen, Lijsten, Functioneel Programmeren Jan van Eijck [email protected] Stage Ignatiuscollege, 17 mei 2010 Samenvatting In deze lezing gaan we in op de overeenkomsten en verschillen tussen verzamelingen
6.2 VBA Syntax. Inleiding Visual Basic
6.2 VBA Syntax Wij gaan de Visual Basic Editor opnieuw openen, om de instructie die wij zojuist getypt hebben, nader te bekijken. Klik te tab Hulpmiddelen voor databases Klik op Maken Macro s en Code -
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
Tweede Programmeeropgave Numerieke Wiskunde 1 De golfplaat Uiterste inleverdatum : vrijdag 16 mei 2003
Tweede Programmeeropgave Numerieke Wiskunde 1 De golfplaat Uiterste inleverdatum : vrijdag 16 mei 2003 I Doelstelling en testcase In deze programmeeropgave zullen we een drietal numerieke integratiemethoden
Probleem met dobbelspel. 2IP05: Programmeren Blok A. 5 spelers,2 dobbelstenen. wstomv/edu/2ip05/ Per ronde werpt elke speler 1
2IP05: Programmeren Blok A http://www.win.tue.nl/ wstomv/edu/2ip05/ College 1 5 spelers,2 dobbelstenen Probleem met dobbelspel Per ronde werpt elke speler 1 Tom Verhoeff Technische Universiteit Eindhoven
Verzamelingen, Lijsten, Functioneel Programmeren
Verzamelingen, Lijsten, Functioneel Programmeren Jan van Eijck [email protected] Stage Ignatiuscollege, 20 mei 2008 Samenvatting In deze lezing gaan we in op de overeenkomsten en verschillen tussen verzamelingen
Modelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 9 december 2015 Foreach String arrays Boomstructuren Interfaces Ingebouwde datastructuren Quiz Foreach Foreach Speciale versie van for om iets voor alle elementen
BEGINNER JAVA Inhoudsopgave
Inhoudsopgave 6 Configuratie Hallo wereld! Praten met de gebruiker Munt opgooien Voorwaarden Lussen......6 Configuratie Met deze Sushi kaarten ga je een simpel spel maken met één van de meest populaire
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
V = {a, b, c, d, e} Computernetwerken: de knopen zijn machines in het netwerk, de kanten zijn communicatiekanalen.
WIS14 1 14 Grafen 14.1 Grafen Gerichte grafen Voor een verzameling V is een binaire relatie op V een verzameling geordende paren van elementen van V. Voorbeeld: een binaire relatie op N is de relatie KleinerDan,
(iii) Enkel deze bundel afgeven; geen bladen toevoegen, deze worden toch niet gelezen!
Examen Wiskundige Basistechniek, reeks A 12 oktober 2013, 13:30 uur Naam en Voornaam: Lees eerst dit: (i) Naam en voornaam hierboven invullen. (ii) Nietje niet losmaken. (iii) Enkel deze bundel afgeven;
Paradox van zelfreproductie. IN2505-II Berekenbaarheidstheorie. Zelfreproductie? Programma s en zelfreproductie. College 11.
Paradox van zelfreproductie College 11 Algoritmiekgroep Faculteit EWI TU Delft 27 mei 2009 1 Levende wezens zijn machines. 2 Levende wezens kunnen zich reproduceren. 3 Machines kunnen zich niet reproduceren.
6.3 VBA Syntax Instructie. Wij gaan de Visual Basic Editor opnieuw openen, om de instructie die wij zojuist getypt hebben, nader te bekijken.
6.3 VBA Syntax Wij gaan de Visual Basic Editor opnieuw openen, om de instructie die wij zojuist getypt hebben, nader te bekijken. Klik te tab Hulpmiddelen voor databases Klik in het groepsvak Macro op
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
Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie
Leren Programmeren met Visual Basic 6.0 Les 3+4 Hoofdstuk 4 : De Selectie Visual Basic 6.0 1 Basisstructuren (herhaling) Sequentie (HK2) : Alle opdrachten gewoon na mekaar uitvoeren. Hier worden geen keuzes
Faculteit Economie en Bedrijfskunde
Faculteit Economie en Bedrijfskunde Op dit voorblad vindt u belangrijke informatie omtrent het tentamen. Voordat u met het tentamen t: lees dit voorblad! Tentamen: V&O IV: Programmeren Tentamendatum &
Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.
HOOFDSTUK 3 3.1 Stapsgewijs programmeren In de vorige hoofdstukken zijn programmeertalen beschreven die imperatief zijn. is het stapsgewijs in code omschrijven wat een programma moet doen, net als een
{ specificatie (contract) en toelichting }
Programmeren Blok A Drie aspecten van routines http://www.win.tue.nl/ wstomv/edu/2ip05/ College 5 Kees Hemerik Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software
