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

Maat: px
Weergave met pagina beginnen:

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

Transcriptie

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

2 Datastructuren en Algoritmen Datastructuren, 6 ECTS eerstejaars Bachelor INF Datastructuren, 6 ECTS tweedejaars Bachelor KI 1 Organisatie 2 Practicum 3 Inhoud college 4 Analyse van algoritmen 5 ArrayList José Lagerberg (FNWI, UvA) Datastructuren 2 / 46

3 Organisatie college - theorie van datastructuren college - C voor Informatica practicum Java voor KI practicum C voor Informatica Afsluiting 1 Tentamen in 8ste week (moet voldoende zijn, dus 5.6 of hoger) 2 Practicum (moet voldoende zijn, dus 5.6 of hoger) José Lagerberg (FNWI, UvA) Datastructuren 3 / 46

4 Inhoud datastructuren 1 Analyse van Algoritmen 2 Basis Datastructuren Stacks en Queues Lijsten Hash tabellen Priority queues en heaps 3 Zoekbomen Binaire zoekbomen B-bomen AVL bomen, rood-zwart bomen Splay bomen José Lagerberg (FNWI, UvA) Datastructuren 4 / 46

5 Leerdoelen Leerdoelen studenten kunnen operaties op datastructuren en algoritmen classificeren met behulp van de Big-Oh notatie José Lagerberg (FNWI, UvA) Datastructuren 5 / 46

6 Inhoud vandaag 1 Analyse van algoritmen bestuderen van efficiency van algoritme als input grootte verandert, gebaseerd op aantal stappen, computertijd en geheugengebruik 2 Big-Oh notatie Gebruik Big-Oh notatie om algoritme en operaties op datastructuren te karakteriseren 3 Sorteeralgoritmen Bepaal Big-Oh van aantal sorteeralgoritmen 4 ArrayList is datastructuur toegankelijk met index Wat is probleem van ArrayList? José Lagerberg (FNWI, UvA) Datastructuren 6 / 46

7 Datastructuur Datastructuur = Systematische manier om gegevens op te slaan, te wijzigen, en terug te kunnen vinden. Voorbeelden: stapel, wachtrij, lijst, boom José Lagerberg (FNWI, UvA) Datastructuren 7 / 46

8 Algoritme Algoritme = eindige rij instructies om een doel te bereiken José Lagerberg (FNWI, UvA) Datastructuren 8 / 46

9 Worst case, best case, average case Voor probleem van grootte n: Worst case: langste looptijd voor alle mogelijke invoer ter grootte n - bepaal de maximum looptijd van algoritme Best case: kortste looptijd voor alle mogelijke invoer ter grootte n - bepaal de minimum looptijd van algoritme Average case: gemiddelde looptijd voor alle mogelijke invoer ter grootte n - bepaal de gemiddelde looptijd van algoritme José Lagerberg (FNWI, UvA) Datastructuren 9 / 46

10 Voorbeeld van 3 cases Gegeven ongesorteerde rij van n getallen tussen 1 en 100. Probleem: zoek getal 10 Worst case: doorloop hele rij en vindt getal 10 op laatste plek, of helemaal niet Best case: vindt getal 10 op eerste plek van rij Average case: doorloop helft van rij tot getal 10 gevonden José Lagerberg (FNWI, UvA) Datastructuren 10 / 46

11 Running time (looptijd) als functie van grootte input Een algoritme vergt inspanning: tijd, ruimte, (=tijds- of ruimtecomplexiteit) De inspanning neemt toe met de omvang van de input Average-case complexiteit is vaak moeilijk te bepalen We richten ons op de worst case complexiteit José Lagerberg (FNWI, UvA) Datastructuren 11 / 46

12 Experimentele Analyse door implementatie/benchmarking Nadelen Vereist implementatie, slechts steekproeven, Benchmarking: Implementeer je algoritme, test je implementatie uit op input van verschillende grootte en samenstelling, meet de looptijd in seconden en geheugengebruik in bytes teken een grafiek resultaat is hardware- en software-afhankelijk. met andere compiler en andere computer heel ander resultaat mogelijk José Lagerberg (FNWI, UvA) Datastructuren 12 / 46

