Datastructuren en algoritmen voor CKI

Maat: px
Weergave met pagina beginnen:

Download "Datastructuren en algoritmen voor CKI"

Transcriptie

1 Datastructuren en algoritmen voor CKI Jeroen Bransen 1 2 september met dank aan Hans Bodlaender en Gerard Tel

2 Organisatie

3 Website Vakwebsite: Bevat alle slides, opgaven, planning, nieuws, etc. Blackboard: belangrijke aankondigingen (via ), cijfers

4 Docent Jeroen Bransen

5 Docent Jeroen Bransen Datastructuren, algoritmen, programmeertalen

6 Docent Jeroen Bransen Datastructuren, algoritmen, programmeertalen Softwaretechnologie, attributengrammatica s, compilers, functioneel programmeren

7 Assistenten Geertièn de Vries Jordi Vermeulen

8 Hoorcollege Woensdag in Ruppert 134 (Science Park) Vrijdag in Drift (Binnenstad)

9 Hoorcollege Woensdag in Ruppert 134 (Science Park) Vrijdag in Drift (Binnenstad) Slides komen online, maar college geeft veel meer informatie dan alleen de slides!

10 Boek Introduction to Algorithms, Third Edition. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. The MIT Press / McGrawHill Book Company, 2009.

11 Werkcollege Woensdag in Ruppert 134 (Groep 1) Woensdag in Ruppert 134 (Groep 2?) Uitzondering: Woensdag 7 oktober 2015: DDW 1.05 Opgaven maken op papier Zeer goede tentamenvoorbereiding 4 inleveropgaven, mag alleen of in tweetallen (beoordeling G, V of O)

12 Practicum Vrijdag in KNG (Groep 1) Vrijdag in KNG (Groep 2) Programmeeropdrachten zijn individueel Inleveren via DOMjudge (later daarover meer) 7,5 wanneer correct, 2,5 punt voor stijl We gebruiken Java, maar C mag ook

13 Inspanningsverplichting Minstens 2 van de 4 inleveropgaven voldoende Voor herkansing: Minstens een 4 voor het practicum Minstens een 4 voor het tentamen

14 Cijferregeling p = (p1 + p2 + p3 + p4 + p5) / 5 bonus = if aantal(g, {h1,h2,h3,h4}) == 4 then 0.5 else if aantal(g, {h1,h2,h3,h4}) == 3 then 0.25 else 0 tt = t + bonus eindcijfer = if p >= 5.5 && tt >= 5.5 then p * tt * 0.4 else minimum(p, tt)

15 Fraude / plagiaat Wetenschappelijke misleiding, bijvoorbeeld door inleveren van andermans werk op eigen naam

16 Fraude / plagiaat Wetenschappelijke misleiding, bijvoorbeeld door inleveren van andermans werk op eigen naam Bij vermoeden van fraude of plagiaat eerst gesprek

17 Fraude / plagiaat Wetenschappelijke misleiding, bijvoorbeeld door inleveren van andermans werk op eigen naam Bij vermoeden van fraude of plagiaat eerst gesprek Wanneer gesprek het vermoeden niet wegneemt: melding aan examencommissie

18 Fraude / plagiaat Wetenschappelijke misleiding, bijvoorbeeld door inleveren van andermans werk op eigen naam Bij vermoeden van fraude of plagiaat eerst gesprek Wanneer gesprek het vermoeden niet wegneemt: melding aan examencommissie Als examencommissie beslist dat het om fraude of plagiaat gaat:

19 Fraude / plagiaat Wetenschappelijke misleiding, bijvoorbeeld door inleveren van andermans werk op eigen naam Bij vermoeden van fraude of plagiaat eerst gesprek Wanneer gesprek het vermoeden niet wegneemt: melding aan examencommissie Als examencommissie beslist dat het om fraude of plagiaat gaat: 0 voor de opgave, mogelijk uitsluiting voor het vak

20 Fraude / plagiaat Wetenschappelijke misleiding, bijvoorbeeld door inleveren van andermans werk op eigen naam Bij vermoeden van fraude of plagiaat eerst gesprek Wanneer gesprek het vermoeden niet wegneemt: melding aan examencommissie Als examencommissie beslist dat het om fraude of plagiaat gaat: 0 voor de opgave, mogelijk uitsluiting voor het vak een berisping

21 Fraude / plagiaat Wetenschappelijke misleiding, bijvoorbeeld door inleveren van andermans werk op eigen naam Bij vermoeden van fraude of plagiaat eerst gesprek Wanneer gesprek het vermoeden niet wegneemt: melding aan examencommissie Als examencommissie beslist dat het om fraude of plagiaat gaat: 0 voor de opgave, mogelijk uitsluiting voor het vak een berisping bij 2e berisping: jaar schorsing van de UU

