Top Banner
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 1 © Anders Broberg, Lena Kallin Westin, 2007 2 DoA VT -07 Innehåll Kurspresentation Inblandade personer, Målsättning, Förkunskaper, Kursutvärdering, Upplägg, Översikt Föreläsning 1 Viktiga begrepp Listor o Specifikation, Konstruktion o Algoritmmönster Riktade listor, länkade celler o Specifikation, Konstruktion o Dynamiska resurser Att läsa: Kapitel 1-4 © Anders Broberg, Lena Kallin Westin, 2007 3 DoA VT -07 Inblandade personer Föreläsare Lena Kallin Westin (kursansvarig) Lars Larsson Handledare Gruppövningar Lena, Lars och Tommy Tommy Löfstedt Lars Larsson © Anders Broberg, Lena Kallin Westin, 2007 4 DoA VT -07 Mina målsättningar Rolig och viktig kurs Bli en bättre programmerare och inse att man blivit det Känna till kända lösningar på typiska problem Konstruera robusta och korrekta program Konstruera och beskriva algoritmer och datatyper Planera sitt arbete så att projekt blir klar i tid Förstå komplexitetsbegreppet Tid och rum Bli bättre på att kommunicera resultat skriftligt © Anders Broberg, Lena Kallin Westin, 2007 5 DoA VT -07 Era målsättningar? © Anders Broberg, Lena Kallin Westin, 2007 6 DoA VT -07 Vad krävs för att nå dit? Ge kursen en ärlig chans Kom i tid till föreläsningarna Läs boken, förstå vad som står där Gör övningar Börja med laborationerna i tid Utnyttja handledningen Säg till om det är något som inte funkar
14

Datastrukturer och algoritmer - umu.sealgoritmer, 2:a uppl., Studentlitteratur, 2000, ISBN9144-01364-7 Referenslitteratur: ¾Mark Allen Weiss, "Datastructures and Algorithm Analysis

Mar 26, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Datastrukturer och algoritmer - umu.sealgoritmer, 2:a uppl., Studentlitteratur, 2000, ISBN9144-01364-7 Referenslitteratur: ¾Mark Allen Weiss, "Datastructures and Algorithm Analysis

© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2007

Datastrukturer och algoritmer

Föreläsning 1

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

2

DoA VT -07Innehåll

KurspresentationInblandade personer, Målsättning, Förkunskaper, Kursutvärdering, Upplägg, Översikt

Föreläsning 1Viktiga begreppListor

o Specifikation, Konstruktiono Algoritmmönster

Riktade listor, länkade cellero Specifikation, Konstruktiono Dynamiska resurser

Att läsa: Kapitel 1-4

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

3

DoA VT -07Inblandade personer

FöreläsareLena Kallin Westin (kursansvarig)Lars Larsson

Handledare

GruppövningarLena, Lars och Tommy

Tommy Löfstedt Lars Larsson

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

4

DoA VT -07Mina målsättningar

Rolig och viktig kurs Bli en bättre programmerare och inse att man blivit det

Känna till kända lösningar på typiska problemKonstruera robusta och korrekta programKonstruera och beskriva algoritmer och datatyperPlanera sitt arbete så att projekt blir klar i tid

Förstå komplexitetsbegreppetTid och rum

Bli bättre på att kommunicera resultat skriftligt

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

5

DoA VT -07Era målsättningar?

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

6

DoA VT -07Vad krävs för att nå dit?

Ge kursen en ärlig chansKom i tid till föreläsningarnaLäs boken, förstå vad som står därGör övningarBörja med laborationerna i tidUtnyttja handledningenSäg till om det är något som inte funkar

Page 2: Datastrukturer och algoritmer - umu.sealgoritmer, 2:a uppl., Studentlitteratur, 2000, ISBN9144-01364-7 Referenslitteratur: ¾Mark Allen Weiss, "Datastructures and Algorithm Analysis

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

7

DoA VT -07Förkunskaper

Kunna implementera en godtycklig algoritmbeskrivning i JAVA/C

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

8

DoA VT -07Kursutvärdering från ifjol

Annan föreläsare ifjol!Från sammanställningen:

