12 september 2012 Complexiteit. Analyse van algoritmen (doelen) Empirische analyse : Voorbeeld Gevolgen

Save this PDF as:
 WORD  PNG  TXT  JPG

Maat: px
Weergave met pagina beginnen:

Download "12 september 2012 Complexiteit. Analyse van algoritmen (doelen) Empirische analyse : Voorbeeld Gevolgen"

Transcriptie

1 Complexiteit van Algoritmen Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 12 september 2012 ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Efficientie-analyse voor fundamentele algoritmen Reden waarom we (wiskundige) analyse van algoritmen doen Vergelijken van verschillende algoritmen voor dezelfde taak Voorspellen van hun efficientie onafhankelijk van de omgeving Bepalen van de waarde van de parameters van een algoritme Wiskundige formules zijn bekend die gebruikt kunnen worden om de looptijd van in een praktische situatie te kunnen voorspellen. We onderscheiden twee strategieën voor de efficientiebeschouwing empirische analyse complexiteitsklassen ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Eigenschappen van Algoritmen - Algoritme-analyse Hoe bekijken we de eigenschappen van algoritmen? Controleer operaties op data Controleer input data Hoe bepalen we de efficientie van algoritmen? We gebruiken de volgende methoden voor bestaande implementaties Implementatie en empirische analyse Analyse van algoritmen vóór de implementatie Groei van functies om de complexiteitsklassen te beschrijven Groot-Oh Notatie and O-Notatie Garanties, voorspellingen en beperkingen ODE/FHTBM Complexiteit van Algoritmen 12 september /41 1