22 Wat mag wel? Overleg zonder code te bekijken: Welke datastructuur zouden we het beste kunnen gebruiken? Ik denk een linked-list! Hmm, ik ga het met een stack proberen. (maar: alles helemaal zelf uitzoeken is leerzamer) (pseudo)code uit boek gebruiken...

23 Wat mag niet? Code van anderen bekijken Je eigen code aan andere studenten geven/laten zien Code van iemand anders insturen op je eigen account...

24 Afronding organisatorisch deel Verdere organisatorische vragen?

25 Algoritmen en datastructuren

26 Waarom? We zijn ongeduldig

27 Waarom? We zijn ongeduldig We willen dat onze routeplanner op tijd vertelt dat we af moeten slaan

28 Waarom? We zijn ongeduldig We willen dat onze routeplanner op tijd vertelt dat we af moeten slaan We verwachten vloeiende beelden bij het afspelen van een video

29 Waarom? We zijn ongeduldig We willen dat onze routeplanner op tijd vertelt dat we af moeten slaan We verwachten vloeiende beelden bij het afspelen van een video We willen geen dagen/maanden/jaren wachten op het resultaat van een berekening

30 Waarom? We zijn ongeduldig We willen dat onze routeplanner op tijd vertelt dat we af moeten slaan We verwachten vloeiende beelden bij het afspelen van een video We willen geen dagen/maanden/jaren wachten op het resultaat van een berekening Datastructuren en algoritmen helpen om dingen snel uit te rekenen

31 Wat? Eerst maar eens Googlen...

32 Algoritme Methode om iets uit te rekenen (soort van recept) Naam komt van Al-Chwarizmi Schreef in 820 boek over algebra Niet hetzelfde als implementatie

33 Datastructuur Slimme manier om gegevens op te slaan Helpt om algoritme sneller te maken Datastructuren voor opslaan van verschillende soorten gegevens

34 Algoritmische vragen Sorteren van rij getallen

35 Algoritmische vragen Sorteren van rij getallen Oplossen wiskundig vraagstuk

36 Algoritmische vragen Sorteren van rij getallen Oplossen wiskundig vraagstuk Berekenen van kortste route

37 Algoritmische vragen Sorteren van rij getallen Oplossen wiskundig vraagstuk Berekenen van kortste route Compileren van een Java-programma

38 Algoritmische vragen Sorteren van rij getallen Oplossen wiskundig vraagstuk Berekenen van kortste route Compileren van een Java-programma Uitrekenen van ontleedboom voor gegeven grammatica en invoer

39 Algoritmische vragen Sorteren van rij getallen Oplossen wiskundig vraagstuk Berekenen van kortste route Compileren van een Java-programma Uitrekenen van ontleedboom voor gegeven grammatica en invoer etc.

40 Analyse van algoritmen Is het correct?

41 Analyse van algoritmen Is het correct? Hoe lang duurt het

42 Analyse van algoritmen Is het correct? Hoe lang duurt het Gemeten in stappen

43 Analyse van algoritmen Is het correct? Hoe lang duurt het Gemeten in stappen Veelgebruikte O-notatie

44 Analyse van algoritmen Is het correct? Hoe lang duurt het Gemeten in stappen Veelgebruikte O-notatie In het begin wat saai...

45 Pseudocode Niet echt een programmeertaal, maar lijkt er wel op Onbelangrijke implementatiedetails van programmeertaal zijn verborgen Wel precies genoeg om makkelijk implementatie te maken Imperatieve structuur, maar soms makkelijk naar functionele taal om te zetten

46 Algoritmisch wedstrijdje Twee vrijwilligers nodig

47 Zoeken in een rij

48 Probleem We hebben een rij van n getallen Deze noemen we A 1 tot A n. Vraag: zit getal x in de rij, en zo ja waar? Anders gezegd: is er een i zodat A i = x?

49 Oplossing 1 zoek-in-rij(x, A) 1 i = 1 2 while i A.length 3 if x == A[i] 4 return i 5 else 6 i = i return 0

50 Hoe lang duurt het Als het getal er niet in zit n vergelijkingen Slechtste geval: n vergelijkingen Beste geval: 1 vergelijking Gemiddeld: n/2 vergelijkingen Kan beter!

51 Binair zoeken Aanname: A is gesorteerd Binair zoeken (binary search) zoekt sneller

52 Idee Bekijk middelste element Als x kleiner is: gooi rechterhelft weg Als x groter is: gooi linkerhelft weg Grootte van de lijst wordt telkens gehalveerd (ongeveer)

53 Oplossing 2 binair-zoeken(x, A) // Aanname: A oplopend gesorteerd 1 laag = 1 2 hoog = A.length 3 while laag < hoog 4 mid = (laag + hoog)/2 5 if A[mid] < x 6 laag = mid else 8 hoog = mid 9 if A[laag] == x 10 return laag 11 else 12 return 0

54 Sorteren

55 Sorteren Invoer: Een rij dingen a 1,..., a n Uitvoer: Een permutatie a 1,..., a n van die rij zodanig dat: a 1 a 2... a n