Lite mindre än hälften tyckte att kurslitteraturen var bra. Majoriteten tyckte att de obligatoriska uppgifterna, undervisningen och handledningen var bra. Kursens svårighetsgrad var lagom till svårt Man fick ut jättemycket till en del nytt i form av ny kunskap. Majoriteten deltog i schemalagda aktiviteter alltid till mer än hälften av tillfällena. Man jobbade kontinuerligt med kursmaterialet nästan alltid till nästan aldrig. Arbetsinsatsen som krävdes på kursen uppskattades som mycket högre till lika stor som tidigare kurser.

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

9

DoA VT -07Intryck från samtliga svar

Antingen tyckte man kursboken var bra eller ocksåavskydde man den.OU var bra och man lärde sig mycket

Specifikationerna svåra att tolkaOU var jobbiga, speciellt den sista

Handledning (4 handledare ifjol)Skiftande kommentarer, många ville ha mer handledning, speciellt i slutet av kursen

FöreläsningarVissa klagomål på oh-bildernas utseende

GruppövningarFungerade bra ©

And

ers B

robe

rg, L

ena

Kal

lin W

estin

, 200

7

10

DoA VT -07Så...

Vi har bytt layout på slides och websidor.Samtliga obligatoriska uppgifter är omarbetade.

En ny uppgift införd (eg. delat upp jobbet med Router-labben lite)

Gruppövningarna är omgjordaGruppövning 1 och 2 som ifjol, resten har nyauppgifter inblandade.

o Många uppgifter från programmeringstävlingar

Arbetssättet behåller vi (SI-liknande)

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

11

DoA VT -07Här sitter vi

MIT-huset våning 4

Exp.

Studievägl.

LenaSupport

Lådor för OU-inlämning

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

12

DoA VT -07…mera lokaler

Naturvetarhuset våning 3

Lars och Tommy

NA310/NA320 är reserverad för kursen alla förmiddagar 8-12 (Alltid tillgängliga via kort)

Page 3: Datastrukturer och algoritmer - umu.sealgoritmer, 2:a uppl., Studentlitteratur, 2000, ISBN9144-01364-7 Referenslitteratur: ¾Mark Allen Weiss, "Datastructures and Algorithm Analysis

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

16

DoA VT -07Kursmaterial

KurslitteraturJanlert L-E., Wiberg T., Datatyper och algoritmer, 2:a uppl., Studentlitteratur, 2000, ISBN9144-01364-7

Referenslitteratur:Mark Allen Weiss, "Datastructures and Algorithm Analysis in Java", 2 ed, Pearson, Addison Wesley ISBN 0-321-37319-7 Mark Allen Weiss, "Datastructures and Algorithm Analysis in C” Addison Wesley Longman ISBN 0-321-18995-7

Föreläsningsunderlag (finns på websidan) ©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

17

DoA VT -07Kursmaterial

Ev. ytterligare material som delas ut under kursenHemsidan: http://www.cs.umu.se/kurser/TDBA36/VT07/Mycket information skickas via mail. Läs dina cs-mail minst en gång om dagen!

Gör forward: https://support.cs.umu.se/userinfo/info/index.html

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

18

DoA VT -07Kursens upplägg

Föreläsningar (16 st)Teoripresentation och lite praktiska inslag

Gruppövningar (5 st)3 grupper, SI-stil

Individuell handledning Examination

4 obligatoriska uppgifter = 2po Två utförs parvis och två ska redovisas enskilt

Skriftlig tentamen, 6 timmar = 3po OBS! Tentamen 1 går 16-22 den 31/5

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

19

DoA VT -07Obligatoriska uppgifter

Ordinarie sista redovisningsdag står på varjeuppgifts webbsida.

Uppgiften bedöms med G, K, O eller UKomplettering inom 5 dagar från första tillfälleför uthämtning av uppgiften

Om man inte är klar med alla 4 OU måsteman komplettera vid ett uppsamlingstillfälle(augusti).

Måste göra om alla uppgifterKan vara nya uppgifter/nya handledare

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

20

DoA VT -07Obligatoriska uppgifter

En uppgift som är 5 minuter sen är för sen!Ansökan om uppskov pga exvis sjukdom skaske minst en dag före sista inlämningsdag.

