Algoritmen en Datastructuren (ALDAT)

Slides:



Advertisements
Verwante presentaties

Advertisements

Objectgeoriënteerd Programmeren in C++
Algoritmen en Datastructuren
Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 5.
Microcontroller Programmeren in C
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.
Datastructuren Quicksort
Jaar 1Jaar 2Jaar 3Jaar 4 Opleidingsprofiel Elektrotechniek De CarrièreDe Basis Afstuderen PropedeuseKern Stage EP1EP2EQ1EQ2ECS Minor ECNECA regulier Minor.
EVMINX4 Week 3 Algoritmen en Datastructuren (ALDAT)
Gestructureerd programmeren in C
Instructie Programmeren Task 8 5JJ70. PAGE 2 Task 8: Double Linked List Het doel van deze opdracht is: Het opbouwen van een tweetal klassen, die samen.
PROS2 Les 11 Programmeren en Software Engineering 2.
1 Hashtabellen Datastructuren. 2 Dit onderwerp Direct-access-tabellen Hashtabellen –Oplossen van botsingen met “ketens” (chaining) –Analyse –Oplossen.
GESPRG Les 14 Gestructureerd programmeren in C. 174 Details! The devil is in the details.
Datastructuren Analyse van Algoritmen en O
Datastructuren Analyse van Algoritmen en O
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 5.
1 Tentamen 21 januari 2008 uitleg Algemene kennisvragen a)“Wat verstaan we onder de complexiteit van een algoritme?” –Cruciaal: wat gebeurt er met.
Jaar 1Jaar 2Jaar 3Jaar 4 Opleidingsprofiel Elektrotechniek De CarrièreDe Basis Afstuderen PropedeuseKern Stage EP1EP2EQ1EQ2ECS Minor ECNECA regulier Minor.

1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
1 Datastructuren Lijstjes (Stacks & Queues) Onderwerp 7.
Datastructuren Zoekbomen
1 Datastructuren Heapsort College 4. 2 Vandaag  Kort: ADT vs Datastructuur  Heaps en Heapsort  Tijd over: ondergrenzen voor sorteren; nog sneller sorteren.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen (II) College 6.
1 KANSBEREKENING Datastructuren. 2 Kansberekening  Een paar voorbeelden van kansberekeningsvragen.
De koektrommel of de grabbelton
Inleidend probleem Data structuur (hiërarchie van classes)
Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 6.
Algoritmen en Datastructuren (ALDAT) EVMINX4 Dagdeel 2.
Jaar 1Jaar 2Jaar 3Jaar 4 Opleidingsprofiel Elektrotechniek De CarrièreDe Basis Afstuderen PropedeuseKern Stage EP1EP2EQ1EQ2ECS Minor ECNECA regulier Minor.
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
1 Datastructuren Quicksort en andere sorteermethoden College 3.
Logaritmen (heel eventjes)
Optuigen van datastructuren
1 Datastructuren Heapsort (2e deel) College 5. 2 Vandaag  Heaps en Heapsort  (eind)  Nog sneller sorteren:  Ondergrenzen  Linair sorteren.
Project OO-AD: Color Crazy Domien Nowicki, Bjorn Schobben.
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 3.
Optuigen van datastructuren Datastructuren Onderwerp 11.
Datastructuren Sorteren, zoeken en tijdsanalyse
Sorteeralgoritmen. Sorteren: aanpak 1 Hoe ga je een rij getallen sorteren met PC? Sorteren door selectie (= selection sort): Zoek de kleinste waarde Sorteer.
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
Algoritme Inhoud: Definitie algoritme Recursieve algoritmes Opgaven
Jaar 1Jaar 2Jaar 3Jaar 4 Opleidingsprofiel Elektrotechniek De CarrièreDe Basis Afstuderen PropedeuseKern EP1EP2EQ1EQ2 2 × Minor ECNECA duaal Minor Kern.
Project OO-AD: Color Crazy Domien Nowicki, Bjorn Schobben.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Finite State Machine (Eindige.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM.
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 3 redirection,
Hoorcollege 1a Praktische zaken. Gameprogrammeren Doel van het vak: Games programmeren (de game loop, sprites, audio, physics, animatie…) Basisprogrammeertechnieken.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag top-down decompositie Opdrachten:
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  Een (vaste) melodie spelen op de PC speaker 
Tircms03-p les 1 C++ voor C-kenners Voor Technische Informatica.
Instructie Programmeren Task 7
1 Datastructuren Analyse van algorithmen (vervolg) Heapsort College 4.
1 PI1 week 9 Complexiteit Sorteren Zoeken. 2 Complexiteit van algoritmen Hoeveel werk kost het uitvoeren van een algoritme (efficiëntie)? –tel het aantal.
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
Minimum Opspannende Bomen Algoritmiek. 2 Inhoud Het minimum opspannende bomen probleem Een principe om een minimum opspannende boom te laten groeien Twee.
Berekening van de Orde Van een Algoritme
Datastructuren voor graafrepresentatie
Minimum Opspannende Bomen
De programmeertaal C++
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
C++ • C++ als een verbetering van C • Abstracte datatypen met classes • Constructoren en destructoren • Subklassen • binding van functies 1.
Unified Modeling Language
Software Development fundamentals
Gameprogrammeren: Arrays
Python – For loop + strings
Transcript van de presentatie:

Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 1

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

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 http://bd.eduweb.hhs.nl/aldat/ Studiewijzer met uitgebreide planning Dictaat Practicumopdrachten + uitgebreide practicumhandleiding Sourcecode van alle voorbeelden Sheets Links

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.

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

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

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.

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.

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

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

Big O notation voorbeeld Wat 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)

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 ?

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 ?

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.

Bekende datastructuren