56 Insertion sort insertion-sort(a) 1 for j = 2 to A.length 2 key = A[j] 3 / Voeg A[j] aan de gesorteerde rij A[1.. j 1] toe 4 i = j 1 5 while i > 0 and A[i] > key 6 A[i + 1] = A[i] 7 i = i 1 8 A[i + 1] = key

57 Loop invariant 1. Initialization: Aan het begin waar? 2. Maintenance: Als het klopt aan het begin van een iteratie, is het dan ook waar aan het begin van volgende iteratie? 3. Termination: Als de invariant aan het einde waar is, helpt het ons om correctheid (of andere eigenschap) aan te tonen.

58 Correctheid insertion-sort(a) 1 for j = 2 to A.length // Invariant: A[1.. j 1] is gesorteerd 2 key = A[j] // en bevat nog dezelfde elementen 3 i = j 1 4 while i > 0 and A[i] > key 5 A[i + 1] = A[i] 6 i = i 1 7 A[i + 1] = key

59 Correctheid insertion-sort(a) 1 for j = 2 to A.length // Invariant: A[1.. j 1] is gesorteerd 2 key = A[j] // en bevat nog dezelfde elementen 3 i = j 1 4 while i > 0 and A[i] > key 5 A[i + 1] = A[i] 6 i = i 1 7 A[i + 1] = key Initialization: Waar aan het begin want A[1.. 1] is gesorteerd

60 Correctheid insertion-sort(a) 1 for j = 2 to A.length // Invariant: A[1.. j 1] is gesorteerd 2 key = A[j] // en bevat nog dezelfde elementen 3 i = j 1 4 while i > 0 and A[i] > key 5 A[i + 1] = A[i] 6 i = i 1 7 A[i + 1] = key Maintenance: Als we A[j] toevoegen aan A[1.. j 1] op de goede plek blijft de sortering intact

61 Correctheid insertion-sort(a) 1 for j = 2 to A.length // Invariant: A[1.. j 1] is gesorteerd 2 key = A[j] // en bevat nog dezelfde elementen 3 i = j 1 4 while i > 0 and A[i] > key 5 A[i + 1] = A[i] 6 i = i 1 7 A[i + 1] = key Termination: De loop stopt wanneer j A.length + 1, dus dan zegt de invariant dat A[1.. A.length] gesorteerd is. Precies wat we wilden!

62 Tijdsanalyse

63 Tijdsanalyse Hoe lang duurt het? Berekeningstijd hangt af van vele factoren, aantal stappen niet We tellen basisoperaties als 1 stap Kijken naar orde van grootte van slechtste (of gemiddelde of heel soms beste) geval

64 Basisoperaties Rekenkundige operaties Variabeletoekenning Velden van een object uit het geheugen ophalen Element uit array lezen Parameters aan functies meegeven...

65 Analyse Meestal meer stappen bij grotere invoer We drukken berekeningstijd (runtime) uit in termen van invoergrootte Bijvoorbeeld: sorteren heeft als invoer een lijst van lengte n Maar: twee lijsten van lengte n kunnen nog heel verschillend zijn

66 Optimisten en pessimisten Slechtste geval Pessimisten Meest gebruikelijk Hoeveel stappen doet het algoritme maximaal bij invoer van grootte n?

67 Optimisten en pessimisten Slechtste geval Pessimisten Meest gebruikelijk Hoeveel stappen doet het algoritme maximaal bij invoer van grootte n? Gemiddeld geval Lastig uit te rekenen: hoe vaak komt elke invoer voor? Kansrekening nodig Soms gebruikt

68 Optimisten en pessimisten Slechtste geval Pessimisten Meest gebruikelijk Hoeveel stappen doet het algoritme maximaal bij invoer van grootte n? Gemiddeld geval Lastig uit te rekenen: hoe vaak komt elke invoer voor? Kansrekening nodig Soms gebruikt Beste geval Optimisten Niet zo interessant

69 Aantal stappen Tel aantal basisoperaties In een loop: vermenigvuldig met aantal loopiteraties Werk bij loops van binnen naar buiten Bij recursie: recurrente betrekkingen oplossen (later)

70 Slechtste geval zoek-in-rij zoek-in-rij(x, A) 1 i = 1 2 while i A.length 3 if x == A[i] 4 return i 5 else 6 i = i return 0

71 Slechtste geval zoek-in-rij zoek-in-rij(x, A) 1 i = 1 // A met lengte n 2 while i A.length 3 if x == A[i] 4 return i 5 else 6 i = i return 0

72 Slechtste geval zoek-in-rij zoek-in-rij(x, A) 1 i = 1 // A met lengte n 2 while i A.length // n keer 3 if x == A[i] 4 return i 5 else 6 i = i return 0

73 Slechtste geval zoek-in-rij zoek-in-rij(x, A) 1 i = 1 // A met lengte n 2 while i A.length // n keer 3 if x == A[i] // 6 stappen in loop 4 return i 5 else 6 i = i return 0