Kursansvarig bedömer uppskoven.Notera att det ingår i examinationen att ni skalära er att hinna blir klar med uppgifterna i tid.

o “Jag hinner inte” kommer inte att godtas som endaskäl till uppskov.

Resultat anslås på kursens hemsida.

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

21

DoA VT -07OU1

Implementera tabeller Individuell, Inlämnas 3/4 klockan 12.00

Syftet: Du skabörja få en förståelse varför man använder sig av abstrakta datatyper, analysera för- och nackdelar med olika implementationer av den abstrakta datatypen tabell, öva dig i att hantera referenser och dynamiska strukturer, öva dig i skriftlig presentation.

Page 4: Datastrukturer och algoritmer - umu.sealgoritmer, 2:a uppl., Studentlitteratur, 2000, ISBN9144-01364-7 Referenslitteratur: ¾Mark Allen Weiss, "Datastructures and Algorithm Analysis

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

22

DoA VT -07OU2

Läsa och förstå vad OU4 går ut på samt skapa ett testfall för OU4

Parvis, Inlämnas 17/4 klockan 12.00

Syftet: Ni ska läsa in er på det avslutande programmeringsprojektet påkursen skaffa er en förståelse för vad en router är och hur programmet som ni ska skriva senare borde fungera skapa testfall som tillsammans med alla andra studenters testfall bildar en bank med uppgifter som gör det enklare att klara av det avslutade programmeringsprojektet.

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

23

DoA VT -07OU3

Analysera algoritmerExperimentellt (individuell)Asymptotiskt (gruppövning men individuell redovisning)Inlämnas 20/4 klockan 12.00

Syfte: Du skafå prova på att testa och utvärdera implementationer av okända algoritmer. öva er på att analytiskt utvärdera algoritmer.

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

24

DoA VT -07OU4

Implementera en router Parvis, samma par som OU2Dokumentation inlämnas 16/5 klockan 12.00Implementationen inlämnas 25/5 klockan 12.00

Syfte: Ni skafå goda kunskaper inom vanligt använda datatyper och algoritmer. praktiskt få prova på att tillämpa tidigare tillgodosedda kunskaper i en verklig och aktuell miljö. praktisera arbete i mindre grupper utföra ett arbete under tidspress och lära er planera ert arbete och prioritera bland olika lösningar för att få en färdig produkt som uppfyller kundens (handledarnas) krav. öva er att redovisa ett större arbete skriftligt.

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

25

DoA VT -07Registrering till tentamen

Man måste anmäla sig för att få skrivatentamen i datavetenskap

Man går till sidanhttps://www.cs.umu.se/information/tenta/ ochfyller i sin användare och lösenord.Sen letar man reda på rätt kurs (kurskodTDBA36) och registrerar sig. Man måste anmäla sig senast 10 dagar innantentan ges, på denna kurs absolut senast onsdag16 maj.

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

26

DoA VT -07Gruppövningar

Öningar från boken tillsammans med en eller flera programmeringstävlingsuppgifterVissa utvalda räknar vi på gruppövningarnaKursen indelad i tre grupper

Sitter i smågrupper och hjälper varandra fram till förståelse.

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

27

DoA VT -07Tentan

Tidigare år:Tvådelad tentamen (Måste vara godkänd på båda delarna).

o En begreppsdel– Förklara kortfattat ett antal begrepp

o En förståelsedel– Frågor där man får visa att man förstått kursen –

”hur saker och ting hänger ihop”

I år????

Page 5: Datastrukturer och algoritmer - umu.sealgoritmer, 2:a uppl., Studentlitteratur, 2000, ISBN9144-01364-7 Referenslitteratur: ¾Mark Allen Weiss, "Datastructures and Algorithm Analysis

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

28

DoA VT -07Kursens mål:

Kursdeltagarna ska förvärva förtrogenhet med grundläggande element och konstruk-tioner/tekniker för att organisera data och lösa problem. Detta inbegriper

formell och informell beskrivning av grundläggande abstrakta datatyper,grundläggande algoritmer och effektivitetsanalys paradigmer/tekniker för algoritmkonstruktion.

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

29

DoA VT -07Kursens mål FSR:

