Algoritmiek 2017 / Algoritmiek 1

Maat: px
Weergave met pagina beginnen:

Download "Algoritmiek 2017 / Algoritmiek 1"

Transcriptie

1 2017 /

2 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 kennen, toepassen, analyseren Belangrijke algoritmen voor centrale problemen kennen en begrijpen 2

3 Docenten Hans Bodlaender Buys Ballotgebouw 503 Maandags afwezig Erik Jan van Leeuwen Buys Ballotgebouw 509 3

4 Team werkcollege en practicum Werkcollegeleider: Tom van der Zanden Studentassistenten (werkcollege, clarifications domjudge): Casper Hagenaars Max Hessey Jelle Kroon Mike de Vries 4

5 Onderdelen College Werkcollege Practicum Tentamens 5

6 Onderdelen College Twee keer per week, belangrijke aanvulling op stof uit boek Powerpoints op website Werkcollege Practicum Tentamens 6

7 Onderdelen College Werkcollege Twee keer per week, na college Belangrijk: oefenen van stof is belangrijker dan er naar luisteren Niet bedoeld voor practicum Steeds wordt 1 opgave aan het eind voorgedaan Practicum Tentamens 7

8 Onderdelen College Werkcollege Practicum 6 opgaven met Domjudge (straks meer) Tentamens 8

9 Onderdelen College Werkcollege Practicum Tentamens Twee deeltentamens, elk over ongeveer helft van de stof Je mag meenemen: 4 kantjes A4 (2 vel A4 aan beide zijden beschreven, 4 vel A4 aan 1 kant beschreven, normaal lettertype, zelfgemaakt) 9

10 Cijfer Beide deeltentamens tellen even zwaar Eindcijfer: Hooguit 3 practicumopgaven goed: onvoldoende 4 practicumopgaven goed: gemiddeld tentamencijfer afgerond 5 practicumopgaven goed: gemiddeld tentamencijfer afgerond practicumopgaven goed: gemiddeld tentamencijfer afgerond + 1 Afronding: 5.5 gaat naar 6, 5.49 naar 5. Boven de 6 op halve punten afgerond. 10

11 Herkansingsregeling Je kan of: 1 practicumopgave inhalen 2 practicumopgaven inhalen Hertentamen doen 1 practicumopgave inhalen en hertentamen doen Hertentamen vervangt laagste deeltentamencijfer en gaat over de hele stof UU-regel: als je een voldoende hebt kan je die niet met een herkansing ophogen 11

12 Practicum 6 opgaven, inleveren via Domjudge 1e opgave niet triviaal, maar veel makkelijker dan de rest Latere opgaven veel moeilijker. Opgave 6 is het moeilijkst Je moet er minstens 4 halen. Let op de deadlines! Te laat is te laat Dus: begin op tijd! 12

13 Alleen werken Je moet de opgaven alleen maken Er wordt gecontroleerd op fraude, en bij een vermoeden van fraude wordt de regeling van de Universiteit Utrecht gevolgd en is het eindcijfer van dit vak een 1 Berisping ; 2e berisping uitsluiting studie 1 jaar Je mag wel kort (1.5 minuut) met elkaar praten over het practicum, maar niet: Code of pseudocode van elkaar bekijken (of inkijken, uitwisselen, geven, in ontvangst nemen, debuggen, inleveren, etc.) Ook niet openbaar maken 13

14 Domjudge Je kan een opgave tot de deadline zo vaak inleveren als je wilt Tot in het redelijke Je ingeleverde code wordt: Gecompileerd en gedraaid met een aantal geheime testinvoeren Je krijgt te horen: Code compileert niet goed Code geeft runerror Code geeft fout antwoord op testinvoer Code gebruikt te veel tijd Correct programma In het algemeen geldt: bij correct programma heb je de opgave gehaald; anders kan je je programma verbeteren en opnieuw inleveren 14

15 Tips en hulp Test je programma ook met eigen testinvoeren en die van de website Clarifications: Vragen over je programma kan je stellen via clarificationssysteem in domjudge aan studentassistenten Verwacht niet altijd en niet direct antwoord Zorg voor leesbare code Hulp door clarifications heeft grenzen Geen clarifications in weekend Programma te langzaam: Gebruik je het goede algoritme? Gebruik je de goede constructies uit C#? (Bijvoorbeeld: ingebouwde functies kunnen grote complexiteit hebben) Let op: Geheime inputs Tijd 15

16 Allerlei vragen Over organisatie van vak, cijfers van tentamens, etc: docent Hans Bodlaender Over practicum (cijfers, inloggen, ): Tom van der Zanden Over inhoud: werkcollege, of docent in de pauze 16

17 Inhoud Algoritmische technieken: Dynamisch programmeren Divide and Conquer Greedy Algorithms Gerandomiseerde algorithms Analyse van algoritmen Geamortiseerde analyse (o.a. Union-Find datastructuur) NP-volledigheid Benaderingsalgoritmen Grafen en netwerken Kortste paden Opspannende bomen Stroming en snedes 17

18 Dynamisch Programmeren I

