De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1.

Verwante presentaties


Presentatie over: "Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1."— Transcript van de presentatie:

1 Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1

2 3 Inhoud ALDAT  Onderwerpen:  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

3 4 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  Studiewijzer met uitgebreide planning  Dictaat  Practicumopdrachten + uitgebreide practicumhandleiding  Sourcecode van alle voorbeelden  Sheets  Links

4 5 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 ?

5 6 Recursieve datastructuren  Lijst  leeg of  element met pointer naar lijst  Stamboom  leeg of  persoon met pointer naar stamboom (van vader) en pointer naar stamboom (van moeder)

6 7 Algorithms + Datastructures = Programs ‘76 boek van Niklaus Wirth:

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

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

9 10 Datastructures  Stack  Queue  Vector  Sorted vector  Linked List  Sorted list  Binary Tree  Search tree  Hash Table  Priority Queue (Binary Heap)

10 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(n 2 ) betekent dat functie f(n) “van boven” asymptotisch begrensd wordt door g(n)=n 2.  Dit betekent dat f(n)  a·n 2 voor grootte waarden van n. Waarbij a  0 (je mag a zelf kiezen).

11 12 Big O notation voorbeeld  Wat is de big O notatie voor:  f(n) = 2n 3 + 4n + 2 log 2 n  f(n) = 4 log 2 n.  f(n) = log 10 n. Bedenk: log 10 n = log 2 n / log  f(n) =  f(x) = (10x 4 + 4x 2 ) / (5x x 2 + 7x). = O(n 3 ) = O(log 2 n) = O(1) = O(x)

12 13 Big O notation voorbeeld  Wat is de executietijd van het volgende algoritme in big O notatie: unsigned int max(vector v) { vector ::size_type n = v.size(); unsigned int max = 0; for (vector ::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 ?

13 14 Big O notation voorbeeld  Wat is de executietijd van het volgende algoritme in big O notatie: unsigned int maxprod(vector v) { vector ::size_type n = v.size(); unsigned int max = 0; for (vector ::size_type i=0; imax) { max=v[i]*v[j]; } return max; } T(n) = O(n 2 ) Kan het beter ?

14 15 Big O notation Je ziet dat een O(n 2 ) algoritme niet bruikbaar is voor hele grote hoeveelheden data en dat een O(10 n ) algoritme zo wie zo niet bruikbaar is.

15 16 Bekende datastructuren


Download ppt "Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1."

Verwante presentaties


Ads door Google