Efter avslutad kurs ska studenten kunna: känna till grundläggande begrepp relaterade till datastrukturer och algoritmerkänna till grundläggande abstrakta datatyper såsom lista, stack, kö, träd, mängd, graf och tabellvälja datatyper för ett givet problemvälja implementation av datatyperkänna till grundläggande algoritmer, deras komplexitet och karakteristiska egenskaper för typiska problemanalysera algoritmer praktiskt och teoretiskt med avseende påprestandaanvända sig av grundläggande problemlösningsstrategier, som till exempel divide and conquer, brute force, greedy, dynamisk programmering, på nya problemtillämpa den objektorienteringsparadigmen på ett större programmeringsprojektstrukturerat dokumentera algoritmer och datatyper

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

30

DoA VT -07Websajtenhttp://www.cs.umu.se/kurser/TDBA36/VT07/

SchemaUppdateringarResultatredovisningGruppövningarFöreläsningar

o Introduktion, OH-bilder, läsanvisningar

Gamla tentorObligatoriska uppgifterMailarkiv för kursenAnmälan till tenta

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

31

DoA VT -07Innehållsöversikt

AlgoritmerTids- och rumsfrågorDesignprinciper

Abstrakta datatyperSökningSortering

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

32

DoA VT -07Innehållsöversikt – Algoritmer

Tids och rumsfrågorExekvering, implementering, underhållTid vs rumskomplexitetAnalys av exekveringstider

o Olika sätt, vad de står för och +/-– Experimentell– Asymptotisk

o T(n) för en alg => O(n)– Primitiva operationer– Okulärbesiktning

o Att beskriva algoritmer

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

33

DoA VT -07Innehållsöversikt – Algoritmer

DesignprinciperIdéer till 4 olika algoritmtyper

o Brute force, D&C, Greedy och dynamisk programmering

o Exempel på varjeo +/-o Typiska användningar

Page 6: Datastrukturer och algoritmer - umu.sealgoritmer, 2:a uppl., Studentlitteratur, 2000, ISBN9144-01364-7 Referenslitteratur: ¾Mark Allen Weiss, "Datastructures and Algorithm Analysis

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

34

DoA VT -07

Innehållsöversikt – Abstrakta Datatyper (ADT)

Stack, Kö, Listor, Träd, Graf, Prioritetskö, Heap, Tabell, Sträng, Mängd, Sökträd, Tries, mmBeskrivningssätt

Organisation, Modell, Gränsytan (formell, informell)Grundbegrepp

Vad är en organisation, sorterad ADT, mmPrimär vs. sekundär strukturAbsolut vs. relativ komplexitet

Sätt att implementera+/-, när var hurKomplexitet för de viktigaste operationerna

Vart hittar vi ADT typisktHur olika ADT hänger ihop med varandra Algoritmer på ADT ©

And

ers B

robe

rg, L

ena

Kal

lin W

estin

, 200

7

35

DoA VT -07

Innehållsöversikt –Sökning (traversering)

Vad är traverseringOlika metoder för sökning i sekvenser

Linjär & Binär+/-Ställer de några krav på implementationen av ADTn?

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

36

DoA VT -07Innehållsöversikt – Sortering

Varför sorterar vi?Sorterad ADT vs sortering av dataSökningen blir snabbare…ibland

Hur kan vi sortera (olika former)+/-När passar dom?Stabil sortering

5-6 olika algoritmer, analys

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

37

DoA VT -07Att bygga program ≈ bygga hus/broar

HusbyggeSpecifikation/BeskrivningMaterialVerktygUtvärdering/uppföljning

ProgrammeringProblembeskrivningSystemdesignModelleringsverktyg

o Datatyper – representera datat i programmet

o Algoritmer – stegvis plan för att utföra något, modellera hur man löser problemet

o Kontrollstrukturer – för att modellera flödet

Utvärdering/uppföljningo Komplexitetsanalyso Valideringskriterier

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

38

DoA VT -07Metaforer för programbyggnad

InstruktionsmetaforenProgrammeraren är en arbetsledareGer instruktioner till datorn Datorn följer dessa i tur och ordning till punkt och pricka.

ProblemlösningsmetaforenVad ska göras och hur ska det göras?Programmeraren löser problemet (skriver en algoritm) som sedan implementeras.