19 Dynamisch programmeren Een algoritmische techniek Werkt voor veel verschillende problemen Soms snel, soms langzaam Soms makkelijk, soms moeilijk Algoritme wordt gemaakt door volgen van een `stappenplan 19

20 Inhoud Voorbeelden De techniek Het stappenplan Nog meer voorbeelden, en ingewikkelder toepassingen van Dynamisch Programmeren Implementatie details 20

21 Eerste voorbeeld Fibonaccigetallen FF(0) = 0; FF(1) = 1 Als ii > 1, dan is FF(ii) = FF(ii 1) + FF(ii 2) Hoe reken je FF(6) uit? 21

22 Recursief Method Fibonacci (integer ii) if ii == 0 then return 0; if ii == 1 then return 1; Return Fibonacci(ii 1) + Fibonacci(ii 2) 22

23 Beter: een dynamisch programma Method FibonacciDP (integer ii) if ii == 0 then return 0 if ii == 1 then return 1 Maak een integer array FF[0 ii] aan FF[0] = 0; FF[1] = 1; for jj == 2 to ii do FF jj = FF jj 1 + FF jj 2 enddo. Return FF[jj] 23

24 De driehoek van Pascal Function CC(nn, kk) if (kk == 0) or (kk == nn) then return 1 else return CC(nn 1, kk 1) + CC(nn 1, kk) n n! n 1 n 1 = = + k k!( n k)! k 1 k 24

25 Recursief of met Memorisatie? In functionele taal als bijv. Haskell (hangt af van compiler): Iedere term CC(ii, jj) wordt maar 1 keer uitgerekend. Kost OO((nn + 1)(kk + 1)) tijd, zeg OO(nnnn). In imperatieve taal: Verschillende termen worden vaker dan 1 keer uitgerekend Kost veel tijd: berekenen van CC(nn, kk) kost Θ(CC(nn, kk)) tijd!! Function CC(nn, kk) if (k == 0) or (kk == nn) then return 1 else return CC(nn 1, kk 1) + CC(nn 1, kk) 25

26 Driehoek van Pascal Imperatief Function CC(nn, kk) Neem 2-dimensionaal array AA[0 nn, 0 kk] for ii = 0 to nn do for jj = 0 to min (ii, kk) do if (jj == 0) or (jj == ii) then AA[ii, jj] = 1 else AA[ii, jj] = AA[ii 1, jj 1] + AA[ii 1, jj] Return A[n,k] Zelfde stappen als in recursief algoritme, maar 26

27 Equivalent Function CC(nn, kk) Neem 2-dimensionaal array AA[0 nn, 0 kk] for ii = 0 to nn do AA[ii, 0] = 1; for ii = 0 to kk do AA[ii, ii] = 1; for ii = 0 to nn do Initialisatie buiten de hoofdloop gehaald: dit is net iets efficienter for jj = 0 to min (ii, kk) do AA[ii, jj] = AA[ii 1, jj 1] + AA[ii 1, jj] Return AA[nn, kk] 27

28 Analyse dynamisch programmeer OO(nnnn) tijd Kan in OO(kk) geheugenruimte door maar twee regels van array te gebruiken algoritme Function CCC(nn, kk) Neem arrays AA[0 kk] en BB[0 kk] for ii = 0 to nn do for jj = 0 to min (ii, kk) do if (jj == 0) or (jj == ii) then AA[jj] = 1 else AA[jj] = BB[jj 1] + BB[jj] for jj = 0 to kk do Return AA[kk] BB[jj] = AA[jj] 28

29

30 Voorbeeld 2: Simplified Risk Deel van spel: Twee `legers : ii rode steentjes en jj blauwe steentjes. Beide spelers gooien een dobbelsteen. Als de rode speler meer dan de blauwe speler gooit, dan gaat er 1 blauw steentje weg, anders 1 rood steentje. Een speler wint als de tegenstander geen steentjes meer heeft PP(ii, jj) is kans dat rode speler wint. PP(ii, jj) = 15/36 PP(ii, jj 1) + 21/36 PP(ii 1, jj) Function PP(ii, jj) if (ii == 0) then return 0 else if (jj == 0) then return 1 else return 15/36 PP(ii, jj 1) + 21/36 PP(ii 1, jj) 30

31 Simplified Risk (2) Met Memorisatie (functioneel): snel Recursief imperatief: Te veel tijd Function PP(ii, jj) if (ii == 0) then return 0 else if (jj == 0) then return 1 else return 15/36 PP(ii, jj 1) + 21/36 PP(ii 1, jj) 31

32 0 j: aantal steentjes blauwe speler * i: aantal van rode 2 speler /36 85/144 32

33 Berekeningsvolgorde Function SRP(ii, jj) Maak 2 dim array PP[0 ii, 0 jj] for rr = 0 to ii do for bb = 0 to jj do Bereken PP[rr, bb] Return PP[ii, jj] 33

34 Function SSSSSS(ii, jj) DP algoritme voor Simplified Risk Maak 2 dim array PP 0 ii, 0 jj for rr = 0 to ii do for bb = 0 to jj do if (rr == 0) then PP[rr, bb] = 0 else if (bb == 0) then PP[rr, bb] = 1 else PP rr, bb = Return PP[ii, jj] PP rr, bb PP rr 1, bb 34