74 Slechtste geval zoek-in-rij zoek-in-rij(x, A) 1 i = 1 // A met lengte n 2 while i A.length // n keer 3 if x == A[i] // 6 stappen in loop 4 return i 5 else 6 i = i return 0 // 2 operaties buiten de loop

75 Slechtste geval zoek-in-rij zoek-in-rij(x, A) 1 i = 1 // A met lengte n 2 while i A.length // n keer 3 if x == A[i] // 6 stappen in loop 4 return i 5 else 6 i = i return 0 // 2 operaties buiten de loop Totaal: 6n + 2 stappen, is O(n)

76 Slechtste geval insertion sort insertion-sort(a) 1 for j = 2 to A.length 2 key = A[j] 3 i = j 1 4 while i > 0 and A[i] > key 5 A[i + 1] = A[i] 6 i = i 1 7 A[i + 1] = key

77 Slechtste geval insertion sort insertion-sort(a) 1 for j = 2 to A.length // j is 2.. n 2 key = A[j] 3 i = j 1 4 while i > 0 and A[i] > key 5 A[i + 1] = A[i] 6 i = i 1 7 A[i + 1] = key

78 Slechtste geval insertion sort insertion-sort(a) 1 for j = 2 to A.length // j is 2.. n 2 key = A[j] 3 i = j 1 4 while i > 0 and A[i] > key // j keer 5 A[i + 1] = A[i] 6 i = i 1 7 A[i + 1] = key

79 Slechtste geval insertion sort insertion-sort(a) 1 for j = 2 to A.length // j is 2.. n 2 key = A[j] 3 i = j 1 4 while i > 0 and A[i] > key // j keer 5 A[i + 1] = A[i] // 8 stappen in loop 6 i = i 1 7 A[i + 1] = key

80 Slechtste geval insertion sort insertion-sort(a) 1 for j = 2 to A.length // j is 2.. n 2 key = A[j] 3 i = j 1 4 while i > 0 and A[i] > key // j keer 5 A[i + 1] = A[i] // 8 stappen in loop 6 i = i 1 7 A[i + 1] = key // 6 stappen buiten while

81 Slechtste geval insertion sort insertion-sort(a) 1 for j = 2 to A.length // j is 2.. n 2 key = A[j] 3 i = j 1 4 while i > 0 and A[i] > key // j keer 5 A[i + 1] = A[i] // 8 stappen in loop 6 i = i 1 7 A[i + 1] = key // 6 stappen buiten while Totaal: n 8j + 6 = 4n n 14 = O(n 2 ) j=2

82 DOMjudge

83 DOMjudge DOMjudge test automatisch of een ingestuurd programma correct compileert de juiste uitvoer geeft snel genoeg is

84 Gebruik van DOMjudge insturen kan tot de deadline zo vaak je wilt (nou ja, binnen het redelijke) laatste inzending telt DOMjudge test werking, wij kijken code na op netheid/leesbaarheid

85 Mogelijke antwoorden correct: de code werkt correct! (maar: correcte code is niet altijd goede code)

86 Mogelijke antwoorden correct: de code werkt correct! (maar: correcte code is niet altijd goede code) compiler-error: de code compileert niet. De compileruitvoer is te bekijken.

87 Mogelijke antwoorden correct: de code werkt correct! (maar: correcte code is niet altijd goede code) compiler-error: de code compileert niet. De compileruitvoer is te bekijken. wrong-answer: de code gaf de verkeerde uitvoer, maar DOMjudge vertelt niet wat (hint: denk goed na over randgevallen)

88 Mogelijke antwoorden correct: de code werkt correct! (maar: correcte code is niet altijd goede code) compiler-error: de code compileert niet. De compileruitvoer is te bekijken. wrong-answer: de code gaf de verkeerde uitvoer, maar DOMjudge vertelt niet wat (hint: denk goed na over randgevallen) run-error: het programma is gecrasht (hint: misschien een IndexOutOfBoundsError?)

89 Mogelijke antwoorden correct: de code werkt correct! (maar: correcte code is niet altijd goede code) compiler-error: de code compileert niet. De compileruitvoer is te bekijken. wrong-answer: de code gaf de verkeerde uitvoer, maar DOMjudge vertelt niet wat (hint: denk goed na over randgevallen) run-error: het programma is gecrasht (hint: misschien een IndexOutOfBoundsError?) timelimit: het programma deed er te lang over (hint: meestal veel te lang, denk over complexiteit)

90 Cijferregeling practicum Als DOMjudge zegt correct: 7,5 punt Stijl/netheid: nog maximaal 2,5 punt erbij Niet correct in DOMjudge is dus 0 punten Niet voldaan aan eisen van opgave is ook 0 punten!

91 In- en uitvoer DOMjudge geeft het programma invoer (zoals beschreven in de opgave) het programma produceert de uitvoer horend bij die invoer DOMjudge controleert of de uitvoer is zoals verwacht