AdaptionsmetaforenProgrammet är ett objekt som ingår och interagerar med en miljö.Programmet anpassas till miljön gradvis

Låg nivånära datorn

Hög nivå

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

39

DoA VT -07Datavärldsbilder

Manipulativa ansatsenHantverksmetafor, man har ett (passivt) objekt som bearbetas steg för steg tills man nått målet.Imperativa språk som C, Pascal, Modula, Ada

Funktionella ansatsenMatematisk funktionsmetafor, man ändrar aldrig ett objekt. Resultatobjekten är avbildningar av startobjekten.Funktionella/relationella språk som ML, Lisp, Prolog

Objektorienterade ansatsenObjekten har själv egenskaper och beteenden och interagerar med andra objekt. Händelsestyrd programmering.Objektorienterade språk som Java, C++

Page 7: Datastrukturer och algoritmer - umu.sealgoritmer, 2:a uppl., Studentlitteratur, 2000, ISBN9144-01364-7 Referenslitteratur: ¾Mark Allen Weiss, "Datastructures and Algorithm Analysis

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

40

DoA VT -07Kursens (och bokens) strategi:

Beskriva datastrukturer och ansatser så neutralt och språkoberoende som möjligt.

Kunskaperna mer generella och allmänt tillämpbara.

Flesta studenterna har Java som bakgrund, några har C som bakgrund.

Läser du DV, ID, eller TDV eller har läst TDBA63, TDBA62 ska du implementera koden i Java. Annat studieprogram, eller läst TDBA66, TDBA39 så fårdu lösa uppgiften i C även om vi rekommenderar att den görs i Java.

Oftast pseudokod på föreläsningarna ©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

41

DoA VT -07Gränssnitt

Vad är ett gränssnitt?KontaktytaGränsen mellan två eller flera delarÖverenskommelse - oberoende av vem, vart, hur ska det ”passa”

o Musköten 1700-taleto Lego

Uppmuntrar till flexibiliteto Skruvmejslar med olika spetsar

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

42

DoA VT -07Gränssnitt

SeparerarFunktion och implementationAnvändning och skapandeSpecifikation och konstruktion

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

43

DoA VT -07Gränssnitt i ”datavetenskapen”

Mellan centralenheter och periferienheterMellan människan och maskinenMellan mjukvarukomponenter

Funktioner/metoderDatatyper

DatakommunikationDistribuerade system

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

44

DoA VT -07Begrepp

Data – objekten som bär information genom att representera någotDatatyp = operationer + objekt

Vilka objekt är det?o Vad vill vi modellera/representera/abstrahera?

Vad kan man göra med dem?o Vilka operationer/metoder?

Objekten finns i en värdemängd/objektmängdStruktur – det som finns kvar när man bortser från elementvärden ©

And

ers B

robe

rg, L

ena

Kal

lin W

estin

, 200

7

45

DoA VT -07En datatyp kan vara

Enkel (heltal)Sammansatt (Lista av heltal)

Homogen vs. HeterogenFysisk

Implementerad i språket/hårdvaranint, string

Abstrakt När man inte är intresserad av om/hur den är implementerad i språk/hårdvaraEn fysisk datatyp är abstrakt

Page 8: Datastrukturer och algoritmer - umu.sealgoritmer, 2:a uppl., Studentlitteratur, 2000, ISBN9144-01364-7 Referenslitteratur: ¾Mark Allen Weiss, "Datastructures and Algorithm Analysis

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

46

DoA VT -07En datatyp kan vara

Konstrueradnär man beskrivit hur man skulle representera objekten och operationer

Implementerad komplett konstruerad från grunden och redo att användas i ett programen fysisk datatyp är implementerad

Konkret Fysiska, implementerade och konstrueradedatatyper ©

And

ers B

robe

rg, L

ena

Kal

lin W

estin

, 200

7

47

DoA VT -07Beskrivning av en datatyp i boken

Modell - vardaglig, ”det man modellerar”Kö

OrganisationDen grundläggande naturen på objekten, linjärt ordnade, före och efter relation etc.

Informell beskrivningGränsytan (nödvändig och minimal, kraftfull)Informell beskrivning av operationernas funktionSignaturdiagramOfta den mest omfattande beskrivningen

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

