algoritmen en datastructuren (aldat) evminx4 week 1
TRANSCRIPT
![Page 1: Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b85e6/html5/thumbnails/1.jpg)
Algoritmen en Datastructuren (ALDAT)
EVMINX4 Week 1
![Page 2: Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b85e6/html5/thumbnails/2.jpg)
2
Inhoud ALDATOnderwerpen:
Algoritmen en DatastructurenSTL (standaard C++ library)
Diverse toepassingen van algoritmen en datastructurenSpelletjes!
Werkvormen:7 dagdelen theorie + practicum (+/- 14 uur
theorie) in week 1 t/m 710 dagdelen zelfstudie en toetsing (vooral
practicum) in week 1 t/m 84 dagdelen reparatie in week 9 of 10
![Page 3: Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b85e6/html5/thumbnails/3.jpg)
3
Leermiddelen Boeken
Thinking in C++ 2nd Edition, Volume 1 + 2, Bruce Eckel Praktisch UML, 2de editie, Warmer en Kleppe
Dictaat (zelf dubbelzijdig afdrukken!) Studiewijzer Aanvullingen op theorie Extra voorbeelden
Handouts (bij dagdeel 5 en 6) Blackboard en http://bd.eduweb.hhs.nl/aldat/
Studiewijzer met uitgebreide planning Dictaat Practicumopdrachten + uitgebreide practicumhandleiding Sourcecode van alle voorbeelden Sheets Links
![Page 4: Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b85e6/html5/thumbnails/4.jpg)
4
Voorbeeld Statische datastructuur:
struct deelnemer { int punten; char naam[80];};struct stand { int aantalDeelnemers; deelnemer lijst[100];};stand s;
De nadelen van het gebruik van de ingebouwde datastructuren struct en array zijn: de grootte van de array's lijst en naam moet bij het vertalen
van het programma bekend zijn en kan niet aangepast worden (=statisch).
elke deelnemer neemt evenveel ruimte in onafhankelijk van de lengte van zijn naam (=statisch).
het verwijderen van een deelnemer uit de stand is een heel bewerkelijke operatie.
Do you remember PROS2 ?
![Page 5: Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b85e6/html5/thumbnails/5.jpg)
5
Recursieve datastructurenLijst
leeg ofelement met pointer naar lijst
Stamboomleeg ofpersoon met pointer naar stamboom (van vader)
en pointer naar stamboom (van moeder)
![Page 6: Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b85e6/html5/thumbnails/6.jpg)
6
Algorithms+
Datastructures=
Programs
‘76 boek van Niklaus Wirth:
![Page 7: Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b85e6/html5/thumbnails/7.jpg)
7
Klassieke datastructurenKlassieke datastructuren kunnen m.b.v. OOP
technieken als herbruikbare componenten worden geïmplementeerd.
Er zijn diverse component- bibliotheken verkrijgbaar:STL (Standard Template Library) Opgenomen in
ISO/ANSI C++ std (sept 1998) Aanwezig in C++ Builder, Microsoft Visual C++ en gcc.
![Page 8: Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b85e6/html5/thumbnails/8.jpg)
8
DatastructurenDing om data “gestructureerd” in op te slaan.Een template is erg geschikt voor het
implementeren van een datastructuur.Basisbewerkingen:
insert, remove, findempty, full, size
Een bepaalde datastructuur kan op verschillende manieren geïmplementeerd worden.
Een Abstracte Base Class per datastructuur maakt gebruik onafhankelijk van de implementatie.
![Page 9: Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b85e6/html5/thumbnails/9.jpg)
9
DatastructuresStackQueueVectorSorted vectorLinked ListSorted listBinary TreeSearch treeHash TablePriority Queue (Binary Heap)
![Page 10: Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b85e6/html5/thumbnails/10.jpg)
10
Big O notationDe big O notatie wordt gebruikt om de
executietijd en het geheugengebruik van algorithmen met elkaar te vergelijken.
De O staat voor 'order of magnitude‘.f(n)=O(n2) betekent dat functie f(n) “van
boven” asymptotisch begrensd wordt door g(n)=n2.Dit betekent dat f(n) a·n2 voor grootte waarden
van n. Waarbij a 0 (je mag a zelf kiezen).
![Page 11: Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b85e6/html5/thumbnails/11.jpg)
11
Big O notation voorbeeldWat is de big O notatie voor:
f(n) = 2n3 + 4n + 2 log2 n + 100.
f(n) = 4 log2 n.
f(n) = log10 n. Bedenk: log10 n = log2 n / log2 10.
f(n) = 1000.f(x) = (10x4 + 4x2) / (5x3 + 12x2 + 7x).
= O(n3)= O(log2n)
= O(log2n)
= O(1)= O(x)
![Page 12: Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b85e6/html5/thumbnails/12.jpg)
12
Big O notation voorbeeldWat is de executietijd van het volgende
algoritme in big O notatie:
unsigned int max(vector<unsigned int> v) { vector<unsigned int>::size_type n = v.size(); unsigned int max = 0; for (vector<unsigned int>::size_type i = 0; i < n; ++i) { if (v[i] > max) { max=v[i]; } } return max;}
T(n) = O(n)
Kan het beter ?
… en als de array al gesorteerd is ?… en als je v.size() processoren hebt ?
![Page 13: Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b85e6/html5/thumbnails/13.jpg)
13
Big O notation voorbeeldWat is de executietijd van het volgende
algoritme in big O notatie:unsigned int maxprod(vector<unsigned int> v) { vector<unsigned int>::size_type n = v.size(); unsigned int max = 0; for (vector<unsigned int>::size_type i=0; i<n; ++i) { for (vector<unsigned int>::size_type j=i+1; j<n; ++j) { if (v[i]*v[j]>max) { max=v[i]*v[j]; } } } return max;}
T(n) = O(n2)
Kan het beter ?
![Page 14: Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b85e6/html5/thumbnails/14.jpg)
14
Big O notation
Je ziet dat een O(n2) algoritme niet bruikbaar is voor hele grote hoeveelheden data en dat een
O(10n) algoritme zo wie zo niet bruikbaar is.
![Page 15: Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1](https://reader036.vdocuments.mx/reader036/viewer/2022062418/5551a0ef4979591f3c8b85e6/html5/thumbnails/15.jpg)
15
Bekende datastructuren