Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.
-
Upload
henriette-ten -
Category
Documents
-
view
215 -
download
1
Transcript of Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.
19 augustus 2003augustus 2003
Hogeschool HZ Zeeland
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 datastructuurAn arrangement of data in a computer’s memory (boek)
Wat is een algoritmeAlgorithms 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…