Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

25
19 augustus 2003augustus 2003 Hogeschool HZ Zeeland Data Structuren & Algoritmen Week 1

Transcript of Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

Page 1: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

19 augustus 2003augustus 2003

Hogeschool HZ Zeeland

Data Structuren & Algoritmen

Week 1

Page 2: 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

Page 3: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

Hogeschool HZ Zeeland

Onderwerpen week 1:

Introductie Datastructuren en algoritmiek Abstractie Analyse in tijd/ruimte

Page 4: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

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

Page 5: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

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

Page 6: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

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

Page 7: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

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)

Page 8: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

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?

Page 9: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

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

Page 10: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

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

Page 11: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

Hogeschool HZ Zeeland

Arrays: een demonstratie

Page 12: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

Hogeschool HZ Zeeland

Duplicates issue

Zijn keys altijd uniek? Wat heeft dat voor invloed op de bewerkingen op een datastructuur?

Page 13: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

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

Page 14: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

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)

Page 15: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

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

Page 16: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

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)

Page 17: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

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

Page 18: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

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

Page 19: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

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

Page 20: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

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!

Page 21: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

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

Page 22: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

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)

Page 23: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

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

Page 24: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

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)

Page 25: Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.

Hogeschool HZ Zeeland

Einde…