92 Voorbeeld De eerste regel van de invoer bevat een getal n. Daarna volgen n regels met op elke regel een getal x. Print voor elke x een regel uitvoer met 0 als x 0, of anders x 1. Invoer: Uitvoer:

Datastructuren en Algoritmen

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

Nadere informatie

Datastructuren en algoritmen voor CKI

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

Nadere informatie

Het Eindfeest. Algoritmiek Opgave 6, Voorjaar

Het Eindfeest. Algoritmiek Opgave 6, Voorjaar 1 Achtergrond Het Eindfeest Algoritmiek Opgave 6, Voorjaar 2017 1 Om het (successvol) afsluiten van Algoritmiek te vieren, is er een groot feest georganiseerd. Jij beschikt als enige van je vrienden over

Nadere informatie

DomJudge-Practicum. Open Dag UU

DomJudge-Practicum. Open Dag UU 1 Introductie DomJudge-Practicum Open Dag UU Bij veel vakken die je volgt tijdens je studie informatica aan de UU, moet je programmeeropdrachten maken. Soms moet je die inleveren zodat ze door de docent

Nadere informatie

Vierde college complexiteit. 14 februari Beslissingsbomen

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

Nadere informatie

Derde college complexiteit. 7 februari Zoeken

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

Nadere informatie

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

Uitwerking tentamen Analyse van Algoritmen, 29 januari

Uitwerking tentamen Analyse van Algoritmen, 29 januari Uitwerking tentamen Analyse van Algoritmen, 29 januari 2007. (a) De buitenste for-lus kent N = 5 iteraties. Na iedere iteratie ziet de rij getallen er als volgt uit: i rij na i e iteratie 2 5 4 6 2 2 4

Nadere informatie

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

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

Nadere informatie

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

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40 Recursion Introductie 37 Leerkern 37 5.1 Foundations of recursion 37 5.2 Recursive analysis 37 5.3 Applications of recursion 38 Terugkoppeling 40 Uitwerking van de opgaven 40 Hoofdstuk 5 Recursion I N

Nadere informatie

Datastructuren en algoritmen voor CKI

Datastructuren en algoritmen voor CKI Datastructuren en algoritmen voor CKI Jeroen Bransen 1 2 oktober 2015 1 met dank aan Hans Bodlaender en Gerard Tel Priority queue Priority queue ADT insert(q, x): voeg element x toe aan de queue maximum(q):

Nadere informatie

Datastructuren en algoritmen voor CKI

Datastructuren en algoritmen voor CKI Datastructuren en algoritmen voor CKI Jeroen Bransen 1 30 september 2015 1 met dank aan Hans Bodlaender en Gerard Tel Dynamische verzamelingen Stack implementaties Array met maximale grootte Linked List

Nadere informatie

Inleiding Programmeren 2

Inleiding Programmeren 2 Inleiding Programmeren 2 Gertjan van Noord November 26, 2018 Stof week 3 nogmaals Zelle hoofdstuk 8 en recursie Brookshear hoofdstuk 5: Algoritmes Datastructuren: tuples Een geheel andere manier om te

Nadere informatie

Studiewijzer. Bachelor Informatica. Inleiding Programmeren Studiejaar en semester: jaar 1, semester 1 (blok 1)

Studiewijzer. Bachelor Informatica. Inleiding Programmeren Studiejaar en semester: jaar 1, semester 1 (blok 1) Studiewijzer Bachelor Informatica Vak: Inleiding Programmeren Studiejaar en semester: jaar 1, semester 1 (blok 1) Coördinator: J. Lagerberg Docenten: R. Poss en J. Lagerberg Studielast: 6 EC Studiegidsnummer:

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

Algoritmiek 2015 / Algoritmiek 1

Algoritmiek 2015 / Algoritmiek 1 2015 / 2016 1 Waarom dit vak? Omdat Mensen ongeduldig zijn Het belangrijk is dat antwoorden (van berekeningen door computers) snel / op tijd komen (en juist zijn) Dus leren we Algoritmische technieken

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

Programmeermethoden NA. Week 6: Lijsten

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

Nadere informatie

Uitgebreide uitwerking Tentamen Complexiteit, mei 2007

Uitgebreide uitwerking Tentamen Complexiteit, mei 2007 Uitgebreide uitwerking Tentamen Complexiteit, mei 007 Opgave. a. Een beslissingsboom beschrijft de werking van het betreffende algoritme (gebaseerd op arrayvergelijkingen) op elke mogelijke invoer. In

Nadere informatie

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

Programmeermethoden NA

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

Nadere informatie

Zevende college algoritmiek. 23/24 maart Verdeel en Heers

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

Nadere informatie

Divide & Conquer: Verdeel en Heers vervolg. Algoritmiek

