Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1
Hogeschool HZ Zeeland Waar gaat DSA over? Principes van een aantal verschillende datastructuren en algoritmen Toepassen van abstractie in het specificeren van datastructuren Eigenschappen van verschillende algoritmen in tijd en ruimte
Hogeschool HZ Zeeland Onderwerpen week 1: Introductie Datastructuren en algoritmiek Abstractie Analyse in tijd/ruimte
Hogeschool HZ Zeeland Introductie: Opbouw van de les Sandwich constructie: – 1e theorieuur: kennis – 2 practicum uren: opdrachten en/of zelfstudie – 2e theorieuur: feedback en/of verrijking theorie Toetsing: tentamen (100%)
Hogeschool HZ Zeeland Introductie: Planning Week 1 (Hst 1, 2): Introductie Week 2 (Hst. 3): Algoritmiek: sorting Week 3 (Hst 4): Stacks en Queues (abstractie) Week 4 (Hst. 5): Linked lists Week 5 (Hst. 6, 7): Algoritmiek: recursie Week 6 (Hst 8): binary trees, hash tables Week 7 : uitloop, tentamenvoorbereiding en vragen
Hogeschool HZ Zeeland Onderwerpen week 1: Introductie Datastructuren en algoritmiek – Wat zijn… – terminologie – gebruik Arrays als basis – werking – issues Abstractie Analyse in tijd/ruimte: Big-O notatie
Hogeschool HZ Zeeland Definities Wat is een datastructuur An arrangement of data in a computer’s memory (boek) Wat is een algoritme Algorithms manipulate the data in these structures in various ways (boek)
Hogeschool HZ Zeeland Datastructuren in de ‘echte wereld’ Kaartenbak Eigenschappen: – Bak met kaarten is structuur – Wat er op de kaarten staat is de data – (Hoe) zijn de kaarten geordend? – Kunnen/mogen er dubbele kaarten voorkomen? – Hoe snel kan ik invoegen, verwijderen of zoeken?
Hogeschool HZ Zeeland Voorbeelden van algoritmen Invoegen van elementen Zoeken naar een specifiek element Verwijderen van een element Door alle elementen itereren (=‘wandelen’) Sorteren van alle elementen op een bepaalde volgorde
Hogeschool HZ Zeeland Terminologie Database – De inhoud van alle elementen in een datastructuur – In een kaartenbak vormen alle kaarten samen een database Records – Eenheden waarin een database is ingedeeld – Kaartenbak: een record is dus één enkele kaart Field – Een record bestaat uit één of meerdere fields. Een field bevat een specifieke soort data – Voorbeeld: van een adressenbestand een field met het telefoonnummer Key – Om een bepaald record te zoeken wordt één van de velden aangewezen als key – Een key ‘unlocks’ een record – Dit zou voor een andere zoekopdracht weer een ander veld kunnen zijn – Voorbeeld: adressenbestand, zoeken naar een bepaalde naam of een postcode
Hogeschool HZ Zeeland Arrays: een demonstratie
Hogeschool HZ Zeeland Duplicates issue Zijn keys altijd uniek? Wat heeft dat voor invloed op de bewerkingen op een datastructuur?
Hogeschool HZ Zeeland Onderwerpen week 1: Introductie Datastructuren en algoritmiek Abstractie – Wat is abstractie – Waarom passen we het toe? – Hoe ziet het er uit? Analyse in tijd/ruimte
Hogeschool HZ Zeeland Abstraction: Wat is dat? Het scheiden van het wat van het hoe Wat geeft aan wat een datastructuur (eigenlijk elke class) moet doen (=interface) Hoe geeft aan hoe dat uitgevoerd wordt (=implementatie)
Hogeschool HZ Zeeland Abstraction: Waarom? Ontwerp: de vorm/indeling van een programma kan gedefinieerd worden zonder dat er nagedacht hoeft te worden over de implementatie Implementatie: uitwisselbaarheid van verschillende implementaties van een klasse eenvoudig
Hogeschool HZ Zeeland Abstraction: hoe ziet dat er uit? In een class in een (object georiënteerd) programma wordt het wat gedefinieerd door ‘alles wat public’ is (daarmee spreek je namelijk die bepaalde class aan). Alleen de definitie van de public methodes geven het wat aan. De implementatie van de methodes (code binnen de methodes) geven het hoe aan. Het wat wordt ook wel interface genoemd Niet verwarren met interface keyword in java (hoewel deze wel met elkaar te maken hebben)
Hogeschool HZ Zeeland Onderwerpen week 1: Introductie Datastructuren en algoritmiek Abstractie Analyse in tijd/ruimte – Waarom vergelijken we? – Wat en hoe kunnen we vergelijken? – De Big-O notatie
Hogeschool HZ Zeeland Eigenschappen van algoritmen in cijfers Verschillende datastructuren en algoritmen voor dezelfde bewerking vergelijken Wat is interessant om te vergelijken: hoe snel loopt een algoritme. Hoe kunnen we dit vergelijken? – Tijdmeting – Theoretische analyse Tijdmeting onpraktisch, door verschil in systemen Theoretische analyse Big-O notatie
Hogeschool HZ Zeeland Big-O notatie Definite: – De big-O notatie geeft een manier om een idee te krijgen van de performance (=snelheid) van algoritmen om zo deze met elkaar te kunnen vergelijken, zonder dat de snelheid van de machine van invloed is. Geeft een ‘cijfer’ voor de performance voor een bepaald algoritme Dit is hardware-onafhankelijk Is wel afhankelijk van aantal elementen in de datastructuur Berekening gaat uit van worst-case scenario
Hogeschool HZ Zeeland Voorbeeld: verwijderen element uit array 1 Een array met 100 elementen We willen het eerste element verwijderen Bewerking: – Stap 1: Haal element 0 uit array – Stap 2: Verplaats element 1 naar plaats 0 – Stap 3…100: herhaal stap 2 voor element 2, etc. Resultaat: om element te verwijderen zijn 100 stappen nodig!
Hogeschool HZ Zeeland Voorbeeld: verwijderen element uit array 2 De procestijd is uit te drukken in: T = K * N Hierin is: – T: tijd waarin algoritme is uitgevoerd – N: aantal elementen uit de datastructuur – K: een ‘machine’-afhankelijke factor
Hogeschool HZ Zeeland Voorbeeld: verwijderen element uit array 3 Om algoritmen met elkaar te vergelijken is de constante K niet nodig. Dit is de Big-O notatie Te noteren als: O(N)
Hogeschool HZ Zeeland Opdrachten: Bepaal uit tabel 1.1 (blz. 11/12) van de volgende datastructuren WAAROM de genoemde voor- en nadelen gelden: – Array, ordered array, linked list, binary tree en hash table Ken tevens getallen toe aan genoemde eigenschappen (in Big-O notatie) Ga na waar de factor K uit (kan) bestaan. Welke factoren bepalen de factor K
Hogeschool HZ Zeeland Demo-programma: interface Plist1: public void insertPerson (Person p) public Person findPerson (String lastName) public Person deletePerson(String lastName) public Plist1(int tableSize)
Hogeschool HZ Zeeland Einde…