35 Basisidee Dynamisch Programmeren Reken iets niet voor de tweede keer uit iets : deelprobleem Twee mogelijkheden: `Klassiek DP: vul datastructuur met antwoorden voor deelproblemen, zodat nodige gegevens al eerder zijn berekend Memorisatie: kijk of we t al eerder hebben uitgerekend zo ja, geef dat antwoord; zo nee: reken uit en sla antwoord op in datastructuur (bijvoorbeeld array of hashtabel) 35

36 De ontwerpmethode (1) 1. Identificeer `deelproblemen, waarbij helpt a) Wat is de `rij van keuzes die leidt tot een oplossing? b) Wat is de `top choice (laatste keuze)? 2. Ontwerp een recurrente betrekking voor het probleem: druk het probleem uit in termen van (andere) deelproblemen. Geef ook basisgevallen Top choice helpt (vaak: gevalsonderscheid) 3. Wat is de berekeningsvolgorde? (Mag geen cycle hebben ) 4. Bereken in volgorde de waardes voor de deelproblemen. 5. Eventueel: geheugenbesparing of constructieve versie. 36

37 Voorbeeld 3 Gepast betalen Stel, we hebben munten van waardes aa 1, aaaa en we willen bb betalen. Hoe kunnen we dit doen met zo min mogelijk munten? Euro s kunnen greedy (komt later deze collegeserie), maar andere sets munten niet altijd. Greedy: geef steeds grootst mogelijke munt terug, bijv: 84: 50 (34), 20 (14), 10 (4), 2 (2), 2. Met munten van 1, 10, 25 geeft greedy niet altijd goede antwoord: Greedy geeft voor 30 cent: 25, 1, 1, 1, 1, 1 (6 munten), maar optimaal is: 10, 10, 10 (3 munten) Hier: DP algoritme voor `wisselgeld probleem. 37

38 Gepast betalen: probleemstelling Gegeven: positieve gehele getallen aa 1,, aa rr, niet negatief geheel getal bb Gevraagd: op welke manier kan bb verkregen worden door zo min mogelijk munten van waardes aa 1,, aa rr? 38 Munten mogen ieder niet-negatief aantal keren gebruikt worden. Totale som moet b zijn. We zoeken dus xx 1,, xx rr NN = {0,1, } met r i= 1 x i a i = b en r i= 1 x i zo klein mogelijk

39 Rij van keuzes Hoeveel nemen we van de eerste munt? Hoeveel nemen we van de tweede munt? Hoeveel nemen we van de laatste munt? Oftwel: xx 1,, xx rr Top choice: xx rr 39

40 Hoe ziet de situatie eruit als we al een aantal keuzes gemaakt hebben? Stel we hebben al van de eerste qq munten besloten hoeveel te nemen. Situatie kan je karakteriseren met: qq Aantal munten tot nu toe gebruikt Totaalbedrag van de tot nu toe gebruikte munten q q x i i= 1 i= 1 x i a i Dus: (qq,, ) 40

41 Deelproblemen Gegeven aa 1,, aa rr, bb, schijf WW(ii, cc) als het minimum aantal munten Nodig om bedrag cc te krijgen Als we alleen munten aa 1,, aa ii mogen gebruiken Vb: Munten van waarden 1, 5, 8, 20 WW(1,7) = 7 (we mogen alleen munt 1 gebruiken) WW(2,7) = 3 (beste oplossing is 5, 1, 1) WW(3,7) = WW(4,7) = 3 (nog steeds) WW(1,23) = 23; WW(2,23) = 7; WW(3,24) = 5 (met: 8,8,5,1,1); WW(4,23) = 4 (met: 20,1,1,1) 41

42 Speciale gevallen Munten met waardes 3, 5, 10, 30 WW(, 0) = 0: geen munten nodig om 0 te betalen. WW(4,7) = + (kan niet gemaakt worden) WW(0,5) = + (geen munten dus kan niet gemaakt worden) 42

43 Recurrente betrekkingen WW(ii, 0) = 0 voor alle ii 0. Basisgevallen WW(0, yy) = + voor alle yy > 0. Als ii > 0 en yy > 0 en aa ii > yy, dan WW(ii, yy) = WW( ii 1, yy) Munt aa ii kan niet gebruikt worden om y te betalen. Als ii > 0 en yy > 0 en aa ii yy, dan WW(ii, yy) = min ( WW( ii 1, yy), WW(ii, yy aa ii ) + 1) Munt aa ii kan wel gebruikt worden. Als je de munt niet gebruikt moet je yy maken met de eerste ii 1 munten; anders moet je yy aaaa maken en nog een munt aa ii erbij. Bekijk beide en neem de beste (minimum). 43 Gevalsonderscheid met de top-choice

44 Recursief programma Wissel( Array AA, integers ii, yy) If (yy == 0) then return 0; If (ii == 0) then return maxint; If (aa ii > yy) then return Wissel(AA, ii 1, yy); Return min (Wissel(AA, ii 1, yy), Wissel(AA,ii, yy aa ii ) + 1) 44

45 ii: munten Voor berekeningen nodig: Element met ii 1 en element met yy aa ii yy: bedrag 45

46 Uitrekenen in volgorde Function Wissel(AA[1 rr], bb) Maak 2-dim array WW 0 rr, 0 bb. WW[0,0] = 0. for jj = 1 to bb do WW[0, jj] = +. for ii = 1 to rr do for jj = 0 to bb do Bereken WW[ii, jj]. Return WW[rr, bb] Straks preciezer 46

47 Algoritme Function WisselDP( AA[1 rr], bb) Maak 2-dim array WW[0 rr, 0 bb]. WW[0,0] = 0. for jj = 1 to bb do WW[0, jj] = +. for ii = 1 to rr do for jj = 0 to bb do if (AA[ii] > jj) then WW[ii, jj] = WW[ii 1, jj] else W[i,j] = min (W[i-1,j],W[i,j-A[i])+1] Return W[r,b] 47

48 Analyse WisselDP gebruikt OO(rrrr) tijd. Als bb niet te groot is, is dit snel. 48

49 Niet altijd integer functies Wisselbaar Gegeven munten met waardes aa 1,, aaaa, kan hiermee een bedrag b betaald worden? Wisselbaar({3,5,11}, 6) = true Wisselbaar({3,5,11}, 16) = true Wisselbaar({3,5,11}, 7) = false Zelfde soort algoritme als voor Wissel: nu met Booleans. 49

50 DP algoritme voor Wisselbaar probleem Function Wisselbaar( AA[1 rr], bb) Maak 2-dim array van Booleans WW[0 rr, 0 bb]. WW[0,0]=true. for jj = 1 to bb do WW[0, jj] = false. for ii = 1 to rr do for jj = 0 to bb do if (AA[ii] > jj) then WW[ii, jj] = WW[ii 1, jj] else WW[ii, jj] = WW[ii 1, jj] oooo WW[ii, jj AA[ii]] Return WW[xx, yy] 50

51 Het optimaliteitsprincipe Dynamisch programmeren lukt vaak als: Het niet uitmaakt hoe je er gekomen bent, maar alleen waar je bent Preciezer: Als een oplossing optimaal is, dan zijn diens deeloplossingen ook optimaal. 51

52 Uitwisselargumenten 52

53 Wat is een goede keuze van Vaak werkt dit: deelproblemen 1. Hoe ziet een oplossing voor de hele input eruit? 2. Als we naar een deel (bijv. beginstuk) van de input kijken, wat zien we dan van zo n oplossing (definieer een notie deeloplossing) 3. Wat is essentieel om te weten van een deeloplossing voor mogelijke uitbreiding tot een hele oplossing? 53

54 Eerlijke Boedelverdeling Twee broers moeten een stel voorwerpen verdelen van waarde aa 1, aa 2,, aa nn. Hoe doen ze dat zo eerlijk mogelijk? (D.w.z., verdeel aa 1, aa 2,, aa in nn twee verzamelingen waarvan de som zo weinig mogelijk verschilt.) Neem aan waardes in array AA[1 nn] 1, 5, 8, 10, 11 {8, 10} en {1, 5, 11} is eerlijkste verdeling (verschil 1.) 54

55 Stappenplan voor DP Stap 1: wat is de rij van keuzes? Voor de hand liggend: Welke broer krijgt voorwerp 1? Welke broer krijgt voorwerp 2? Welke broer krijgt voorwerp nn? Top choice: welke broer krijgt voorwerp nn? 55

56 Stappenplan voor DP Stap 3: Identificeer deelproblemen Vaak werkt volgende strategie: Deelprobleem is: Beginstuk van gebeurtenissen of beslissingen + Situatie na een stel gebeurtenissen en beslissingen 56

57 Boedelprobleem Stap 1 1 e poging Beslissingen: welke broer krijgt voorwerp 1; welke broer krijgt voorwerp 2; etc. Idee voor deelproblemen: Wat is de eerlijkste verdeling van de eerste i voorwerpen? Hiermee is geen DP algoritme te maken: optimaliteitsprincipe geldt niet. mislukt Voorwerpen 1, 5, 6: eerlijkste verdeling 1 e twee voorwerpen zegt niets over eerlijkste verdeling alle drie voorwerpen 57

58 Waarom werkt dit niet? Er zijn mogelijke begin-keuzes die tot een optimale oplossing leiden die niet in een deelprobleem `gevangen worden Voorwerpen 1, 5, 6, 10 Begin: (1 en 5, 6) is geen deel van de optimale oplossing (1 en 10, 5 en 6) 58

