Download de presentatie
GepubliceerdKatrien Brabander Laatst gewijzigd meer dan 10 jaar geleden
2
Algoritmen en Datastructuren (ALDAT)
EVMINX4 Week 1
3
Inhoud ALDAT Onderwerpen: Werkvormen:
Algoritmen en Datastructuren STL (standaard C++ library) Diverse toepassingen van algoritmen en datastructuren Spelletjes! Werkvormen: 7 dagdelen theorie + practicum (+/- 14 uur theorie) in week 1 t/m 7 10 dagdelen zelfstudie en toetsing (vooral practicum) in week 1 t/m 8 4 dagdelen reparatie in week 9 of 10
4
Leermiddelen Boeken Dictaat (zelf dubbelzijdig afdrukken!)
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 Studiewijzer met uitgebreide planning Dictaat Practicumopdrachten + uitgebreide practicumhandleiding Sourcecode van alle voorbeelden Sheets Links
5
Voorbeeld Do you remember PROS2 ? 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.
6
Recursieve datastructuren
Lijst leeg of element met pointer naar lijst Stamboom persoon met pointer naar stamboom (van vader) en pointer naar stamboom (van moeder)
7
‘76 boek van Niklaus Wirth:
Algorithms + Datastructures = Programs
8
Klassieke datastructuren
Klassieke 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.
9
Datastructuren Ding om data “gestructureerd” in op te slaan.
Een template is erg geschikt voor het implementeren van een datastructuur. Basisbewerkingen: insert, remove, find empty, full, size Een bepaalde datastructuur kan op verschillende manieren geïmplementeerd worden. Een Abstracte Base Class per datastructuur maakt gebruik onafhankelijk van de implementatie.
10
Datastructures Stack Queue Vector Sorted vector Linked List
Sorted list Binary Tree Search tree Hash Table Priority Queue (Binary Heap)
11
Big O notation De 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).
12
Big O notation voorbeeld
Wat is de big O notatie voor: f(n) = 2n3 + 4n + 2 log2 n 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)
13
Big O notation voorbeeld
Wat is de executietijd van het volgende algoritme in big O notatie: T(n) = O(n) 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; Kan het beter ? … en als je v.size() processoren hebt ? … en als de array al gesorteerd is ?
14
Big O notation voorbeeld
Wat 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 ?
15
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.
16
Bekende datastructuren
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.