Divide & Conquer: Verdeel en Heers vervolg. Algoritmiek Divide & Conquer: Verdeel en Heers vervolg Algoritmiek Algoritmische technieken Vorige keer: Divide and conquer techniek Aantal toepassingen van de techniek Analyse met Master theorem en substitutie Vandaag:

Nadere informatie

Zevende college Algoritmiek. 6 april Verdeel en Heers

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

Nadere informatie

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

Vierde college complexiteit. 26 februari Beslissingsbomen en selectie Toernooimethode Adversary argument Complexiteit 2019/04 College 4 Vierde college complexiteit 26 februari 2019 Beslissingsbomen en selectie Toernooimethode Adversary argument 1 Complexiteit 2019/04 Zoeken: samengevat Ongeordend lineair

Nadere informatie

Algoritmiek 2016 / Algoritmiek 1

Algoritmiek 2016 / Algoritmiek 1 2016 / 2017 1 Waarom dit vak? Omdat Mensen ongeduldig zijn Het belangrijk is dat antwoorden (van berekeningen door computers) snel / op tijd komen (en juist zijn) Dus leren we Algoritmische technieken

Nadere informatie

Eerste college algoritmiek. 5 februari Introductie

Eerste college algoritmiek. 5 februari Introductie College 1 Eerste college algoritmiek 5 februari 2016 Introductie 1 Introductie -1- docent: Jeannette de Graaf; kamer 151 e-mail: j.m.de.graaf@liacs.leidenuniv.nl assistenten: Hanjo Boekhout, Leon Helwerda,

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

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

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

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

Nadere informatie

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

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

Nadere informatie

Datastructuren en algoritmen voor CKI

Datastructuren en algoritmen voor CKI Datastructuren en algoritmen voor CKI Jeroen Bransen 1 9 oktober 2015 1 met dank aan Hans Bodlaender en Gerard Tel Zoekbomen Binaire boom Bestaat uit knopen Beginknoop is de wortel (root) Elke knoop heeft

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

Zevende college complexiteit. 17 maart Ondergrens sorteren, Quicksort

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

Nadere informatie

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

Modulewijzer Tirdat01

Modulewijzer Tirdat01 Modulewijzer Tirdat01 W. Oele 25 augustus 2008 1 Inhoudsopgave 1 Inleiding en leerdoelen 3 2 Voorkennis 3 2.1 tirprg01 en tirprg02........................ 3 2.2 tirprg03.............................. 4

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

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 13 november 2013 Organisatie Docenten Jeroen Bransen Michael Moortgat Docenten Jeroen Bransen Imperatief programmeren (Java) Tot de kerst (ongeveer) Michael Moortgat

Nadere informatie

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

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

Nadere informatie

Algoritmiek 2017 / Algoritmiek 1

Algoritmiek 2017 / Algoritmiek 1 2017 / 2018 1 Waarom dit vak? Omdat Mensen ongeduldig zijn Het belangrijk is dat antwoorden (van berekeningen door computers) snel / op tijd komen (en juist zijn) Dus leren we Algoritmische technieken

Nadere informatie

Zesde college complexiteit. 19 maart Mergesort, Ondergrens sorteren Quicksort, Shellsort

Zesde college complexiteit. 19 maart Mergesort, Ondergrens sorteren Quicksort, Shellsort College 6 Zesde college complexiteit 19 maart 2019 Mergesort, Ondergrens sorteren Quicksort, Shellsort 1 Vorige keer Voor sorteeralgoritmen gebaseerd op arrayvergelijkingen, waarbij per arrayvergelijking

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

Zevende college algoritmiek. 24 maart Verdeel en Heers

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

Nadere informatie

Oefententamen 2. Tijd: 2 uur. Maximaal aantal punten: 30. Naam: Studentnummer:

Oefententamen 2. Tijd: 2 uur. Maximaal aantal punten: 30. Naam: Studentnummer: Oefententamen 2 C Naam: Studentnummer: Tijd: 2 uur Maximaal aantal punten: 30 Menselijke compiler (10 punten) 0. (1 punt) Stel, je haalt het tentamen als je tenminste een 5.5 gemiddeld hebt gehaald voor

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

Een spoedcursus python

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

Nadere informatie

Achtste college algoritmiek. 8 april Dynamisch Programmeren

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

Nadere informatie

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

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

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

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

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

Nadere informatie

Datastructuren en Algoritmen voor CKI

Datastructuren en Algoritmen voor CKI Ω /texmf/tex/latex/uubeamer.sty-h@@k 00 /texmf/tex/latex/uubeamer.sty Datastructuren en Algoritmen voor CKI Vincent van Oostrom Clemens Grabmayer Afdeling Wijsbegeerte Hoorcollege 5 16 februari 2009 Waar

Nadere informatie

BSc Kunstmatige Intelligentie. : Bachelor Kunstmatige Intelligentie Studiejaar, Semester, Periode : semester 1, periode 2