59 Boedelprobleem Stap 1 Verdeel(ii, cc): is er een verdeling van de eerste ii voorwerpen met verschil in waarde precies cc? 1,5,8,10,11: Verdeel(2,4) = true Verdeel(2,5) = false Verdeel(2,6) = true (1,5 vs niets) Verdeel(3,2) = true (1,5 vs 8) 59

60 Welke deelproblemen zijn relevant? n n i= 1 a i c i= 1 a i 60

61 Stap 3 Ontwerp recurrente betrekking die oplossing van deelprobleem uitdrukt in oplossingen van andere deelproblemen. Verdeel(0,0) = true Voor cc 0: Verdeel(0, cc) = false Voor ii > 0: Verdeel(ii, cc) = Verdeel(ii 1,cc AA[ii]) or Verdeel(ii 1,cc + AA[ii]) ii de voorwerp naar 1e of 2e broer: gevalsonderscheid op de top-choice 61

62 Stap 4 ii: voorwerpen Wat is de berekeningsvolgorde? Hier: kolomsgewijs, d.w.z, stijgend aantal voorwerpen cc: verschil 62

63 Stap 5 Bereken de deelproblemen met behulp van de recurrente betrekking in de gevonden volgorde. 63 Eigenlijk fout: neem een false voor elt die niet in de array zitten Bereken TT = i= 1 Maak array VV[0 nn, TT TT] for ii = 0 to nn do for cc = TT to TT do if ii = 0 and cc = 0, then VV[ii, cc] = true else if ii = 0 and cc 0 then VV[ii, cc]=false else VV ii, cc = VV ii 1, cc aa ii oooo VV[ii 1, cc + aa ii ] Nu nog het antwoord vinden n a i