2 Implementaie en empirische analyse Algoritmen voor berekeningen worden ontworpen als we operaties op datastrukturen bekijken, of (data-)strukturen kiezen, waarvan we weten dat bepaalde operaties snel uitgevoerd kunnen worden Om een correcte implementatie te vinden, bijv. in Java, moeten we bovenstaande zaken afwisselend beschouwen en tegen elkaar afwegen. Het kan vaak voorkomen dat men start met een bestaande implementatie (uit de Java bibliotheek) We kunnen leren van een bestaande implementatie. ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Empirische analyse We beginnen met een bestaande implementatie. Wat kan door empirische analyse worden gevonden? Wat levert ons een beschouwing van de werkelijke looptijd op? Neem aan dat twee algoritmen gegeven zijn om hetzelfde probleem op te lossen. We runnen ze allebei om te zien welke de meeste tijd nodig heeft! Het ene algoritme is 10 keer sneller dan het andere en dat is snel opgemerkt als we de looptijden: 3 en 30 seconden respectievelijk, gemeten hebben; Klopt zo n test voor alle mogelijke invoer van beide algoritmen? Voorbeeld: Sommatie van een eindige getallenrij ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Som van een eindige reeks (niet in het boek) public int Ga ussian SumSim ple ( int n) { int sum =0; for ( int i = n; n > 0; i - -) { sum = sum + i; return sum ; Voor N = 30 worden bij doorlopen van de lus 30 optellingen uitgevoerd. Voor N = 300 worden bij doorlopen van de lus 300 optellingen uitgevoerd, oftewel 10 maal zoveel. Net zoveel als de groei van N. ODE/FHTBM Complexiteit van Algoritmen 12 september /41 2

3 (2) Sommatie van een eindige getallenrij (niet in het boek) tweede implementatie public int GaussianSum ( int n) { int sum = 0.5* n*(n +1); return sum ; Voor een vast aantal bijv. N = 30: N = 30 sum = (30 + 1) = 1860 Een opteliing en twee vermenigvuldigingen zijn nodig. Als N = 300 sum = ( ) = Een opteliing en twee vermenigvuldigingen zijn nodig. Aantal benodigde operaties is onafhankelijk van de waarde van N. ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Samenvatting sommatie voorbeeld Sommatie van een eindige getallenrij In de eerste implementatie is er een relatie tussen de kosten en de grootte van de invoer, d.w.z. de kosten groeien rechtevenredig met N. De kosten groeien lineair. In de tweede implemetatie is de berekeningsmethode onafhankelijk van de grootte van de invoer N. We zeggen dat de kosten constant zijn. Blijkbaar kan de looptijd afhangen van de input. Het is niet altijd mogelijk deze afhankelijkheid uit te sluiten, maar het wel een poging waard. Bedenk wat er kan gebeuren als N vast is. ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Empirische analyse Empirisch onderzoek kost veel tijd. Merk op dat we voor zo n onderzoek de algoritmen eerst moeten implementeren, pas dan is een vergelijking mogelijk. Het kan voorkomen dat we heeeeel lang moeten wachten voordat we resultaten verkrijgen. Bestuderen van input data Drie verschillende keuzes Actuele data Random data Perverse data ODE/FHTBM Complexiteit van Algoritmen 12 september /41 3

4 Empirische analyse Actuele data laat ons de looptijd meten van een bepaald programma (in zijn softwaresysteem). Random data verzekert ons ervan dat we met onze experimenten ook echt de algoritmen testen en niet de input data. Perverse data verzekert ons ervan dat ons programma elke input die het aangeboden krijgt aan kan. ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Kritiek op de empirische analyse Diverse factoren liggen buiten de invloedsfeer van de programmeur, zoals: Programmeeromgevingen, zoals voor Java of.net Java-programma s worden vertaald in bytecode, en bytecode wordt geïnterpreteerd of vertaald naar runtime code op een virtual machine (VM). De compiler en VM implementaties beïnvloeden allemaal de instructies die feitelijk op de computer worden uitgevoerd. Compiler options geven enige mogelijkheid om het proces te beïnvloeden. Input data Veel programma s zijn extreem gevoelig voor input data, en de prestatie kan behoorlijk fluctueren afhankelijk van de input. Programma s (of implementaties) zijn niet goed te begrijpen. ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Empirische analyse (gevolgen) We kunnen geen experimenten doen met een programma dat nog niet geschreven is en dat uitgevoerd wordt met grote hoeveelheid input data, maar we kunnen wel de eigenschappen analyseren en de potentiële effectiviteit schatten. We kunnen parameters in onze implementatie toevoegen en deze in de analyse gebruiken. Doel: door begrip van de fundamentele eigenschappen van onze programma s en het gebruik van de programma bronnen, kunnen we deze beoordelen, zelfs voor computers die nog niet gemaakt zijn, en met algoritmen vergelijken die nog niet ontworpen zijn. ODE/FHTBM Complexiteit van Algoritmen 12 september /41 4

5 Hoe analyseren we algoritmen? Tijdens de analyse van een algoritme moeten we de operaties identificeren. Het aantal operaties kan groot zijn, in principe zal de prestatie van een algoritme enkel afhangen van weinig grootheden, die eenvoudig te identificeren zijn; bijv. door toepassing van een profiling mechanisme (tellen van aantallen instructies). ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Worst-case analyse kan gedaan worden middels bepalen van de time complexity (bovengrens afhankelijk van de gekozen invoerparameter N) of space complexity (bovengrens afhankelijk van geheugengebruik). NB: resultaten van time complexity kunnen omgezet worden naar die van space complexity en de resultaten van space complexity kunnen omgezet worden naar die van time complexity. Deze complexiteit resultaten kunnen aangegeven worden door groei van functies m.b.v. Big-Oh notatie. ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Eigenschappen van algoritmen Correctheid Invarianten van lussen Invarianten van methoden Bepalen van efficiënte algoritmen Ruimte complexiteit Tijd complexiteit Kostenberekeningen Best case, worst case, average case ODE/FHTBM Complexiteit van Algoritmen 12 september /41 5

6 Groei van functies Enn wiskundige functie wordt gebruikt om de complexiteit van een algoritme aan te geven. Veel algoritmen hebben een hoofdparameter N die de meeste invloed heeft op de looptijd. De parameter N kan onder meer zijn: de graad van een polynoom, de afmeting van een bestand dat gesorteerd of doorzocht moet worden, het aantal karakters in een tekststring een of andere maat voor de ameting van het probleem onder beschouwing. Vaak is N direct evenredig aan de afmeting van de dataverzameling die bewerkt wordt. Één parameter N is in het algemeen genoeg, een tweede parameter kan in N worden uitgedrukt. ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Groei van functies Ons doel is om de de vraag naar resources (tijd of ruimte) in termen van N uit te drukken, met gebruik van wiskundige formules die nauwkeuriger zijn naarmate de parameters groter worden, (gericht op problemen m.b.t. implementatie en massa s input data) De algoritmen bezitten typische tijd complexiteit evenredig aan de functies op de volgende slide. Merk op dat we hiermee een klassificatie voor alle algoritmen kunnen maken. ODE/FHTBM Complexiteit van Algoritmen 12 september /41 // return number of distinct triples (i, j, k) // such that a[ i] + a[ j] + a[ k] = 0 public static int count ( int [] a) { int N = a. length ; int cnt = 0; for ( int i = 0; i < N; i ++) { for ( int j = i +1; j < N; j ++) { // N=N^1 for ( int k = j +1; k < N; k ++) { // (N ^2)/2 if (a[i] + a[j] + a[k] == 0) { // {N ^3/6 cnt ++; return cnt ; ODE/FHTBM Complexiteit van Algoritmen 12 september /41 6

7 Figuur: : 1, log(x), x, x log(x), x 2, x 3,.. ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Groei van functies : 1 Kostante looptijd De meeste programma-instructies worden een of hoogstens enkele malen uitgevoerd. Als alle instructies in een programma deze eigenschap hebben, zeggen we dat de looptijd van het programma constant is. Bijv.: een verdubbeling van de invoerlengte heeft nauwelijks invloed op de looptijd. ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Groei van functies : logn Logaritmische looptijd Als de looptijd van een programma logaritmisch is, groeit het net iets langzamer dan N. Deze looptijd komt gewoonlijk voor in programma s die een groot probleem oplossen door omzetting in een aantal kleinere problemen, die de probleemomvang in elke stap met een bepaalde factor verkleinen. Bijv.: een verdubbeling van de invoerlengte voegt een constante hoeveelheid tijd toe aan de looptijd. Voor ons doel kunnen we aannemen dat de looptijd kleiner is dan een grote constante. Het grondtal van de logaritme beïnvloedt de constante een beetje. ODE/FHTBM Complexiteit van Algoritmen 12 september /41 7

8 Groei van functies : N Lineaire looptijd De looptijd van een programma is linear, als er een kleine hoeveelheid bewerkingen op elk input element wordt uitgevoerd. Deze situatie is optimaal voor een algoritme dat N invoerwaarden moet bewerken (of N uitvoerwaarden produceren). ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Groei van functies : NlogN NlogN looptijd Een Nlog(N) looptijd komt voor bij algoritmen die een probleem oplossen door het op te delen in kleinere deelproblemen, die onafhankelijk van elkaar opgelost worden, en waarvan de resultaten dan gecombineerd worden. Als N verdubbelt, groeit de looptijd meer (maar niet veel meer) dan een verdubbeling. ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Groei van functies : N 2 en N 3 N 2 Als de looptijd van een algoritme kwadratisch is, dan is dat algoritme alleen van praktische waarde voor relatief kleine problemen. Kwadratische looptijden komen typisch voor in algoritmen welke alle data-items in parenverwerkt worden (bijvoorbeeld in een dubbel-geneste lus). N 3 Een algoritme dat data-item-triplets bewerkt (bijvoorbeeld in een drievoudig-geneste lus) heeft een kubieke looptijd. Als N verdubbelt, zal de looptijd met een factor acht toenemen! ODE/FHTBM Complexiteit van Algoritmen 12 september /41 8

9 Groei van functies : 2 N Weinig algoritmen met een exponentiële looptijd zijn van praktisch nut, zelfs als deze algoritmen het resultaat zijn van een brute-force aanpak. Als N verdubbelt, zal de looptijd kwadrateren! 2 (2 N) = (2 N ) 2 ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Waarden van voorkomende functies lgn N N NlgN N(lgN) 2 N 3/2 N ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Groei van functies : Speciale functies Funktion Beschrijving Voorbeeld Benadering voor grote waarden x Bodemfunktie 3.14 = 3 x x Plafondfunktie 3.14 = 4 x lgn Binaire Logaritme lg(1024) = ln(N) F N Fibonacci Getallen F 10 = 55 φ N / 5 H N Harmonische Getallen (som) ln(n) + γ N! Fakulteit-funktie 10! = (N/e) N lg(n!) lg(10!) 520 Nlg(N) 1.44N ODE/FHTBM Complexiteit van Algoritmen 12 september /41 9

10 Groei van functies : Speciale constanten Constant Value e = γ = φ = (1 + 5)/2 = ln(2) = lg(e) = 1/ln(2) = ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Wat motivatie van te voren Groot O-Notatie gebruiken we om de efficiëntie van algoritmes te beschrijven In de meeste gevallen bepaalt de implementatie van de (wiskundige) operaties op een datastructuur de efficiëntie van algoritmen. Van de andere kant beïnvloedt de onderliggende datastructuur de efficiëntie ook. Dit betekent dat als we beslissen om de datastructuur te veranderen de algoritmen sneller kunnen worden. Wat betekent hier snel of langzaam? ODE/FHTBM Complexiteit van Algoritmen 12 september /41 De fout te beperken die we maken als we kleine termen verwaarlozen in formules De fout te beperken die we maken als we programma-delen weglaten die maar een kleine bijdrage leveren aan het totale programma Bieden van de mogelijkheid om algoritmen in te delen volgens een bovengrens aan de totale looptijd snel en langzaam is bepaald en wordt weergegeven door de O-notation: O(f (N)) - groot O van f (N) De O-notatie geeft een is evenredig aan relatie weer. Zoals gezegd: het onderzoek naar de invoerdata is een asymptotische benadering van de worst case situatie. ODE/FHTBM Complexiteit van Algoritmen 12 september /41 10

11 Groei van functies: gedrag voor grote N f (N) f (N) = N 2 f (N) = Nlog(N) N ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Groot O-Notatie: O(f (N)) Groot O van f (N) O(f (N)) - Groot O van f (N) Ruwweg: De verzameling functies die als N toeneemt, niet sneller groeit dan een constante maal f (N), waarin N (de maat of lengte van) de input (data) is. Precies: De verzameling functies g(n) : N R, als voor elke g(n), er constanten bestaan: c 0 R + en N 0 N zodanig dat g(n) c 0 f (N) voor alle N > N 0 Valkuil: We prefereren een algoritme met N 2 nanoseconden ten opzichte van een met log(n) eeuwen, maar we kunnen deze keuze niet bepalen op grond van de O-notatie. ODE/FHTBM Complexiteit van Algoritmen 12 september /41 In wezen kunnen we uitdrukkingen O-notatie uitwerken alsof de O er helemaal niet is, dan verwijderen we alles behalve de grootste term. Bijvoorbeeld, als we de uitdrukking uitwerken: (O(N) + O(1))(O(N) + O(logN) + O(1)) krijgen we zes termen: O(N 2 ) + O(NlogN) + O(N) + O(N) + O(logN) + O(1) ODE/FHTBM Complexiteit van Algoritmen 12 september /41 11

12 We verwijderen alle lagere O-termen, en houden de benadering: O(N 2 ) + O(NlogN). O(N 2 ) is benadert de uitdrukking goed voor grote N. We noemen een uitdrukking met een O-term een asymptotische uitdrukking. ODE/FHTBM Complexiteit van Algoritmen 12 september /41 g(n) = 3N N logN O(N 3 ) houdt ook in dat: g(n) = 3N N logN O(N 4 ) g(n) = g(n) = { 5N, N N 2, N > { N 2, N N, N > O(N 2 ) O(N) ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Zeef van Eratosthenes class Primes { public static void main ( String [] args ) { int N = integer. parseint ( args [0]); boolean [] a = new boolean [ N]; for ( int i = 2; i < N; i ++) a[ i] = true ; for ( int i = 2; i < N; i ++) if ( a[ i]!= false ) for ( int j = i, i* j < N; j ++) a[i*j] = false ; for ( int i = 2; i < N; i ++ ) if ( i > N ) if (a[i]) System. out. println (" " + i); System. out. println (); ODE/FHTBM Complexiteit van Algoritmen 12 september /41 12

13 Zeef van Eratosthenes - Complexiteit De implementatie heeft vier lussen, waarvan er drie de items van het array sequentieel doorlopen, van begin tot eind. Sequentiële processing is essentieel. We zouden de eerste lus kunnen veranderen, bijv.: for(i = N-1; i > 1; i--) a[i] = true; Deze verandering heeft geen enkel effect! Analyseer de looptijd, die is evenredig aan: N + N/2 + N/3 + N/5 + N/7 + N/ hetgeen kleiner is dan: N + N/2 + N/3 + N/ De eerste N termen van deze reeks: N (1 + 1/2 + 1/3 + 1/ /N) = N H N = O(N logn) H N : harmonic numbers sum ODE/FHTBM Complexiteit van Algoritmen 12 september /41 We hebben twee methoden bestudeerd voor de analyse van algoritmen Empirische analyse Complexiteitsklassen ODE/FHTBM Complexiteit van Algoritmen 12 september /41 Samenvatting - Empirische analyse Er moet een implementatie aanwezig zijn. We hebben (veel) data nodig. De meting van de looptijd kan worden beinvloed door het softwareysteem. Stapsgewijze, mogelijk zeer kostbare verbeteringen door kennis van randvoorwaarden van een speciale toepassing. Zulke randvoorwaarden kunnen in speciale gevallen leiden tot snelle oplossingen. ODE/FHTBM Complexiteit van Algoritmen 12 september /41 13

14 . In de ontwerpfase van een algoritme Focus op invoerdata indien nodig beperkt tot een mogelijke invoerparameter en de langzame programmadelen Afschatting van de wezenlijke invoerparameter door looptijdcomplexiteit of geheugencomplexiteit Vind een komplexiteitsklasse, waartoe het algoritme behoort. De complexiteit van een algoritme wordt gegeven door de kleinste bovengrens bij worst-case invoerdata. De kleinste bovengrens wordt uitgedrukt door de groei van een wiskundige functie. ODE/FHTBM Complexiteit van Algoritmen 12 september /41. Elk geimplementeerd programma heeft een looptijd. De complexiteitsanalyse levert met de kleinste bovengrens de snelste looptijd in worst-case (of benodigde geheugenruimte) van elk algoritme met betrekking tot wiskundige operaties. We verkrijgen kennis met de complexiteitsanalyse over de beste oplossing, die tegelijkertijd een absolute grens vormt. De programmalooptijd van een implementatie hoeft niet overeen te komen met de looptijd, die door de complexiteitsklasse wordt beschreven. We willen in deze kursus de algoritmen leren voor de meest toegepaste operaties welke de beste algoritmen zijn. ODE/FHTBM Complexiteit van Algoritmen 12 september /41 14

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

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

TW2020 Optimalisering

TW2020 Optimalisering TW2020 Optimalisering Hoorcollege 7 Leo van Iersel Technische Universiteit Delft 26 oktober 2016 Leo van Iersel (TUD) TW2020 Optimalisering 26 oktober 2016 1 / 28 Deze week: analyseren van algoritmes Hoe

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

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

TW2020 Optimalisering

TW2020 Optimalisering TW2020 Optimalisering Hoorcollege 7 Leo van Iersel Technische Universiteit Delft 21 oktober 2015 Leo van Iersel (TUD) TW2020 Optimalisering 21 oktober 2015 1 / 20 Deze week: algoritmes en complexiteit

Nadere informatie

Hoofdstuk 8: Algoritmen en Complexiteit

Hoofdstuk 8: Algoritmen en Complexiteit Hoofdstuk 8: Algoritmen en Complexiteit Vandaag: Hoe meten we de performance van algoritmen? Waar ligt de grens tussen een goed en een slecht algoritme? 22 oktober 2014 1 Vandaag: Hoe meten we de performance

Nadere informatie

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

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

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

1 Complexiteit. of benadering en snel

1 Complexiteit. of benadering en snel 1 Complexiteit Het college van vandaag gaat over complexiteit van algoritmes. In het boek hoort hier hoofdstuk 8.1-8.5 bij. Bij complexiteitstheorie is de belangrijkste kernvraag: Hoe goed is een algoritme?

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

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

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

Hogeschool voor Techniek en Logistiek

Hogeschool voor Techniek en Logistiek +1/1/60+ Hogeschool voor Techniek en Logistiek Software Engineering/Bedrijfskundige Informatica Examen Vak: ALDA : Algorithms and Data structures ProgRESS-code: FND11I09 Datum: 1 April 1999 Docent: Ferd

Nadere informatie

Dynamisch Programmeren. Het Rugzakprobleem

Dynamisch Programmeren. Het Rugzakprobleem INLEIDING Dynamisch Programmeren 1 Dynamisch Programmeren Section Page Inleiding................................................. 1 1 Oplossing................................................ 2 2 Subprobleem.............................................

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

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

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

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

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

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

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

Javascript oefenblad 1

Javascript oefenblad 1 Leer de basis van Javascript. Javascript oefenblad 1 Niels van Velzen Javascript oefenblad 1 Pagina 2 Inleiding Javascript is niet altijd even makkelijk. Vooral aan het begin is het even wennen hoe de

Nadere informatie

29 november 2012 Hashing. Een tijd-ruimte afweging Hashfuncties

29 november 2012 Hashing. Een tijd-ruimte afweging Hashfuncties Hashing Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 29 november 2012 ODE/FHTBM Hashing 29 november 2012 1/30 Hashing Een typisch gebruik van de implementatie

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

Elementary Data Structures 3

Elementary Data Structures 3 Elementary Data Structures 3 Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 29 september 2014 ODE/FHTBM Elementary Data Structures 3 29 september 2014 1/14 Meer

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

Zelftest Inleiding Programmeren

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

Nadere informatie

8. Complexiteit van algoritmen:

8. Complexiteit van algoritmen: 8. Complexiteit van algoritmen: Voorbeeld: Een gevaarlijk spel 1 Spelboom voor het wespenspel 2 8.1 Complexiteit 4 8.2 NP-problemen 6 8.3 De oplossing 7 8.4 Een vuistregel 8 In dit hoofdstuk wordt het

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

Stacks and queues. Hoofdstuk 6

Stacks and queues. Hoofdstuk 6 Hoofdstuk 6 Stacks and queues I N T R O D U C T I E In dit hoofdstuk worden drie datastructuren stack, queue en deque behandeld. Om deze datastructuren te implementeren, worden onder andere arrays en linked

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

Wiskundige vaardigheden

Wiskundige vaardigheden Inleiding Bij het vak natuurkunde ga je veel rekenstappen zetten. Het is noodzakelijk dat je deze rekenstappen goed en snel kunt uitvoeren. In deze presentatie behandelen we de belangrijkste wiskundige

Nadere informatie

We zullen in deze les kijken hoe we netwerken kunnen analyseren, om bijvoorbeeld de volgende vragen te kunnen beantwoorden:

We zullen in deze les kijken hoe we netwerken kunnen analyseren, om bijvoorbeeld de volgende vragen te kunnen beantwoorden: Wiskunde voor kunstmatige intelligentie, 24 Les 5 Proces analyse Veel processen laten zich door netwerken beschrijven, waarin een aantal knopen acties aangeeft en opdrachten langs verbindingen tussen de

Nadere informatie

http://www.liacs.nl/home/kosters/java/

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

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

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

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

(On)Doenlijke problemen

(On)Doenlijke problemen Fundamentele Informatica In3 005 Deel 2 College 1 Cees Witteveen Parallelle en Gedistribueerde Systemen Faculteit Informatie Technologie en Systemen Overzicht Inleiding - Relatie Deel 1 en Deel 2 - Doenlijke

Nadere informatie

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

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

Nadere informatie

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

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

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

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

Genetische algoritmen in Java met JGAP

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

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

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

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

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

Opgaven Binair Zoeken en Invarianten Datastructuren, 28 april 2017, Werkgroep. 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

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

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

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

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is PROEF-Tentamen Inleiding programmeren (IN1608WI), X januari 2010, 9.00-11.00, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Open boek tentamen: bij het tentamen mag alleen gebruik worden gemaakt

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

Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft

Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Digitale

Nadere informatie

Semaforen. Semaforen p. 1/2

Semaforen. Semaforen p. 1/2 Semaforen 2008 Semaforen p. 1/2 Vorige Keer mbv mutual exclusion kritieke sectie (cs) 1. software : Dekker s, Peterson s algoritme 2. hardware: uniprocessor machine: disable interrupts 3. hardware: multiprocessor

Nadere informatie

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

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

Nadere informatie

public boolean egualdates() post: returns true i f f there i f the l i s t contains at least two BirthDay objects with the same daynumber

public boolean egualdates() post: returns true i f f there i f the l i s t 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

Lab Webdesign: Javascript 3 maart 2008

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

Nadere informatie

Presentatie Michiel. Informaticastage najaar 2004

Presentatie Michiel. Informaticastage najaar 2004 Presentatie Michiel michielborkent@gmail.com Informaticastage najaar 2004 Inhoud presentatie: Wie ben ik? Over mijn stage Informatie over Lisp Wie/wat ben ik? Student Technische Informatica, Universiteit

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

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

Algoritmes en Priemgetallen. Hoe maak je een sleutelpaar voor RSA?

Algoritmes en Priemgetallen. Hoe maak je een sleutelpaar voor RSA? Algoritmes en Priemgetallen Hoe maak je een sleutelpaar voor RSA? Het recept van RSA Kies p q priemgetallen en bepaal N = pq Kies e Z N (publieke sleutel) Bepaal d e 1 mod φ N (privésleutel) x ed x kφ

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

Modulewijzer InfPbs00DT

Modulewijzer InfPbs00DT Modulewijzer InfPbs00DT W. Oele 0 juli 008 Inhoudsopgave Inleiding 3 Waarom wiskunde? 3. Efficiëntie van computerprogramma s............... 3. 3D-engines en vectoranalyse................... 3.3 Bewijsvoering

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

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

Sterrenkunde Praktikum 1 Fouten en fitten

Sterrenkunde Praktikum 1 Fouten en fitten Sterrenkunde Praktikum 1 Fouten en fitten Paul van der Werf 12 februari 2008 1 Inleiding In de sterrenkunde werken we vaak met zwakke signalen, of met grote hoeveelheden metingen van verschillende nauwkeurigheid.

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

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

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008 judge Teamhandleiding DOMjudge (versie..0mukp) 31 mei 008 /\ DOM DOM judge Inhoudsopgave 1 Inleiding Samenvatting.1 Inlezen en wegschrijven............................... Insturen van oplossingen...............................3

Nadere informatie

Proefstuderen Informatica

Proefstuderen Informatica Proefstuderen Informatica Raphael kena Poss Introductie 1. Open een terminal, dan vor het volgende commando uit: mkdir opdracht-jouwnaam Vervang JOUWNAAM door je naam en/of die van je werkpartner. Tip

Nadere informatie

Datastructuren en algoritmen

Datastructuren en algoritmen Datastructuren en algoritmen Doelstelling Datastructures + algorithms = programs Boek van Niklaus Wirth: bedenker Pascal en Modula Datastructuur: structuur om informatie op te slaan Algoritme: voorschrift

Nadere informatie

Hoofdstuk 9. Hashing

Hoofdstuk 9. Hashing Hoofdstuk 9 Hashing Het zoeken in een verzameling van één object is in deze cursus al verschillende malen aan bod gekomen. In hoofdstuk 2 werd uitgelegd hoe men een object kan zoeken in een array die veel

Nadere informatie

en-splitsingen: een aantal alternatieven worden parallel toegepast, of-splitsingen: van een aantal alternatieven wordt er één toegepast,

en-splitsingen: een aantal alternatieven worden parallel toegepast, of-splitsingen: van een aantal alternatieven wordt er één toegepast, Kansrekening voor Informatiekunde, 25 Les 8 Proces analyse Veel processen laten zich door netwerken beschrijven, waarin knopen acties aangeven en opdrachten langs verbindingen tussen de knopen verwerkt

Nadere informatie

1 Rekenen in eindige precisie

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

Nadere informatie

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

Lessen Java: Reeks 2. David Blinder Beerend Ceulemans

Lessen Java: Reeks 2. David Blinder Beerend Ceulemans Lessen Java: Reeks 2 David Blinder Beerend Ceulemans Primitieve Types type grootte waardes byte 8 bits 128, 127 short 16 bits 32768, 32767 int 32 bits 2 31, 2 31 1 long 64 bits 2 63, 2 63 1 type grootte

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

Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie

Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie Discrete Structuren Piter Dykstra Opleidingsinstituut Informatica en Cognitie www.math.rug.nl/~piter piter@math.rug.nl 22 februari 2009 INDUCTIE & RECURSIE Paragrafen 4.3-4.6 Discrete Structuren Week 3:

Nadere informatie

Modelleren C Appels. Christian Vleugels Sander Verkerk Richard Both. 2 april 2010. 1 Inleiding 2. 3 Data 3. 4 Aanpak 3

Modelleren C Appels. Christian Vleugels Sander Verkerk Richard Both. 2 april 2010. 1 Inleiding 2. 3 Data 3. 4 Aanpak 3 Modelleren C Appels Christian Vleugels Sander Verkerk Richard Both 2 april 2010 Inhoudsopgave 1 Inleiding 2 2 Probleembeschrijving 2 3 Data 3 4 Aanpak 3 5 Data-analyse 4 5.1 Data-analyse: per product.............................

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

Lessen Java: Reeks pag. 1

Lessen Java: Reeks pag. 1 Lessen Java: Reeks 2 1-3-2016 pag. 1 Primitieve types type grootte waardes byte 8 bits 128, 127 short 16 bits 32768, 32767 int 32 bits 2 31, 2 31 1 long 64 bits 2 63, 2 63 1 type grootte waardes float

Nadere informatie

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd Inhoudsopgave 1 Inleiding... 1 2 Toekenning- en herhalingsopdrachten (for loop)... 2 2.1 De wet van Ohm... 3 2.2 De spaarrekening... 3 2.3 De transformator... 3 3 Keuze- en herhalingsopdrachten (if, switch,

Nadere informatie

II. ZELFGEDEFINIEERDE FUNCTIES

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

Nadere informatie

Snelle algoritmen voor Min en Max filters

Snelle algoritmen voor Min en Max filters Snelle algoritmen voor Min en Max filters Michael H.F. Wilkinson Instituut voor Wiskunde en Informatica Rijksuniversiteit Groningen 27 augustus 2007 Morfologie: Dilatie en Erosie 1 of 18 Links beeld X.

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

Opgaven Abstracte Datastructuren Datastructuren, Werkgroep, 31 mei 2017.

Opgaven Abstracte Datastructuren Datastructuren, Werkgroep, 31 mei 2017. Opgaven Abstracte Datastructuren Datastructuren, Werkgroep, 31 mei 2017. Gebruik deze opgaven, naast die uit het boek, om de stof te oefenen op het werkcollege. Cijfer: Op een toets krijg je meestal zes

Nadere informatie

DOMjudge teamhandleiding

DOMjudge teamhandleiding judge DOMjudge teamhandleiding Samenvatting /\ DOM DOM judge Hieronder staat de belangrijkste informatie kort samengevat. Dit is bedoeld om snel aan de slag te kunnen. We raden echter ten zeerste aan dat

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

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

DEC SDR DSP project 2017 (2)

DEC SDR DSP project 2017 (2) DEC SDR DSP project 2017 (2) Inhoud: DSP software en rekenen Effect van type getallen (integer, float) Fundamenten onder DSP Lezen van eenvoudige DSP formules x[n] Lineariteit ( x functie y dus k maal

Nadere informatie

Tentamen Imperatief Programmeren

Tentamen Imperatief Programmeren Tentamen Imperatief Programmeren Maandag 22 oktober 2001 Toelichting Dit is een open boek tentamen, d.w.z. het cursusboek mag gebruikt worden. N.B.: Het tentamen is individueel: voor het maken van de opgaven

Nadere informatie

Overerving & Polymorfisme

Overerving & Polymorfisme Overerving & Polymorfisme Overerving Sommige klassen zijn speciaal geval van andere klasse Docent is een speciaal geval van werknemer, dwz. elke docent is ook werknemer Functionaliteit van docent = functionaliteit

Nadere informatie

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

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

Nadere informatie

Over binaire beslissingsdiagrammen naar Donald E. Knuth s The Art of Computer Programming, Volume 4

Over binaire beslissingsdiagrammen naar Donald E. Knuth s The Art of Computer Programming, Volume 4 Over binaire beslissingsdiagrammen naar Donald E. Knuth s The Art of Computer Programming, Volume 4 Jonathan K. Vis 1 Inleiding (blz. 70 72) In dit essay behandelen we bladzijden 70 75 van Donald E. Knuth

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

Algemene informatie. Inhoudelijke informatie

Algemene informatie. Inhoudelijke informatie Informatie over Colloquium doctum Wiskunde niveau 2 voor Bedrijfskunde, Economie, Fiscale Economie en Mr.-Drs. Programma Economie en Recht ERASMUS UNIVERSITEIT ROTTERDAM Algemene informatie Tijdsduur:

Nadere informatie

International Olympiad in Informatics Lang lang geleden, toen de wereld nog nieuw was en de IOI nog niet bedacht was...

International Olympiad in Informatics Lang lang geleden, toen de wereld nog nieuw was en de IOI nog niet bedacht was... Dreaming/nl - IOI 0 Public Translations https://translate.ioi0.org/day0/w/dreaming/nl van 5 7-7-0 6:0 International Olympiad in Informatics 0 6- July 0 Brisbane, Australia dreaming Netherlands.0 Lang lang

Nadere informatie