BSc Kunstmatige Intelligentie. : Bachelor Kunstmatige Intelligentie Studiejaar, Semester, Periode : semester 1, periode 2 Studiewijzer BACHELOR KUNSTMATIGE INTELLIGENTIE Vak : Opleiding : Bachelor Kunstmatige Intelligentie Studiejaar, Semester, Periode : 2015-2016 semester 1, periode 2 Coördinator(en) : dr. Maarten van Someren

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

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

Probleem met dobbelspel. 2IP05: Programmeren Blok A. 5 spelers,2 dobbelstenen. wstomv/edu/2ip05/ Per ronde werpt elke speler 1

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

Nadere informatie

ALGORITMIEK. Keuzemodule Wiskunde B/D. Mark de Berg TU Eindhoven

ALGORITMIEK. Keuzemodule Wiskunde B/D. Mark de Berg TU Eindhoven ALGORITMIEK Keuzemodule Wiskunde B/D Mark de Berg TU Eindhoven Voorwoord Algoritmiek is het gebied binnen de informatica dat zich bezig houdt met het ontwerpen en analyseren van algoritmen en datastructuren.

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

Opgaven QuickSort 3 mei 2019, Werkgroep, Datastructuren.

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

Nadere informatie

Tiende college algoritmiek. 14 april Gretige algoritmen

Tiende college algoritmiek. 14 april Gretige algoritmen College 10 Tiende college algoritmiek 1 april 011 Gretige algoritmen 1 Greedy algorithms Greed = hebzucht Voor oplossen van optimalisatieproblemen Oplossing wordt stap voor stap opgebouwd In elke stap

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

Tentamen Programmeren in C (EE1400)

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

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

Stacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49

Stacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49 Stacks and queues Introductie 45 Leerkern 45 6.1 Stacks 45 6.2 Queues 47 6.3 Double-ended queues 48 Terugkoppeling 49 Uitwerking van de opgaven 49 Bijlage: Diagrammen belangrijkste interfaces en klassen

Nadere informatie

Studiewijzer BACHELOR KUNSTMATIGE INTELLIGENTIE EXTRA KEUZENVAK VAK: C++ PROGRAMMEERMETHODEN

Studiewijzer BACHELOR KUNSTMATIGE INTELLIGENTIE EXTRA KEUZENVAK VAK: C++ PROGRAMMEERMETHODEN Studiewijzer BACHELOR KUNSTMATIGE INTELLIGENTIE VAK: C++ PROGRAMMEERMETHODEN EXTRA KEUZENVAK Semester, periode : 2 e semester, periode 4 en 5 Coördinator(en) : Arnoud Visser en Bas Terwijn Docent(en) :

Nadere informatie

Wouter Geraedts Processen & Processoren

Wouter Geraedts Processen & Processoren FACULTEIT DER NATUURWETENSCHAPPEN, WISKUNDE EN INFORMATICA Wouter Geraedts Overzicht Welkom op het werkcollege van Processen & Processoren! Gang van zaken Behandelen oefenopgaven w.geraedts@student.ru.nl

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

Optimalisering en Complexiteit, College 1. Han Hoogeveen, Utrecht University

Optimalisering en Complexiteit, College 1. Han Hoogeveen, Utrecht University Optimalisering en Complexiteit, College 1 Han Hoogeveen, Utrecht University Gegevens Docent : Han Hoogeveen : j.a.hoogeveen@uu.nl Vak website : http://www.cs.uu.nl/docs/vakken/opt/ Student assistenten

Nadere informatie

Tiende college algoritmiek. 2 mei Gretige algoritmen, Dijkstra

Tiende college algoritmiek. 2 mei Gretige algoritmen, Dijkstra College 10 Tiende college algoritmiek mei 013 Gretige algoritmen, Dijkstra 1 Muntenprobleem Gegeven onbeperkt veel munten van d 1,d,...d m eurocent, en een te betalen bedrag van n (n 0) eurocent. Alle

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

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

Fundamentele. Informatica 1. Eerste college: introductie

Fundamentele. Informatica 1. Eerste college: introductie Fundamentele 1 Informatica 1 Eerste college: introductie Rechenmaschine (1623) von Wilhelm Schickard (1592-1635), gebaut für seinen Freund Johannes Kepler Fundamentele Informatica 1 Docent: Jeannette de

Nadere informatie

Zoek- en sorteeralgoritmen en hashing

Zoek- en sorteeralgoritmen en hashing Zoek- en sorteeralgoritmen en hashing Femke Berendsen (3689301) en Merel van Schieveen (3510190) 9 april 2013 1 Inhoudsopgave 1 Inleiding 3 2 Zoek- en sorteeralgoritmen 3 2.1 Grote O notatie..........................

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

Uitgebreide uitwerking Tentamen Complexiteit, juni 2017

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

Nadere informatie

Optimalisering en Complexiteit, College 1. Han Hoogeveen, Utrecht University