48

DoA VT -07Beskrivning av en datatyp – forts.

Formell beskrivning rent matematisk-logisk

Konstruktioner och implementationerKomplexitetsanalysExemplen i boken i huvudsak Java eller ML

Tillämpningar och algoritmer

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

49

DoA VT -07Lista

ModellPärm

o Bläddra, inspektera, lägga till, ta bort

OrganisationDiskret linjärt ordnad

o Ändligt antal linjärt ordnade elemento Första / sista elemento Före / efter relation av element (inte värden)o Alla element (utom det sista) har en efterföljareo Alla element (utom det första) har en föregångare

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

50

DoA VT -07Lista - Organisation

Dynamisk datatypStruktur och storlek förändras under datatypens livslängd

Generisk datatyp (polytyp)Lista av typ

o Typ kan vara av vilken typ som helst

Homogen datatypAlla element har samma typ

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

51

DoA VT -07Lista – Organisation: Begrepp

ElementBeståndsdel i en sammansatt datatyp Består av värde och position

o positionen är läget i strukturen hos den sammansatta datatypen

StrukturBortser från elementvärdenÄndras när element läggs till eller tas bortListan (1, 2) och ((1,2,3) , (4,5,6)) har sammastruktur

Page 9: Datastrukturer och algoritmer - umu.sealgoritmer, 2:a uppl., Studentlitteratur, 2000, ISBN9144-01364-7 Referenslitteratur: ¾Mark Allen Weiss, "Datastructures and Algorithm Analysis

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

52

DoA VT -07Lista – Organisation: Begrepp

PositionPlats i strukturenPositionsbeskrivningar förändras när element sätts in eller tas bortPositionen är elementets förhållande till objektet i övrigtHur man anger positioner avgörs vid konstruktionen av datatypen. Strukturförändrande operationer behöver returnera nytt positionsvärde ©

And

ers B

robe

rg, L

ena

Kal

lin W

estin

, 200

7

53

DoA VT -07Lista – Specifikation: Gränsytaabstract datatype List(val)auxiliary pos