64 Vervolg stap 5: Antwoord vinden: poging 1 for cc = 0 to TT do if VV[nn, cc] == true then return cc Dit vindt het kleinst mogelijke verschil in de waarde van de verdeling tussen de broers. Maar nog niet de eerlijkste verdeling zelf? Hoe dat te doen is Stap 6. To be continued 64

65 Practicumsom 1: een variant Stel, we hebben (positive gehele) getallen A en BB Wat is het aantal rijtjes van AA naar BB waarbij: Een rijtje is een string met D s en I s D betekent: neem 2 keer het vorige getal I betekent: neem het vorige getal + 1 Bijvoorbeeld: 5 met IIDI geeft 15 (6, 7, 14, 15) Practicumsom: gegeven AA en BB, wat is het aantal (AA, BB)-rijtjes. Vandaag bespreken we: wat is het kortste (AA, BB)-rijtje? 65

66 Lengte van kortste rijtje Kortste rijtje Het kortste (AA, BB)-rijtje 1. Wat is de rij keuzes? Wat is de laatste keuze? 2. Wat zijn de deelproblemen? 3. Recurrente betrekking a) Uitdrukking in kleinere deelproblemen b) Basisgeval(len) 4. Berekeningsvolgorde 5. Programma voor lengte van kortste rijtje 6. Versie voor constructie van het kortste rijtje 66

67 Uitwerking De rij keuzes is de rij met D s en I s De laatste keuze is: wat is de laatste letter? Deelproblemen: Voor CC met AA CC BB, wat is de lengte van het kortste rijtje van AA naar CC? Noem dit LL(CC) Basisgeval: LL(AA) = 0. Recurrente betrekking: Als CC oneven is, dan LL(CC) = LL(CC 1) + 1. Als CC even is, en CC/2 < AA, dan LL(CC) = LL(CC 1) Als CC even is en CC AA, dan 2 LL CC = min{ll CC 1 + 1, LL CC + 1) 2 Kan slimmer

68 Dynamisch programmeren Maak een array LL[AA BB] LL AA = 0 for CC = AA to B do if CC is oneven of CC/2 < AA then LL CC = LL CC else LL CC = min {LL CC 1 + 1, LL CC + 1} 2 Output LL[BB] 68