Optimalisering en Complexiteit, College 1. Han Hoogeveen, Utrecht University Optimalisering en Complexiteit, College 1 Han Hoogeveen, Utrecht University Gegevens Docent : Han Hoogeveen : j.a.hoogeveen@uu.nl Vak website : http://www.cs.uu.nl/docs/vakken/opt/ Student assistenten

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

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

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

Nadere informatie

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

Inleiding programmeren

Inleiding programmeren Inleiding programmeren Docent: José Lagerberg Assistenten: Robin de Vries, Jordy Perlee, Dimitri Belfor, Stephen Swatman, Erik Kooistra, Daan Kruis, Daniel Louwrink Cursusinformatie: https://staff.fnwi.uva.nl/j.m.lagerberg

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

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

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

Nadere informatie

Amorized Analysis en Union-Find Algoritmiek

Amorized Analysis en Union-Find Algoritmiek Amorized Analysis en Union-Find Vandaag Amortized analysis Technieken voor tijdsanalyse van algoritmen Union-find datastructuur Datastructuur voor operaties op disjuncte verzamelingen Verschillende oplossingen

Nadere informatie

Derde college algoritmiek. 22 februari Complexiteit Toestand-actie-ruimte

Derde college algoritmiek. 22 februari Complexiteit Toestand-actie-ruimte Algoritmiek 2019/Complexiteit Derde college algoritmiek 22 februari 2019 Complexiteit Toestand-actie-ruimte 1 Algoritmiek 2019/Complexiteit Opgave 1 bomenpracticum Niet de bedoeling: globale (member-)variabele

Nadere informatie

Kortste Paden. Algoritmiek

Kortste Paden. Algoritmiek Kortste Paden Vandaag Kortste Paden probleem All pairs / Single Source / Single Target versies DP algoritme voor All Pairs probleem (Floyd s algoritme) Dijkstra s algoritme voor Single Source Negatieve

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

Fundamentele. Informatica 1. Eerste college: -introductie -verzamelingen I

Fundamentele. Informatica 1. Eerste college: -introductie -verzamelingen I Fundamentele 1 Informatica 1 Eerste college: -introductie -verzamelingen I Rechenmaschine (1623) von Wilhelm Schickard (1592-1635), gebaut für seinen Freund Johannes Kepler Fundamentele Informatica 1 Docent:

Nadere informatie

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei 2014. Parallel Systems: Introduction

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei 2014. Parallel Systems: Introduction Informatica Deel II: les 1 Java versus Python Jan Lemeire Informatica deel II februari mei 2014 Parallel Systems: Introduction Arabidopsis (zandraket) Arabidopsis (zandraket) MMIQQA Multimodal Microscopic

Nadere informatie

Practicumhandleiding. (versie 2010)

Practicumhandleiding. (versie 2010) (versie 2010) Belangrijk! In deze handleiding treft u alle informatie aan die nodig is voor de uitvoering van het practicum. Behalve de organisatie van het practicum zelf en een korte beschrijving van

Nadere informatie

Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 5 juni 2007, uur

Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 5 juni 2007, uur Uitgebreide uitwerking tentamen Algoritmiek Dinsdag juni 00, 0.00.00 uur Opgave. a. Een toestand bestaat hier uit een aantal stapels, met op elk van die stapels een aantal munten (hooguit n per stapel).

Nadere informatie

Discrete Wiskunde, College 12. Han Hoogeveen, Utrecht University

Discrete Wiskunde, College 12. Han Hoogeveen, Utrecht University Discrete Wiskunde, College 12 Han Hoogeveen, Utrecht University Dynamische programmering Het basisidee is dat je het probleem stap voor stap oplost Het probleem moet voldoen aan het optimaliteitsprincipe

Nadere informatie

Opmerkingen en vragen aan Ultieme vraag: Hoe beïnvloedt dit de winstkansen?

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

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

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

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

Tiende college algoritmiek. 4 mei Gretige Algoritmen Algoritme van Dijkstra

Tiende college algoritmiek. 4 mei Gretige Algoritmen Algoritme van Dijkstra Tiende college algoritmiek mei 018 Gretige Algoritmen Algoritme van Dijkstra 1 Muntenprobleem Gegeven onbeperkt veel munten van d 1,d,...d m eurocent, en een te betalen bedrag van n (n 0) eurocent. Alle

Nadere informatie

Tweede college algoritmiek. 12 februari Grafen en bomen

Tweede college algoritmiek. 12 februari Grafen en bomen College 2 Tweede college algoritmiek 12 februari 2016 Grafen en bomen 1 Grafen (herhaling) Een graaf G wordt gedefinieerd als een paar (V,E), waarbij V een eindige verzameling is van knopen (vertices)

Nadere informatie

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET Visual Basic.NET M. den Besten 0.3 VB. NET Inhoud Voorwoord Deel 1 Visual Basic.NET 1.1 Inleiding...13 1.2 De programmeertaal Visual Basic.NET...14 1.3 Microsoft Visual Basic 2010 Express Edition...15

Nadere informatie