Empty() → List(val)Insert(v:val,p:pos,l:List(val)) →(List(val),pos)Isempty (l:List(val)) → BoolInspect (p:pos,l:List(val)) → valFirst (l:List(val)) → posEnd (l:List(val)) → posNext(p:pos,l:List(val)) → posPrevious(p:pos,l:List(val)) → posRemove((p:pos,l:List(val)) →(List(val),pos)

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

54

DoA VT -07

Lista – Specifikation: Informell funktionsspecifikation

Empty() – skapar ett nytt tomt listobjekt (konstruktor). En tom lista har en position som är First(l) = End(l) Insert (v,p,l) – sätter in ett element med värdet v omedelbart före position p, returnerar positionen för vIsempty(l) – true om listan är tom, dvs First(l) = End(l) Inspect(p,l) – returnerar värdet för elementet på position p. Operationen är inte definierad för listans sista posFirst,End – returnerar listans första resp. sista position. OBS! End pekar på positionen efter sista elementetNext(p,l) Previous(p,l) – returnerar närmast efterföljande (föregående). Ej definierad för listans sista (första) positionRemove(p,l) – tar bort element i positionen p, returnerar nya positionen för det element som följde omedelbart efter ©

And

ers B

robe

rg, L

ena

Kal

lin W

estin

, 200

7

55

DoA VT -07

Bild från sidan 47 i Janlert L-E., Wiberg T., Datatyper och algoritmer, Studentlitteratur, 2000

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

56

DoA VT -07Varför är specifikationen viktig?

Nu kan vi skapa algoritmer för listor utan att behöva bry oss om hur listan verkligen implementeras.Ex, Söka efter elementet med värdet v i listan list:

If not isEmpty(list) Thenp:= first(list)While Not (Next(p,list) = End(list)

Or v = inspect(p, list)) Dop:= next(p, list)

EndEnd

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

57

DoA VT -07Implementation av gränsyta till Lista

public interface List{public boolean isEmpty();public Pos insert(Object v, Pos p);public Object inspect(Pos p);public Pos first();public Pos end();public Pos next(Pos p);public Pos previous(Pos p);public Pos remove(Pos p);

}

Page 10: Datastrukturer och algoritmer - umu.sealgoritmer, 2:a uppl., Studentlitteratur, 2000, ISBN9144-01364-7 Referenslitteratur: ¾Mark Allen Weiss, "Datastructures and Algorithm Analysis

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

58

DoA VT -07Implementation av gränsyta till Pos

public interface Pos { public boolean eq(Pos p);

}

Implementation av gränsytan i C/* Funktionsprototyper */list_t *list_empty();pos_t *list_insert(void *v, pos_t *pos, list_t *list);int list_isempty(list_t *list); void *list_inspect(pos_t *pos, list_t *list);int list_isend(pos_t *pos, list_t *list); pos_t *list_first(list_t *list);pos_t *list_next(pos_t *pos, list_t *list); pos_t *list_remove(pos_t *pos, list_t *list);

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

60

DoA VT -07Algoritmmönster

TraverseringBesöker systematiskt alla element

SökningSöker det första elementet som uppfyller ettbestämt villkor

FiltreringFiltrerar ut alla element som uppfyller ett bestämtvillkor

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

61

DoA VT -07Algoritmmönster

ReduktionBeräknar en funktion av objektets elementvärden

o Ex. Summera alla tal i en lista

MappningTransformera varje elementvärde i en datastruktur

o Ex. multiplicera alla talen i en lista med 4

Lista – Konstruktion: Statiskt Lista som Fält+ Snabb inspektion av element- Fast reserverat utrymme- Kostsamt sätta in

och ta bort element

Bild från sidan 51 i Janlert L-E., Wiberg T., Datatyper och algoritmer, Studentlitteratur, 2000

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

63

DoA VT -07Lista – Konstruktion: Dynamiskt

Länkade strukturer+ Insättning / borttagning går snabbt + Minnesutrymmet är proportionellt mot storleken+ Allokera minne när det behövs- Länkarna behöver också minnesutrymme- Kommer bara åt listelement genom att traversera

från listans börjanHuvudlös eller med huvudCirkulär eller linjär

Page 11: Datastrukturer och algoritmer - umu.sealgoritmer, 2:a uppl., Studentlitteratur, 2000, ISBN9144-01364-7 Referenslitteratur: ¾Mark Allen Weiss, "Datastructures and Algorithm Analysis

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

64

DoA VT -07Länkad Lista

Länkar mellan elementenElementen är en cell som består av länkar och värdeDubbel eller enkellänkad

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

65

DoA VT -07Dubbellänkad lista

Före insättning

Dubbellänkad listaSkapa ny nod för insättning

newNode

nodeBefore nodeAfter

newNode skapas

nodeAfter = noden som ska vara efter den nya noden

nodeBefore = nodeAfter:s ”bakåt” länk

newNode:s ”framåt” länk = nodeAfter

newNode:s ”bakåt” länk = nodeBefore

nodeBefore:s ”framåt” länk = newNode

nodeAfter:s ”bakåt” länk = newNode

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

67

DoA VT -07Dubbellänkad lista

Efter insättning och före borttagning

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

68

DoA VT -07Dubbellänkad lista

Ta bort ett element

nodeBefore = nodeToRemove:s ”bakåt” länk

nodeAfter = nodeToRemove:s ”framåt” länk

nodeBefore:s ”framåt” länk = nodeAfter

nodeAfter:s ”bakåt” länk = nodeBefore

nodeBefore nodeAfter

nodeToRemove

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

69

DoA VT -07Dubbellänkad lista

Efter borttagning

Page 12: Datastrukturer och algoritmer - umu.sealgoritmer, 2:a uppl., Studentlitteratur, 2000, ISBN9144-01364-7 Referenslitteratur: ¾Mark Allen Weiss, "Datastructures and Algorithm Analysis

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

70

DoA VT -07Riktad Lista

ModellSlalombanaMan kan ta sig till startenMan passerar portarna i en riktningMan kan ”åka” om en del av banan

OrganisationSpecialisering av ListaHar endast en riktning från början av listan och framåt.

Rekursiv definition: En riktad lista är tom eller har ett första element som följs av en riktad lista ©

And

ers B

robe

rg, L

ena

Kal

lin W

estin

, 200

7

71

DoA VT -07Riktad Lista – Specialisering

Man tar bort operationer ur gränsytan, utan att mängden objekt som kan konstrueras förändras.Två objekt som är lika, ska vara lika också i specialiseringen.

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

72

DoA VT -07Riktad Lista – Specialisering

Previous och end behövs ejIsend lagts tillJava: Kan ej ta bort en del av gränsytan

Exceptions för previous och endRiktad Lista som helt ny klass

- Ingen återvinning av kod...

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

73

DoA VT -07Gränsyta till Riktad Lista

abstract datatype DList(val)auxiliary pos

Empty() → DList(val)Insert(v:val,p:pos,l:DList(val)) → (DList(val),pos)Isempty (l:DList(val)) → BoolInspect (p:pos,l:DList(val)) → valFirst (l:DList(val)) → posIsend (p:pos,l:DList(val)) → BoolNext(p:pos,l:DList(val)) → posRemove((p:pos,l:DList(val)) → (DList(val),pos)

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

74

DoA VT -07Riktad Lista – konstruktion

Konstruerad somFältDubbellänkad ListaEnkellänkad Lista

Enkellänkad Lista Mer ekonomisk

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

75

DoA VT -07Riktad Lista som Enkellänkad Lista

Problem vid insättningLösning:

Representera position mha en länk till föregångarelementet

o Fysisk och logisk referens

Listhuvudo Tomma objekto Gränspositioner

Page 13: Datastrukturer och algoritmer - umu.sealgoritmer, 2:a uppl., Studentlitteratur, 2000, ISBN9144-01364-7 Referenslitteratur: ¾Mark Allen Weiss, "Datastructures and Algorithm Analysis

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

76

DoA VT -07Enkellänkad Lista

Konstruktion utan huvudStopplänkvärde (nil, null)Insättning före elementet X

o Skapa en ny cello Sätt in den efter Xo Kopiera X:s värde till den nya celleno Sätt X:s värde till v

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

77

DoA VT -07n-länkad Cell

Tippel som består av ett värden st länkar

Byggmaterial för andra datatypern-länkad struktur

Objekt konstruerade med n-länkade cellero Listor, träd

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

78

DoA VT -07”1-Cell”private class Cell{

private Object data; //data portionprivate Cell next; //link to next nodeprivate Cell(Object dataPortion){

data = dataPortion;next = null;

} //end constructorprivate Cell(Object dataPortion, Cell NextCell){

data = dataPortion;next = NextCell;

} //end constructor} //end Cell ©

And

ers B

robe

rg, L

ena

Kal

lin W

estin

, 200

7

79

DoA VT -07Cell används för positionerprivate class Cell implements Pos{

// se förra sidan för konstruktorerpublic boolean eq(Pos p) {

if (((Cell)p).next == this.next) return true;

elsereturn false;

}}

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