69 Leveren van het kortste rijtje Nadat we array L gevuld hebben, bijvoorbeeld met volgend recursief programma: GiveShortest(integer AA, BB) If (AA==BB) then return empty string If (LL BB == LL(BB) then return GiveShortest(AA, BB 1) + I Else return GiveShortest(AA, BB/2) + D 69

70 Wordt vervolgd Vinden van oplossingen in plaats van waardes van oplossingen Memorisatie Besparen van geheugenruimte Andere toepassingen van dynamisch programmeren Ingewikkelder structuren 70

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

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

Dynamisch Programmeren III. Algoritmiek

Dynamisch Programmeren III. Algoritmiek Dynamisch Programmeren III Vandaag Dynamisch programmeren met wat lastiger voorbeelden: Handelsreiziger Longest common subsequence Optimale zoekbomen Knapsack 2 - DP2 Handelsreiziger Een handelsreiziger

Nadere informatie

Greedy algoritmes. Algoritmiek

Greedy algoritmes. Algoritmiek Greedy algoritmes Algoritmiek Algoritmische technieken Trucs, methoden, paradigma s voor het ontwerpen van algoritmen Dynamisch Programmeren Divide & Conquer Greedy 2 Greedy algoritme Bouwt de oplossing

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

Negende college algoritmiek. 15 april Dynamisch Programmeren

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

Nadere informatie

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

Divide & Conquer: Verdeel en Heers. Algoritmiek

Divide & Conquer: Verdeel en Heers. Algoritmiek Divide & Conquer: Verdeel en Heers Algoritmiek Algoritmische technieken Trucs; methoden; paradigma s voor het ontwerp van algoritmen Gezien: Dynamisch Programmeren Volgend college: Greedy Vandaag: Divide

Nadere informatie

Minimum Opspannende Bomen. Algoritmiek

Minimum Opspannende Bomen. Algoritmiek Minimum Opspannende Bomen Inhoud Het minimum opspannende bomen probleem Een principe om een minimum opspannende boom te laten groeien Twee greedy algoritmen + tijd en datastructuren: Het algoritme van

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

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

Divide & Conquer: Verdeel en Heers. Algoritmiek

Divide & Conquer: Verdeel en Heers. Algoritmiek Divide & Conquer: Verdeel en Heers Algoritmiek Algoritmische technieken Trucs; methoden; paradigma s voor het ontwerp van algoritmen Gezien: Dynamisch Programmeren Hierna: Greedy Vandaag: Divide & Conquer

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

Heuristieken en benaderingsalgoritmen. Algoritmiek

Heuristieken en benaderingsalgoritmen. Algoritmiek Heuristieken en benaderingsalgoritmen Wat te doen met `moeilijke optimaliseringsproblemen? Voor veel problemen, o.a. optimaliseringsproblemen is geen algoritme bekend dat het probleem voor alle inputs

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

Netwerkstroming. Algoritmiek

Netwerkstroming. Algoritmiek Netwerkstroming Vandaag Netwerkstroming: definitie en toepassing Het rest-netwerk Verbeterende paden Ford-Fulkerson algoritme Minimum Snede Maximum Stroming Stelling Variant: Edmonds-Karp Toepassing: koppelingen

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

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

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

Nadere informatie

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

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

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

ALGORITMIEK: antwoorden werkcollege 5

ALGORITMIEK: antwoorden werkcollege 5 ALGORITMIEK: antwoorden werkcollege 5 opgave 1. a. Brute force algoritme, direct afgeleid uit de observatie: loop v.l.n.r. door de tekst; als je een A tegenkomt op plek i (0 i < n 1), loop dan van daaruit

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

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

Negende college algoritmiek. 6/7 april Dynamisch Programmeren

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

Nadere informatie

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

Greedy algorithms. Algoritmiek

Greedy algorithms. Algoritmiek Greedy algorithms Vandaag Greedy algorithms: wat zijn dat? Voorbeelden: gepast betalen met euromunten AB-rijtje Knapsack probleem Twee scheduling problemen Later: meer voorbeelden, algemene structuur,

Nadere informatie

Grafen en netwerken I Datastructuren en doorzoeken. Algoritmiek

Grafen en netwerken I Datastructuren en doorzoeken. Algoritmiek Grafen en netwerken I Datastructuren en doorzoeken Algoritmiek 1 Inleiding 2 Netwerken Veel toepassingen, bijvoorbeeld: Sociale netwerken, electrische netwerken, wegennetwerken, communicatie netwerken,

Nadere informatie

Minimum Spanning Tree

Minimum Spanning Tree Minimum Spanning Tree Wat is MST? Minimum spanning tree De meest efficiënte manier vinden om een verbonden netwerk op te bouwen Wat is een tree/boom? Graaf G: een verzameling knopen (vertices): V een verzameling

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

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

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

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

Doorzoeken van grafen. Algoritmiek

Doorzoeken van grafen. Algoritmiek Doorzoeken van grafen Algoritmiek Vandaag Methoden om door grafen te wandelen Depth First Search Breadth First Search Gerichte Acyclische Grafen en topologische sorteringen 2 Doolhof start eind 3 Depth

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

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

extra oefening algoritmiek - antwoorden

extra oefening algoritmiek - antwoorden extra oefening algoritmiek - antwoorden opgave "Formule 1" Maak een programma dat de gebruiker drie getal A, B en C in laat voeren. De gebruiker zorgt ervoor dat er positieve gehele getallen worden ingevoerd.

Nadere informatie

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

Slangennest Wiskunde B-dag 2018

Slangennest Wiskunde B-dag 2018 Slangennest Wiskunde B-dag 2018 2 Basisopgaven Opgave 1: Cirkeldekens (a) Het kleinste geschikte cirkelvormige dekentje heeft een diameter van 15 cm. (b) Slangen die voldoende om de kop heen krullen passen

Nadere informatie

Combinatoriek groep 1 & 2: Recursie

Combinatoriek groep 1 & 2: Recursie Combinatoriek groep 1 & : Recursie Trainingsweek juni 008 Inleiding Bij een recursieve definitie van een rij wordt elke volgende term berekend uit de vorige. Een voorbeeld van zo n recursieve definitie

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

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

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

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

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

Nadere informatie

Greedy algorithms. Algoritmiek

Greedy algorithms. Algoritmiek Greedy algorithms Vandaag Greedy algorithms: wat zijn dat? Voorbeelden: gepast betalen met euromunten AB-rijtje Knapsack probleem Twee scheduling problemen Later: meer voorbeelden, algemene structuur,

Nadere informatie

Benaderingsalgoritmen

Benaderingsalgoritmen Benaderingsalgoritmen Eerste hulp bij NP-moeilijkheid 1 Herhaling NP-volledigheid (1) NP: er is een polynomiaal certificaat voor jainstanties dat in polynomiale tijd te controleren is Een probleem A is

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

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

Een klant moet 37,90 betalen. Hij geeft je een briefje van 50. Je geeft het geld terug terwijl je meetelt:

Een klant moet 37,90 betalen. Hij geeft je een briefje van 50. Je geeft het geld terug terwijl je meetelt: 2.1 Van klein naar groot Vaak geeft de kassa het terug te geven bedrag aan, maar dat is niet altijd zo. Bijvoorbeeld op de markt of op oude kassa s. Als je het zelf moet uitrekenen, dan begin je met het

Nadere informatie

Oefententamen in2505-i Algoritmiek

Oefententamen in2505-i Algoritmiek TECHNISCHE UNIVERSITEIT DELFT Faculteit Elektrotechniek, Wiskunde en Informatica Oefententamen in2505-i Algoritmiek Maart 2007 Het gebruik van boek of aantekeningen tijdens dit tentamen is niet toegestaan.

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

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

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

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

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

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

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

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

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

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

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

Faculteit Economie en Bedrijfskunde

Faculteit Economie en Bedrijfskunde Faculteit Economie en Bedrijfskunde Op dit voorblad vindt u belangrijke informatie omtrent het tentamen. Voordat u met het tentamen t: lees dit voorblad! Tentamen: V&O IV: Programmeren Tentamendatum &

Nadere informatie

Hoofdstuk 5: Functies voor getallen en teksten

Hoofdstuk 5: Functies voor getallen en teksten Programmeren in Microsoft Visual Basic 6.0, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Marnix Gymnasium Rotterdam, maart 2001 Hoofdstuk 5: Functies voor getallen en teksten

Nadere informatie

TW2020 Optimalisering

TW2020 Optimalisering TW2020 Optimalisering Hoorcollege 11 Leo van Iersel Technische Universiteit Delft 25 november 2015 Leo van Iersel (TUD) TW2020 Optimalisering 25 november 2015 1 / 28 Vandaag Vraag Voor welke problemen

Nadere informatie

Combinatoriek groep 1

Combinatoriek groep 1 Combinatoriek groep 1 Recursie Trainingsweek, juni 009 Stappenplan homogene lineaire recurrente betrekkingen Even herhalen: het stappenplan om een recurrente betrekking van orde op te lossen: Stap 1. Bepaal

Nadere informatie

Uitwerking tentamen Algoritmiek 9 juni :00 17:00

Uitwerking tentamen Algoritmiek 9 juni :00 17:00 Uitwerking tentamen Algoritmiek 9 juni 2015 14:00 17:00 1. Clobber a. Toestanden: m x n bord met in elk hokje een O, een X of een -. Hierbij is het aantal O gelijk aan het aantal X of er is hooguit één

Nadere informatie

ALGORITMIEK: antwoorden werkcollege 5

ALGORITMIEK: antwoorden werkcollege 5 1 ALGORITMIEK: antwoorden werkcollege 5 opgave 1. a. Brute force algoritme, direct afgeleid uit de observatie: loop v.l.n.r. door de tekst; als je een A tegenkomt op plek i (0 i < n 1), loop dan van daaruit

Nadere informatie

ALGORITMIEK: antwoorden werkcollege 5

ALGORITMIEK: antwoorden werkcollege 5 ALGORITMIEK: antwoorden werkcollege 5 opgave 1. a. Brute force algoritme, direct afgeleid uit de observatie: loop v.l.n.r. door de tekst; als je een A tegenkomt op plek i (0 i < n 1), loop dan van daaruit

Nadere informatie

Getallensystemen, verzamelingen en relaties

Getallensystemen, verzamelingen en relaties Hoofdstuk 1 Getallensystemen, verzamelingen en relaties 1.1 Getallensystemen 1.1.1 De natuurlijke getallen N = {0, 1, 2, 3,...} N 0 = {1, 2, 3,...} 1.1.2 De gehele getallen Z = {..., 4, 3, 2, 1, 0, 1,

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

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

AB OVO. iguide STYLEGUIDE

AB OVO. iguide STYLEGUIDE AB OVO iguide STYLEGUIDE 1 BEELDGEBRUIK SFEERVOL, MAAR NIET STOREND Bij elke keer dat je inlogt zie je dat de achtergrond bestaat uit een beeld. Dit beeld is van het land waar de gebruiker naartoe gaat.

Nadere informatie

Pascal uitgediept Data structuren

Pascal uitgediept Data structuren Pascal uitgediept Data structuren MSX Computer & Club Magazine nummer 68-juni/juli 1994 Herman Post Scanned, ocr ed and converted to PDF by HansO, 2001 In deze aflevering wordt bekeken hoe zelf een datastructuur

Nadere informatie

Netwerkstroming. Algoritmiek

Netwerkstroming. Algoritmiek Netwerkstroming Netwerkstroming Toepassingen in Logistiek Video-streaming Subroutine in algoritmen 2 Vandaag Netwerkstroming: wat was dat ook alweer? Minimum Snede Maximum Stroming Stelling Variant: Edmonds-Karp

Nadere informatie

Vierde college algoritmiek. 1 maart Toestand-actie-ruimte Brute Force

Vierde college algoritmiek. 1 maart Toestand-actie-ruimte Brute Force Algoritmiek 2019/Toestand-actie-ruimte Vierde college algoritmiek 1 maart 2019 Toestand-actie-ruimte Brute Force 1 Algoritmiek 2019/Toestand-actie-ruimte Torens van Hanoi Voorbeeld 3: Torens van Hanoi

Nadere informatie

Algoritmen en programmeren: deel 1 - overzicht

Algoritmen en programmeren: deel 1 - overzicht Algoritmen en programmeren: deel 1 - overzicht Ruud van Damme Creation date: 15 maart 2005 Update: 3: september 2006, 5 november 2006, 7 augustus 2007 Overzicht 1 Inleiding 2 Algoritmen 3 Programmeertalen

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

Algoritmen en programmeren: deel 2 - basis

Algoritmen en programmeren: deel 2 - basis Algoritmen en programmeren: deel 2 - basis Ruud van Damme Creation date: 25 april 2005 Update: 16 november 2006, 9 september 2007 Overzicht 1 Basisbenodigdheden voor alle problemen 2 Alles in stukjes op

Nadere informatie

Vijfde college algoritmiek. 9 maart Brute Force. Exhaustive search

Vijfde college algoritmiek. 9 maart Brute Force. Exhaustive search Vijfde college algoritmiek 9 maart 2018 Brute Force Exhaustive search 1 Before I say another word Opdracht 1 partner? deadline: 21/22 maart 2018 vragenuren vanmiddag, 15.30 uur (Jacob) woensdag 21 maart,

Nadere informatie

oefening JavaScript - antwoorden

oefening JavaScript - antwoorden oefening JavaScript - antwoorden De antwoorden op deze opgaven zijn meestal wat aan de brede kant voor een Word document. Het is daarom handig om ze in Notepad++ te kopiëren en ze dan te bekijken. opgave

Nadere informatie

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

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

Nadere informatie

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

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

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

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

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

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

Nadere informatie

gut feeling BRANDBOOK

gut feeling BRANDBOOK gut feeling BRANDBOOK Inhoud 3. inleiding 4. DESIGN PROCES 7. STRATEGY 11. MOODBOOK 18. TEASER Gut Feeling Brandbook 2 inleiding Vanwege het feit dat Gut Feeling zelf branding levert voor bedrijven is

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

Vijfde college algoritmiek. 2/3 maart Exhaustive search

Vijfde college algoritmiek. 2/3 maart Exhaustive search Vijfde college algoritmiek 2/3 maart 2017 Exhaustive search 1 Voor- en nadelen Brute force: Voordelen: - algemeen toepasbaar - eenvoudig - levert voor een aantal belangrijke problemen (zoeken, patroonherkenning)

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

Optimalisering/Besliskunde 1. College 1 2 september, 2015

Optimalisering/Besliskunde 1. College 1 2 september, 2015 Optimalisering/Besliskunde 1 College 1 2 september, 2015 Algemene informatie College: woensdag 13:45-15:30: Leiden C1 en C2: Gorlaeus gebouw Zaal DS: De Sitterzaal, Oort gebouw Werkcollege: vrijdag: Leiden

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

Tiende college algoritmiek. 3 mei Dynamisch programmeren Gretige Algoritmen Algoritme van Dijkstra

Tiende college algoritmiek. 3 mei Dynamisch programmeren Gretige Algoritmen Algoritme van Dijkstra Tiende college algoritmiek 3 mei 019 Dynamisch programmeren Gretige Algoritmen Algoritme van Dijkstra 1 Houtzaagmolen Een houtzaagmolen rekent voor het in twee stukken zagen van een stam van lengte l precies

Nadere informatie

7 Omzetten van Recursieve naar Iteratieve Algoritmen

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

Nadere informatie

Vierde college algoritmiek. 2 maart Toestand-actie-ruimte Exhaustive Search

Vierde college algoritmiek. 2 maart Toestand-actie-ruimte Exhaustive Search Algoritmiek 2018/Toestand-actie-ruimte Vierde college algoritmiek 2 maart 2018 Toestand-actie-ruimte Exhaustive Search 1 Algoritmiek 2018/Toestand-actie-ruimte Kannen Voorbeeld 4: Kannenprobleem We hebben

Nadere informatie

Tentamen combinatorische optimalisatie Tijd:

Tentamen combinatorische optimalisatie Tijd: Tentamen combinatorische optimalisatie 26-05-2014. Tijd: 9.00-11.30 Tentamen is met gesloten boek. Beschrijf bij elke opgave steeds het belangrijkste idee. Notatie en exacte formulering is van minder belang.

Nadere informatie

Oefeningen Discrete Wiskunde - Hoofdstuk 6 - Peter Vandendriessche Fouten, opmerkingen of alternatieve methodes? me:

Oefeningen Discrete Wiskunde - Hoofdstuk 6 - Peter Vandendriessche Fouten, opmerkingen of alternatieve methodes?  me: Oefeningen Discrete Wiskunde - Hoofdstuk 6 - Peter Vandendriessche Fouten, opmerkingen of alternatieve methodes? Email me: peter.vdd@telenet.be 1. Het aantal knoop-tak overgangen is altijd even. De totaalsom

Nadere informatie

Om te kijken of x, y, z samen een driehoek specificeren hoeven we alleen nog maar de driehoeksongelijkheid te controleren: x, y, z moeten voldoen

Om te kijken of x, y, z samen een driehoek specificeren hoeven we alleen nog maar de driehoeksongelijkheid te controleren: x, y, z moeten voldoen Feedback Software Testing, Opdrachten Week 1 Driehoek-test Deze opdracht is in het algemeen zeer goed uitgevoerd. Algemeen valt in vergelijking met vorig jaar op dat de ingeleverde oplossingen veel minder

Nadere informatie

Uitleg van de Hough transformatie

Uitleg van de Hough transformatie Uitleg van de Hough transformatie Maarten M. Fokkinga, Joeri van Ruth Database groep, Fac. EWI, Universiteit Twente Versie van 17 mei 2005, 10:59 De Hough transformatie is een wiskundige techniek om een

Nadere informatie