13 Wiskundige (Asymptotische) Analyse Hoe kunnen we looptijd T (n) van algoritme bepalen uit definitie van algoritme? bepalen van aantal statements in algoritme looptijd T (n) bepalen als functie van invoergrootte n analyse geldt voor willekeurige input, looptijd is onafhankelijk van hardware en software. Asymptotische analyse 1 Groei van T (n) bekijken als n 2 Bepalen van worst case complexiteit van algoritme José Lagerberg (FNWI, UvA) Datastructuren 13 / 46

14 Asymptotische complexiteit Stel dat een algoritme 8n + 5 stappen nodig heeft voor input van grootte n Wat is de betekenis van de 8 en de +5? Als n groot wordt, heeft de +5 geen betekenis meer De 8 is niet nauwkeurig als verschillende operaties verschillende hoeveelheid tijd kosten Fundamenteel is dat de tijd lineair is in n Asymptotische complexiteit: als n groot wordt, vergeet dan alle termen van lagere orde, en beschouw alleen term met hoogste orde José Lagerberg (FNWI, UvA) Datastructuren 14 / 46

15 Complexiteit van algoritme, aantal stappen tellen? Analyse van algoritme voor berekenen van integer exponent s t a t i c i n t exp ( i n t a, i n t n ) { i n t ans = 1 ; w h i l e ( n > 0) { // w h i l e l o o p n k e e r u i t g e v o e r d ans = a ; n = 1 ; r e t u r n ans ; Hoeveel stappen T (n) gebruikt door methode? aantal stappen T (n) = n n T(n) Als n verdubbelt, dan verdubbelt looptijd José Lagerberg (FNWI, UvA) Datastructuren 15 / 46

16 c l a s s Voorbeeld1 { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { i n t [ ] a = {1, 4, 7, 10, 3, 4, 2, 9 ; i n t i n d e x = s e a r c h ( a, 2 ) ; System. out. p r i n t l n ( i n d e x i s + i n d e x ) ; / zoek naar een waarde i n een a r r a y / s t a t i c i n t s e a r c h ( i n t [ ] x, i n t t a r g e t ) { f o r ( i n t i = 0 ; i < x. l e n g t h ; i ++) { i f ( x [ i ] == t a r g e t ) r e t u r n i ; r e t u r n 1; worst case Als target niet aanwezig loop x.length = n keer uitgevoerd average case Als target wel aanwezig loop gemiddeld n/2 keer uitgevoerd best case Meteen eerste keer raak José Lagerberg (FNWI, UvA) Datastructuren 16 / 46

17 c l a s s Voorbeeld2 { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { i n t [ ] a = {1, 4, 7, 10, 3, 4, 2, 9 ; i n t [ ] b = {3, 9, 8, 2, 5, 6 ; System. out. p r i n t l n ( arethesame ( a, b ) ) ; / b e p a a l o f twee a r r a y s een z e l f d e element b e v a t t e n / s t a t i c boolean arethesame ( i n t [ ] x, i n t [ ] y ) { f o r ( i n t i = 0 ; i < x. l e n g t h ; i ++) { i f ( s e a r c h ( y, x [ i ] )!= 1) // element gevonden r e t u r n true ; r e t u r n f a l s e ; Loop in arethesame x.length = n keer uitgevoerd Loop binnen search y.length = m keer uitgevoerd Totale executie-tijd evenredig met n * m José Lagerberg (FNWI, UvA) Datastructuren 17 / 46

18 c l a s s Voorbeeld3 { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { i n t [ ] a = {1, 4, 7, 10, 3, 4, 2, 9 ; System. out. p r i n t l n ( a reunique ( a ) ) ; / b e p a a l o f a r r a y u n i e k e elementen b e v a t / s t a t i c boolean a reunique ( i n t [ ] x ) { f o r ( i n t i = 0 ; i < x. l e n g t h ; i ++) { f o r ( i n t j = 0 ; j < x. l e n g t h ; j ++) { i f ( i!= j && x [ i ] == x [ j ] ) // n i e t u n i e k r e t u r n f a l s e ; r e t u r n true ; worst case is als elementen uniek zijn i-for loop x.length = n keer, j-for loop x.length = n keer If-statement n 2 keer uitgevoerd José Lagerberg (FNWI, UvA) Datastructuren 18 / 46

19 c l a s s Voorbeeld4 { / b e p a a l o f a r r a y u n i e k e elementen b e v a t t e n / s t a t i c boolean a reunique ( i n t [ ] x ) { f o r ( i n t i = 0 ; i < x. l e n g t h ; i ++) { f o r ( i n t j = i + 1 ; j < x. l e n g t h ; j ++) { i f ( x [ i ] == x [ j ] ) r e t u r n f a l s e ; r e t u r n true ; worst case is als elementen uniek zijn eerste keer j-for loop x.length - 1 = n - 1 keer tweede keer j-for loop x.length - 2 = n - 2 keer laatste keer j-for loop 1 keer aantal keren if-statement n (n 1) (n 1) + (n 2) = = 0.5n 2 0.5n 2 José Lagerberg (FNWI, UvA) Datastructuren 19 / 46

20 Gebruik van Big-Oh (Asymptotische notatie) Wat is relatie tussen grootte van input en looptijd van algoritme? 1 als looptijd verdubbelt bij verdubbeling van n, dan algoritme van orde n (lineair) 2 als looptijd verviervoudigt bij verdubbeling van n, dan algoritme van orde n 2 (kwadratisch) 1 eerste algoritme van orde O(n) 2 tweede algoritme van orde O(n 2 ) Deze Big-Oh notatie gebruikt om algoritmen te classificeren: hoe reageren algoritmen op verandering van grootte van input? Bepaling van Big-Oh van algoritme: bekijk loops en of ze genest zijn bekijk hoe vaak een loop wordt doorlopen José Lagerberg (FNWI, UvA) Datastructuren 20 / 46

21 Executietijd T (n) f o r ( i n t i = 0 ; i < n ; i ++) { f o r ( i n t j = 0 ; j < n ; j ++) { s t a t e m e n t f o r ( i n t i = 0 ; i < n ; i ++) { s t a t e m e n t 1 s t a t e m e n t 2 s t a t e m e n t 3 s t a t e m e n t 4 s t a t e m e n t 5 Neem aan statement gebruikt één tijdseenheid en for-loops kosten niets Executietijd T (n) als functie van n is T (n) = n 2 + 3n + 2 T (n) = O(n 2 ) José Lagerberg (FNWI, UvA) Datastructuren 21 / 46

22 Definitie van Big-Oh Definitie Zij f, g : N R. We zeggen f (n) is O(g(n)) als er c R en n 0 N bestaan met c > 0 en n 0 1 zo dat f (n) c g(n) voor n n 0 José Lagerberg (FNWI, UvA) Datastructuren 22 / 46

23 Big-Oh Definitie Zij f, g : N R. We zeggen f (n) is O(g(n)) als er c R en n 0 N bestaan met c > 0 en n 0 1 zo dat f (n) c g(n) voor n n 0 Voorbeeld 2n + 10 is O(n) 2n + 10 cn (c 2)n 10 n 10/(c 2) Neem c = 3 en n 0 = 10 2n n voor n 10 José Lagerberg (FNWI, UvA) Datastructuren 23 / 46

24 Big-Oh Voorbeeld Voorbeeld n 2 is NIET O(n) n 2 cn n c Onmogelijk... c is constante José Lagerberg (FNWI, UvA) Datastructuren 24 / 46

25 Meer Big-Oh Voorbeelden Voorbeeld (7n 2) 7n 2 is O(n). We hebben c > 0 en n 0 1 nodig met 7n 2 cn voor n n 0. Neem c = 7, n 0 = 1. 7n 2 7n voor n 1 José Lagerberg (FNWI, UvA) Datastructuren 25 / 46

26 Big-Oh voorbeeld Voorbeeld (3n n 2 + 5) 3n n is O(n 3 ). We hebben c > 0 en n 0 1 nodig met 3n n cn 3 voor n n 0. Neem c = 4 en n 0 = 21. 3n n n 3 voor n 21. José Lagerberg (FNWI, UvA) Datastructuren 26 / 46

27 Big-Oh voorbeeld Voorbeeld (3 log n + 5) 3 log n + 5 is O(log n). We hebben c > 0 en n 0 1 nodig met 3 log n + 5 c log n voor n n 0. Je kunt nemen c = 4 en dan is n 0 = 32. (log 2 5 = 5 log n) Of je kunt nemen c = 5 en dan is n 0 = 7. (log 2 5/2 = 5/2 log n). 3 log n log n voor n log n log n voor n 7. José Lagerberg (FNWI, UvA) Datastructuren 27 / 46

28 Big-Oh begrenst de groei van boven De uitspraak f (n) is O(g(n)) betekent dat het groeitempo van f (n) niet groter is dan dat van g(n). Big-Oh Regels a k n k + a k 1 n k 1 + a 1 n + a 0 is O(n k ): laat constanten en kleine orde-termen weg! Zeg 2n is O(n) i.p.v. 2n is O(n 2 ) (minimale) 3n + 5 is O(n) i.p.v. 3n + 5 is O(3n). José Lagerberg (FNWI, UvA) Datastructuren 28 / 46

29 Meest voorkomende groeitempo s O(1) constant bepalen of getal even of oneven O(log(n)) logaritmisch binair zoeken in gesorteerd array O(n) lineair zoeken van item in ongesorteerd array O(n log(n)) log-lineair FFT, heap sort, merge sort O(n 2 ) kwadratisch bubble-, insertion-, selection sort O(n 3 ) derdemachts O(2 n ) exponentieel traveling salesman problem O T(50) T(100) T(100)/T(50) O(1) O(log(n)) O(n) O(n log(n)) O(n 2 ) O(n 3 ) O(2 n ) Table: uit Datastructures van Koffman en Wolfgang José Lagerberg (FNWI, UvA) Datastructuren 29 / 46

30 José Lagerberg (FNWI, UvA) Datastructuren 30 / 46

31 Opgaven Opgave 1 Hoe vaak worden de statements in de binnenste loop uitgevoerd? Wat is de orde van dit programmaonderdeel? for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) {... Oplossing aantal keren is n n = n 2 orde O(n 2 ) José Lagerberg (FNWI, UvA) Datastructuren 31 / 46

32 Opgaven Opgave 2 Hoe vaak worden de statements in de binnenste loop uitgevoerd? Wat is de orde van dit programmaonderdeel? for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) {... Oplossing aantal keren is ((n 1) + (n 2) + + (1)) = n(n 1) 2 = 0.5n 2 0.5n orde O(n 2 ) José Lagerberg (FNWI, UvA) Datastructuren 32 / 46

33 Opgaven Opgave 3 Hoe vaak worden de statements in de loop uitgevoerd? Wat is de orde van dit programmaonderdeel? for (int i = 1; i < n; i *= 2) {... Oplossing Loop wordt uitgevoerd voor de volgende waarden van i: 1, 2, 4, 8, 16, 32,..., 2 k 1 met 2 k n 2 k 1 n 2 k k 1 log n k orde O(log n) José Lagerberg (FNWI, UvA) Datastructuren 33 / 46

34 Opmerking Big-Oh notatie drukt een relatie tussen functies uit Het zegt niet wat de functies zijn! Functie links hoeft niet de worst-case running time te zijn Voorbeeld Binair zoeken in gesorteerd array van grootte n We zullen later zien dat: worst-case running time is O(log n) best-case running time is O(1) gemiddelde running time is O(log n/2) = O(log n) geheugengebruik is O(n) José Lagerberg (FNWI, UvA) Datastructuren 34 / 46

35 De buren van Big-Oh ondergrens f (n) is Ω(g(n)) c > 0, n 0 1, n n 0 : f (n) c g(n) bovengrens én ondergrens f (n) is Θ(g(n)) c, c > 0, n 0 1, n n 0 : c g(n) f (n) c g(n) dwz. f (n) is O(g(n)) en Ω(g(n)) José Lagerberg (FNWI, UvA) Datastructuren 35 / 46

36 Sorteeralgoritmen Fundamenteel probleem van informatica: sorteren lijst Bubble-Sort O(n 2 ) Selection-Sort O(n 2 ) Insertion-Sort O(n 2 ) Merge-Sort O(n log n) Quick-Sort O(n log n) José Lagerberg (FNWI, UvA) Datastructuren 36 / 46

37 Vergelijking O(n 2 ) sorteeralgoritmen José Lagerberg (FNWI, UvA) Datastructuren 37 / 46

38 Vergelijking O(n log n) sorteeralgoritmen José Lagerberg (FNWI, UvA) Datastructuren 38 / 46

39 ArrayList is datastructuur met index Toegang elementen in willekeurige volgorde met index lengte array is vast toevoeging add(int index, E e) op bepaalde plek schuift andere elementen op (van orde O(n)) weghalen remove(int index) op bepaalde plek schuift andere elementen terug (van orde O(n)) als ArrayList vol, moet nieuw groter array gealloceerd worden en oude data hierin gecopieerd worden de add(e e) operatie voegt element toe aan einde lijst (van orde O(1)) wat kost deze add(e e) operatie gemiddeld? (volgende week) I n d o c u m e n t a t i e van A r r a y L i s t The add o p e r a t i o n r u n s i n a m o r t i z e d c o n s t a n t time, t h a t i s, adding n e l e m e n t s r e q u i r e s O( n ) time. José Lagerberg (FNWI, UvA) Datastructuren 39 / 46

40 Toevoegen aan en weghalen uit ArrayList A r r a y L i s t <S t r i n g > l i s t = new A r r a y L i s t <S t r i n g >(); l i s t. add ( Jansen ) ; l i s t. add ( P i e t e r s e n ) ; l i s t. add ( D i r k s e n ) ; l i s t. add ( Arends ) ; System. out. p r i n t l n ( l i s t ) ; l i s t. add ( 2, Willems ) ; System. out. p r i n t l n ( l i s t ) ; l i s t. add ( Burger ) ; System. out. p r i n t l n ( l i s t ) ; l i s t. remove ( 0 ) ; System. out. p r i n t l n ( l i s t ) ; [ Jansen, P i e t e r s e n, Dirksen, Arends ] [ Jansen, P i e t e r s e n, Willems, Dirksen, Arends ] [ Jansen, P i e t e r s e n, Willems, Dirksen, Arends, Burger ] [ P i e t e r s e n, Willems, Dirksen, Arends, Burger ] José Lagerberg (FNWI, UvA) Datastructuren 40 / 46

41 Reallocatie van List a b s t r a c t S i m p l e L i s t < > I L i s t / \ add ( ) / \ s i z e ( ) / \ c l e a r ( ) / \ a b s t r a c t r e s i z e ( ) / \ S i m p l e L i s t D o u b l i n g S i m p l e L i s t F i x e d r e s i z e ( ) r e s i z e ( ) José Lagerberg (FNWI, UvA) Datastructuren 41 / 46

42 Reallocatie van List p u b l i c i n t e r f a c e I L i s t { p u b l i c void add ( Object x ) ; p u b l i c i n t s i z e ( ) ; p u b l i c void c l e a r ( ) ; p u b l i c a b s t r a c t c l a s s S i m p l e L i s t implements I L i s t { p r i v a t e s t a t i c f i n a l i n t INIT SIZE = 1 0 ; Object [ ] mycon ; i n t mysize ; p u b l i c S i m p l e L i s t ( ) { mycon = new Object [ INIT SIZE ] ; mysize = 0 ;... José Lagerberg (FNWI, UvA) Datastructuren 42 / 46

43 Voorbeeld van eigen SimpleList methoden p u b l i c void add ( Object x ) { i f ( s i z e ( ) == mycon. l e n g t h ) r e s i z e ( ) ; mycon [ mysize ] = x ; mysize++; a b s t r a c t void r e s i z e ( ) ; p u b l i c i n t s i z e ( ) { r e t u r n mysize ; p u b l i c void c l e a r ( ) { mycon = new Object [ 1 0 ] ; mysize = 0 ; José Lagerberg (FNWI, UvA) Datastructuren 43 / 46

44 Fixed of Doubling p u b l i c c l a s s S i m p l e L i s t F i x e d extends S i m p l e L i s t { void r e s i z e ( ) { Object [ ] temp = new Object [ s i z e ( ) ] ; System. a r r a y c o p y (mycon, 0, temp, 0, s i z e ( ) ) ; mycon = temp ; p u b l i c c l a s s S i m p l e L i s t D o u b l i n g extends S i m p l e L i s t { void r e s i z e ( ) { Object [ ] temp = new Object [ s i z e ( ) 2 ] ; System. a r r a y c o p y (mycon, 0, temp, 0, s i z e ( ) ) ; mycon = temp ; José Lagerberg (FNWI, UvA) Datastructuren 44 / 46

45 Fixed of Doubling A r r a y L i s t <I L i s t > l i s t s = new A r r a y L i s t <I L i s t >(); l i s t s. add ( new S i m p l e L i s t D o u b l i n g ( ) ) ; l i s t s. add ( new S i m p l e L i s t F i x e d ( ) ) ; f o r ( I L i s t l i s t : l i s t s ) { System. out. p r i n t l n ( l i s t. g e t C l a s s ( ). getsimplename ( ) ) ; t e s t L i s t ( l i s t ) ; s t a t i c void t e s t L i s t ( I L i s t l i s t ) { f o r ( i n t i = 1000; i < ; i = 2){ long s t a r t = System. c u r r e n t T i m e M i l l i s ( ) ; f o r ( i n t j = 0 ; j < i ; j ++) l i s t. add ( j ) ; long s t o p = System. c u r r e n t T i m e M i l l i s ( ) ; show ( Time to add + i + e l e m e n t s + ( s t o p s t a r t ) + m i l l i s e c o n d s. ) ; l i s t. c l e a r ( ) ; José Lagerberg (FNWI, UvA) Datastructuren 45 / 46

46 java -Xint ListTester % j a v a X i n t L i s t T e s t e r S i m p l e L i s t D o u b l i n g Time to add 1000 e l e m e n t s 1 m i l l i s e c o n d s. Time to add 2000 e l e m e n t s 1 m i l l i s e c o n d s. Time to add 4000 e l e m e n t s 1 m i l l i s e c o n d s. Time to add 8000 e l e m e n t s 3 m i l l i s e c o n d s. Time to add e l e m e n t s 5 m i l l i s e c o n d s. Time to add e l e m e n t s 10 m i l l i s e c o n d s. Time to add e l e m e n t s 21 m i l l i s e c o n d s. Time to add e l e m e n t s 44 m i l l i s e c o n d s. S i m p l e L i s t F i x e d Time to add 1000 e l e m e n t s 0 m i l l i s e c o n d s. Time to add 2000 e l e m e n t s 0 m i l l i s e c o n d s. Time to add 4000 e l e m e n t s 2 m i l l i s e c o n d s. Time to add 8000 e l e m e n t s 2 m i l l i s e c o n d s. Time to add e l e m e n t s 5 m i l l i s e c o n d s. Time to add e l e m e n t s 16 m i l l i s e c o n d s. Time to add e l e m e n t s 36 m i l l i s e c o n d s. Time to add e l e m e n t s 117 m i l l i s e c o n d s. José Lagerberg (FNWI, UvA) Datastructuren 46 / 46

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

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

12 september 2012 Complexiteit. Analyse van algoritmen (doelen) Empirische analyse : Voorbeeld Gevolgen 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 2012 1/41 Efficientie-analyse

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

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

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

Tweede college complexiteit. 12 februari Wiskundige achtergrond

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

Nadere informatie

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

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

Hoofdstuk 3. Week 5: Sorteren. 3.1 Inleiding

Hoofdstuk 3. Week 5: Sorteren. 3.1 Inleiding Hoofdstuk 3 Week 5: Sorteren 3.1 Inleiding Zoals al bleek in college 1 kunnen zoekalgoritmen veel sneller worden uitgevoerd, indien we weten dat de elementen in de lijst, waarin wordt gezocht, geordend

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

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

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

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

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

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

Examen Datastructuren en Algoritmen II

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

Nadere informatie

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

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

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

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

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

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

Examen Datastructuren en Algoritmen II

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

Nadere informatie

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II Tweede bachelor Informatica Academiejaar 2005 2006, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. 1. Splaybomen

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

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

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

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

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

Datastructuren; (Zoek)bomen

Datastructuren; (Zoek)bomen Datastructuren; (Zoek)bomen Bomen, zoekbomen, gebalanceerde zoekbomen José Lagerberg FNWI, UvA José Lagerberg (FNWI, UvA) Datastructuren; (Zoek)bomen 1 / 50 Bomen Traversal van bomen Datastructuur van

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

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

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

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

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

Datastructuren Uitwerking jan

Datastructuren Uitwerking jan Datastructuren Uitwerking jan 2015 1 1a. Een abstracte datastructuur is een beschrijving van een datastructuur, met de specificatie van wat er opgeslagen wordt (de data en hun structuur) en welke operaties

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

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

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

Examen Algoritmen en Datastructuren III

Examen Algoritmen en Datastructuren III Derde bachelor Informatica Academiejaar 2006 2007, eerste zittijd Examen Algoritmen en Datastructuren III Naam :.............................................................................. 1. (2 pt)

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

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

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

Programmeren in C++ Efficiënte zoekfunctie in een boek

Programmeren in C++ Efficiënte zoekfunctie in een boek Examen Software Ontwikkeling I 2e Bachelor Informatica Faculteit Wetenschappen Academiejaar 2010-2011 21 januari, 2011 **BELANGRIJK** 1. Lees eerst de volledige opgave (inclusief de hints/opmerkingen)!

Nadere informatie

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

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

Nadere informatie

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

V = {a, b, c, d, e} Computernetwerken: de knopen zijn machines in het netwerk, de kanten zijn communicatiekanalen.

V = {a, b, c, d, e} Computernetwerken: de knopen zijn machines in het netwerk, de kanten zijn communicatiekanalen. WIS14 1 14 Grafen 14.1 Grafen Gerichte grafen Voor een verzameling V is een binaire relatie op V een verzameling geordende paren van elementen van V. Voorbeeld: een binaire relatie op N is de relatie KleinerDan,

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

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

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

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

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

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

Nadere informatie

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

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

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

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

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

Derde college algoritmiek. 23 februari Complexiteit Toestand-actie-ruimte Algoritmiek 2018/Complexiteit Derde college algoritmiek 2 februari 2018 Complexiteit Toestand-actie-ruimte 1 Algoritmiek 2018/Complexiteit Tijdcomplexiteit Complexiteit (= tijdcomplexiteit) van een algoritme:

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

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

Datastructuren en algoritmen voor CKI

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

Nadere informatie

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

Examen Datastructuren en Algoritmen II

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

Nadere informatie

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

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

Nadere informatie

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

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

D-dag 2014 Vrijeschool Zutphen VO. D -DAG 13 februari 2014: 1+ 1 = 2. (en hoe nu verder?) 1 = 2en hoe nu verder?

D-dag 2014 Vrijeschool Zutphen VO. D -DAG 13 februari 2014: 1+ 1 = 2. (en hoe nu verder?) 1 = 2en hoe nu verder? D -DAG 13 februari 2014: 1+ 1 = 2 (en hoe nu verder?) 1 = 2en hoe nu verder? 1 Inleiding Snel machtsverheffen Stel je voor dat je 7 25 moet uitrekenen. Je weet dat machtsverheffen herhaald vermenigvuldigen

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

Logische Complexiteit Hoorcollege 12

Logische Complexiteit Hoorcollege 12 Logische Complexiteit Hoorcollege 12 Jacob Vosmaer Bachelor CKI, Universiteit Utrecht 22 maart 2011 Tijdscomplexiteit Inleiding Grote O en kleine o Complexiteitsanalyse van een simpele taal Complexiteitsverschillen

Nadere informatie

Examen Datastructuren en Algoritmen II

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

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

Kortste Paden. Algoritmiek

Kortste Paden. Algoritmiek Kortste Paden Toepassingen Kevin Bacon getal Six degrees of separation Heeft een netwerk de small-world eigenschap? TomTom / Google Maps 2 Kortste paden Gerichte graaf G=(N,A), en een lengte L(v,w) voor

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

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

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

Nadere informatie

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

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II Tweede bachelor Informatica Academiejaar 2012 2013, tweede zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele

Nadere informatie

Algoritmen, Datastructuren en Complexiteit ( en ) Uitwerkingen

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

Nadere informatie

Informatica: C# WPO 11

Informatica: C# WPO 11 Informatica: C# WPO 11 1. Inhoud Pass by reference (ref, out), recursie, code opdelen in verschillende codebestanden 2. Oefeningen Demo 1: Swapfunctie Demo 2: TryParse(int) Demo 3: Recursion Tree Demo

Nadere informatie

Informatica: C# WPO 7

Informatica: C# WPO 7 Informatica: C# WPO 7 1. Inhoud 1D-arrays, Lijsten 2. Oefeningen Demo 1: Vul de 1D-array Demo 2: Stringreplace Demo 3: Vul de lijst Demo 4: Debug oplossingen demo s 1, 2 en 3 A: Array reversal A: Gemiddelde

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

Bouwstenen voor PSE. Datatypes en Datastructuren

Bouwstenen voor PSE. Datatypes en Datastructuren Bouwstenen voor PSE Datatypes en Datastructuren Definitie Datatype Klasse van dataobjecten tesamen met operaties om ze te construeren, te manipuleren en te verwijderen. Een datatype omvat een specificatie

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

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

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

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

Twaalfde college algoritmiek. 13 mei Branch & Bound Heap, Heapsort & Heapify

Twaalfde college algoritmiek. 13 mei Branch & Bound Heap, Heapsort & Heapify Algoritmiek 2016/Branch & Bound Twaalfde college algoritmiek 13 mei 2016 Branch & Bound Heap, Heapsort & Heapify 1 Algoritmiek 2016/Branch & Bound TSP met Branch & Bound Mogelijke ondergrenzen voor de

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

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II Tweede bachelor Informatica Academiejaar 2008 2009, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees elke

Nadere informatie

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

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

Nadere informatie

Oefeningen voor de oefeningenles. Oefening 1

Oefeningen voor de oefeningenles. Oefening 1 Oefeningen voor de oefeningenles Oefening 1 Gegeven een arbitraire binaire zoekboom T met n toppen en een (andere of gelijke) binaire zoekboom T die ook n sleutels bevat. Beschrijf een algoritme dat in

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

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

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

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II Tweede bachelor Informatica Academiejaar 2006 2007, tweede zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. 1. Verzamelingen:

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

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

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

Nadere informatie

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

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