80

DoA VT -07Länk

Referens, pekareEn fysisk datatyp i många språk

Objekt som refererar till annat objektKonstrueras oftast som index i fält (kursor)Billigare kopiera länkar till objekt än objekten självaJava: Inget objekt utan länk

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

81

DoA VT -07Gränsyta till LänkAbstract datatype Link (obj)

Make(x : obj) → Link (obj)Nil( ) → Link (obj)Isnil(l : Link (obj)) → BoolFollow(l : Link (obj)) → objEqual(l1,l2 : Link (obj)) → Bool

Page 14: Datastrukturer och algoritmer - umu.sealgoritmer, 2:a uppl., Studentlitteratur, 2000, ISBN9144-01364-7 Referenslitteratur: ¾Mark Allen Weiss, "Datastructures and Algorithm Analysis

©A

nder

s Bro

berg

, Len

a K

allin

Wes

tin, 2

007

82

DoA VT -07Dynamiska resurser

Skapar dataobjekt för tillfälliga behovKill – lösgör resurserCreate – reserverar resurserVålnader

döda celler som ”går igen”uppkommer om man dödar celler som det fortfarande finns länkar till. använd Kill med försiktighet!

Sophämtningadministrativ procedur identifierar och återvinner objekt som inte utnyttjas (JAVA)