• No results found

Datastrukturer och algoritmer

N/A
N/A
Protected

Academic year: 2022

Share "Datastrukturer och algoritmer"

Copied!
14
0
0

Loading.... (view fulltext now)

Full text

(1)

© 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

oSpecifikation, Konstruktion oAlgoritmmönster

¾Riktade listor, länkade celler oSpecifikation, Konstruktion oDynamiska 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

(2)

©Anders Broberg, Lena Kallin Westin, 2007

7

DoA VT -07

Förkunskaper

‹

Kunna implementera en godtycklig algoritmbeskrivning i JAVA/C

©Anders Broberg, Lena Kallin Westin, 2007

8

DoA VT -07

Kursutvä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.

©Anders Broberg, Lena Kallin Westin, 2007

9

DoA VT -07

Intryck 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 tolka

¾OU var jobbiga, speciellt den sista

‹Handledning (4 handledare ifjol)

¾Skiftande kommentarer, många ville ha mer handledning, speciellt i slutet av kursen

‹Föreläsningar

¾Vissa klagomål på oh-bildernas utseende

‹Gruppövningar

¾Fungerade bra ©

Anders Broberg, Lena Kallin Westin, 2007

10

DoA VT -07

Så...

‹

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 omgjorda

¾Gruppövning 1 och 2 som ifjol, resten har nya uppgifter inblandade.

oMånga uppgifter från programmeringstävlingar

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

©Anders Broberg, Lena Kallin Westin, 2007

11

DoA VT -07

Här sitter vi

MIT-huset våning 4

Exp.

Studievägl.

Lena

Support Lådor för OU-inlämning

©Anders Broberg, Lena Kallin Westin, 2007

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)

(3)

©Anders Broberg, Lena Kallin Westin, 2007

16

DoA VT -07

Kursmaterial

‹Kurslitteratur

¾Janlert 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

nders Broberg, Lena Kallin Westin, 2007

17

DoA VT -07

Kursmaterial

‹

Ev. ytterligare material som delas ut under kursen

‹

Hemsidan:

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

©Anders Broberg, Lena Kallin Westin, 2007

18

DoA VT -07

Kursens 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 = 2p

oTvå utförs parvis och två ska redovisas enskilt

¾Skriftlig tentamen, 6 timmar = 3p

oOBS! Tentamen 1 går 16-22 den 31/5 ©

Anders Broberg, Lena Kallin Westin, 2007

19

DoA VT -07

Obligatoriska uppgifter

‹

Ordinarie sista redovisningsdag står på varje uppgifts webbsida.

¾Uppgiften bedöms med G, K, O eller U

¾Komplettering inom 5 dagar från första tillfälle för uthämtning av uppgiften

‹

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

¾Måste göra om alla uppgifter

¾Kan vara nya uppgifter/nya handledare

©Anders Broberg, Lena Kallin Westin, 2007

20

DoA VT -07

Obligatoriska uppgifter

‹

En uppgift som är 5 minuter sen är för sen!

‹

Ansökan om uppskov pga exvis sjukdom ska ske minst en dag före sista inlämningsdag.

¾Kursansvarig bedömer uppskoven.

¾Notera att det ingår i examinationen att ni ska lära er att hinna blir klar med uppgifterna i tid.

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

‹

Resultat anslås på kursens hemsida.

©Anders Broberg, Lena Kallin Westin, 2007

21

DoA VT -07

OU1

‹

Implementera tabeller

¾Individuell, Inlämnas 3/4 klockan 12.00

‹

Syftet: Du ska

¾bö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.

(4)

©Anders Broberg, Lena Kallin Westin, 2007

22

DoA VT -07

OU2

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

©Anders Broberg, Lena Kallin Westin, 2007

23

DoA VT -07

OU3

‹

Analysera algoritmer

¾Experimentellt (individuell)

¾Asymptotiskt (gruppövning men individuell redovisning)

¾Inlämnas 20/4 klockan 12.00

‹

Syfte: Du ska

¾få prova på att testa och utvärdera implementationer av okända algoritmer.

¾öva er på att analytiskt utvärdera algoritmer.

©Anders Broberg, Lena Kallin Westin, 2007

24

DoA VT -07

OU4

‹Implementera en router

¾Parvis, samma par som OU2

¾Dokumentation inlämnas 16/5 klockan 12.00

¾Implementationen inlämnas 25/5 klockan 12.00

‹Syfte: Ni ska

¾få 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. ©

Anders Broberg, Lena Kallin Westin, 2007

25

DoA VT -07

Registrering till tentamen

‹

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

¾Man går till sidan

https://www.cs.umu.se/information/tenta/och fyller i sin användare och lösenord.

¾Sen letar man reda på rätt kurs (kurskod TDBA36) och registrerar sig.

¾Man måste anmäla sig senast 10 dagar innan tentan ges, på denna kurs absolut senast onsdag 16 maj.

©Anders Broberg, Lena Kallin Westin, 2007

26

DoA VT -07

Gruppövningar

‹

Öningar från boken tillsammans med en eller flera programmeringstävlingsuppgifter

‹

Vissa utvalda räknar vi på gruppövningarna

‹

Kursen indelad i tre grupper

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

©Anders Broberg, Lena Kallin Westin, 2007

27

DoA VT -07

Tentan

‹

Tidigare år:

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

oEn begreppsdel

Förklara kortfattat ett antal begrepp oEn 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?

¾???

(5)

©Anders Broberg, Lena Kallin Westin, 2007

28

DoA VT -07

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

©Anders Broberg, Lena Kallin Westin, 2007

29

DoA VT -07

Kursens mål FSR:

‹Efter avslutad kurs ska studenten kunna:

¾känna till grundläggande begrepp relaterade till datastrukturer och algoritmer

¾känna till grundläggande abstrakta datatyper såsom lista, stack, kö, träd, mängd, graf och tabell

¾välja datatyper för ett givet problem

¾välja implementation av datatyper

¾känna till grundläggande algoritmer, deras komplexitet och karakteristiska egenskaper för typiska problem

¾analysera algoritmer praktiskt och teoretiskt med avseende på prestanda

¾använda sig av grundläggande problemlösningsstrategier, som till exempel divide and conquer, brute force, greedy, dynamisk programmering, på nya problem

¾tillämpa den objektorienteringsparadigmen på ett större programmeringsprojekt

¾strukturerat dokumentera algoritmer och datatyper

©Anders Broberg, Lena Kallin Westin, 2007

30

DoA VT -07

Websajten

‹http://www.cs.umu.se/kurser/TDBA36/VT07/

¾Schema

¾Uppdateringar

¾Resultatredovisning

¾Gruppövningar

¾Föreläsningar

oIntroduktion, OH-bilder, läsanvisningar

¾Gamla tentor

¾Obligatoriska uppgifter

¾Mailarkiv för kursen

¾Anmälan till tenta

©Anders Broberg, Lena Kallin Westin, 2007

31

DoA VT -07

Innehållsöversikt

‹

Algoritmer

¾Tids- och rumsfrågor

¾Designprinciper

‹

Abstrakta datatyper

‹

Sökning

‹

Sortering

©Anders Broberg, Lena Kallin Westin, 2007

32

DoA VT -07

Innehållsöversikt – Algoritmer

‹

Tids och rumsfrågor

¾Exekvering, implementering, underhåll

¾Tid vs rumskomplexitet

¾Analys av exekveringstider oOlika sätt, vad de står för och +/-

Experimentell Asymptotisk oT(n) för en alg => O(n)

Primitiva operationer Okulärbesiktning

oAtt beskriva algoritmer ©

Anders Broberg, Lena Kallin Westin, 2007

33

DoA VT -07

Innehållsöversikt – Algoritmer

‹

Designprinciper

¾Idéer till 4 olika algoritmtyper oBrute force, D&C, Greedy och dynamisk

programmering oExempel på varje o+/-

oTypiska användningar

(6)

©Anders Broberg, Lena Kallin Westin, 2007

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, mm

‹Beskrivningssätt

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

‹Grundbegrepp

¾Vad är en organisation, sorterad ADT, mm

¾Primär vs. sekundär struktur

¾Absolut vs. relativ komplexitet

‹Sätt att implementera

¾+/-, när var hur

¾Komplexitet för de viktigaste operationerna

‹Vart hittar vi ADT typiskt

¾Hur olika ADT hänger ihop med varandra

¾Algoritmer på ADT ©Anders Broberg, Lena Kallin Westin, 2007

35

DoA VT -07

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

‹

Vad är traversering

‹

Olika metoder för sökning i sekvenser

¾Linjär & Binär

¾+/-

¾Ställer de några krav på implementationen av ADTn?

©Anders Broberg, Lena Kallin Westin, 2007

36

DoA VT -07

Innehållsöversikt – Sortering

‹

Varför sorterar vi?

¾Sorterad ADT vs sortering av data

¾Sökningen blir snabbare…ibland

‹

Hur kan vi sortera (olika former)

¾+/-

¾När passar dom?

¾Stabil sortering

‹

5-6 olika algoritmer, analys

©Anders Broberg, Lena Kallin Westin, 2007

37

DoA VT -07

Att bygga program ≈ bygga hus/broar

‹Husbygge

¾Specifikation/Beskrivning

¾Material

¾Verktyg

¾Utvärdering/uppföljning

‹Programmering

¾Problembeskrivning

¾Systemdesign

¾Modelleringsverktyg oDatatyper – representera datat i

programmet

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

modellera flödet

¾Utvärdering/uppföljning oKomplexitetsanalys oValideringskriterier

©Anders Broberg, Lena Kallin Westin, 2007

38

DoA VT -07

Metaforer för programbyggnad

‹Instruktionsmetaforen

¾Programmeraren är en arbetsledare

¾Ger instruktioner till datorn

¾Datorn följer dessa i tur och ordning till punkt och pricka.

‹Problemlösningsmetaforen

¾Vad ska göras och hur ska det göras?

¾Programmeraren löser problemet (skriver en algoritm) som sedan implementeras.

‹Adaptionsmetaforen

¾Programmet ä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å

©Anders Broberg, Lena Kallin Westin, 2007

39

DoA VT -07

Datavärldsbilder

‹Manipulativa ansatsen

¾Hantverksmetafor, 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 ansatsen

¾Matematisk funktionsmetafor, man ändrar aldrig ett objekt. Resultatobjekten är avbildningar av startobjekten.

¾Funktionella/relationella språk som ML, Lisp, Prolog

‹Objektorienterade ansatsen

¾Objekten har själv egenskaper och beteenden och interagerar med andra objekt. Händelsestyrd programmering.

¾Objektorienterade språk som Java, C++

(7)

©Anders Broberg, Lena Kallin Westin, 2007

40

DoA VT -07

Kursens (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år du lösa uppgiften i C även om vi rekommenderar att den görs i Java.

‹Oftast pseudokod på föreläsningarna ©And

ers Broberg, Lena Kallin Westin, 2007

41

DoA VT -07

Gränssnitt

‹

Vad är ett gränssnitt?

¾Kontaktyta

¾Gränsen mellan två eller flera delar

¾Överenskommelse - oberoende av vem, vart, hur ska det ”passa”

oMusköten 1700-talet oLego

¾Uppmuntrar till flexibilitet oSkruvmejslar med olika spetsar

©Anders Broberg, Lena Kallin Westin, 2007

42

DoA VT -07

Gränssnitt

‹

Separerar

¾Funktion och implementation

¾Användning och skapande

¾Specifikation och konstruktion

©Anders Broberg, Lena Kallin Westin, 2007

43

DoA VT -07

Gränssnitt i ”datavetenskapen”

‹

Mellan centralenheter och periferienheter

‹

Mellan människan och maskinen

‹

Mellan mjukvarukomponenter

¾Funktioner/metoder

¾Datatyper

‹

Datakommunikation

‹

Distribuerade system

©Anders Broberg, Lena Kallin Westin, 2007

44

DoA VT -07

Begrepp

‹

Data – objekten som bär information genom att representera något

‹

Datatyp = operationer + objekt

¾Vilka objekt är det?

oVad vill vi modellera/representera/abstrahera?

¾Vad kan man göra med dem?

oVilka operationer/metoder?

¾Objekten finns i en värdemängd/objektmängd

¾Struktur – det som finns kvar när man

bortser från elementvärden ©A

nders Broberg, Lena Kallin Westin, 2007

45

DoA VT -07

En datatyp kan vara

‹

Enkel (heltal)

‹

Sammansatt (Lista av heltal)

¾Homogen vs. Heterogen

‹

Fysisk

¾Implementerad i språket/hårdvaran

¾int, string

‹

Abstrakt

¾När man inte är intresserad av om/hur den är implementerad i språk/hårdvara

¾En fysisk datatyp är abstrakt

(8)

©Anders Broberg, Lena Kallin Westin, 2007

46

DoA VT -07

En datatyp kan vara

‹

Konstruerad

¾när man beskrivit hur man skulle representera objekten och operationer

‹

Implementerad

¾komplett konstruerad från grunden och redo att användas i ett program

¾en fysisk datatyp är implementerad

‹

Konkret

¾Fysiska, implementerade och konstruerade

datatyper ©A

nders Broberg, Lena Kallin Westin, 2007

47

DoA VT -07

Beskrivning av en datatyp i boken

‹

Modell - vardaglig, ”det man modellerar”

¾Kö

‹

Organisation

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

‹

Informell beskrivning

¾Gränsytan (nödvändig och minimal, kraftfull)

¾Informell beskrivning av operationernas funktion

¾Signaturdiagram

¾Ofta den mest omfattande beskrivningen

©Anders Broberg, Lena Kallin Westin, 2007

48

DoA VT -07

Beskrivning av en datatyp – forts.

‹

Formell beskrivning

¾rent matematisk-logisk

‹

Konstruktioner och implementationer

¾Komplexitetsanalys

¾Exemplen i boken i huvudsak Java eller ML

‹

Tillämpningar och algoritmer

©Anders Broberg, Lena Kallin Westin, 2007

49

DoA VT -07

Lista

‹

Modell

¾Pärm

oBläddra, inspektera, lägga till, ta bort

‹

Organisation

¾Diskret linjärt ordnad

oÄndligt antal linjärt ordnade element oFörsta / sista element

oFöre / efter relation av element (inte värden) oAlla element (utom det sista) har en efterföljare oAlla element (utom det första) har en föregångare

©Anders Broberg, Lena Kallin Westin, 2007

50

DoA VT -07

Lista - Organisation

‹

Dynamisk datatyp

¾Struktur och storlek förändras under datatypens livslängd

‹

Generisk datatyp (polytyp)

¾Lista av typ

oTyp kan vara av vilken typ som helst

‹

Homogen datatyp

¾Alla element har samma typ

©Anders Broberg, Lena Kallin Westin, 2007

51

DoA VT -07

Lista – Organisation: Begrepp

‹

Element

¾Beståndsdel i en sammansatt datatyp

¾Består av värde och position

opositionen är läget i strukturen hos den sammansatta datatypen

‹

Struktur

¾Bortser från elementvärden

¾Ändras när element läggs till eller tas bort

¾Listan (1, 2) och ((1,2,3) , (4,5,6)) har samma struktur

(9)

©Anders Broberg, Lena Kallin Westin, 2007

52

DoA VT -07

Lista – Organisation: Begrepp

‹

Position

¾Plats i strukturen

¾Positionsbeskrivningar förändras när element sätts in eller tas bort

¾Positionen är elementets förhållande till objektet i övrigt

¾Hur man anger positioner avgörs vid konstruktionen av datatypen.

¾Strukturförändrande operationer behöver

returnera nytt positionsvärde ©And

ers Broberg, Lena Kallin Westin, 2007

53

DoA VT -07

Lista – Specifikation: Gränsyta

abstract datatype List(val) auxiliary pos

Empty() → List(val)

Insert(v:val,p:pos,l:List(val)) →(List(val),pos) Isempty (l:List(val)) → Bool

Inspect (p:pos,l:List(val)) → val First (l:List(val)) → pos

End (l:List(val)) → pos Next(p:pos,l:List(val)) → pos Previous(p:pos,l:List(val)) → pos

Remove((p:pos,l:List(val)) →(List(val),pos)

©Anders Broberg, Lena Kallin Westin, 2007

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 v

‹Isempty(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 pos

‹First,End – returnerar listans första resp. sista position. OBS!

End pekar på positionen efter sista elementet

‹Next(p,l) Previous(p,l) – returnerar närmast efterföljande (föregående). Ej definierad för listans sista (första) position

‹Remove(p,l) – tar bort element i positionen p, returnerar nya

positionen för det element som följde omedelbart efter ©And

ers Broberg, Lena Kallin Westin, 2007

55

DoA VT -07

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

©Anders Broberg, Lena Kallin Westin, 2007

56

DoA VT -07

Varfö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) Then p:= first(list)

While Not (Next(p,list) = End(list) Or v = inspect(p, list)) Do p:= next(p, list)

End End

©Anders Broberg, Lena Kallin Westin, 2007

57

DoA VT -07

Implementation 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);

}

(10)

©Anders Broberg, Lena Kallin Westin, 2007

58

DoA VT -07

Implementation 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);

©Anders Broberg, Lena Kallin Westin, 2007

60

DoA VT -07

Algoritmmönster

‹

Traversering

¾Besöker systematiskt alla element

‹

Sökning

¾Söker det första elementet som uppfyller ett bestämt villkor

‹

Filtrering

¾Filtrerar ut alla element som uppfyller ett bestämt villkor

©Anders Broberg, Lena Kallin Westin, 2007

61

DoA VT -07

Algoritmmönster

‹

Reduktion

¾Beräknar en funktion av objektets elementvärden oEx. Summera alla tal i en lista

‹

Mappning

¾Transformera varje elementvärde i en datastruktur

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

©Anders Broberg, Lena Kallin Westin, 2007

63

DoA VT -07

Lista – 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örjan

‹

Huvudlös eller med huvud

‹

Cirkulär eller linjär

(11)

©Anders Broberg, Lena Kallin Westin, 2007

64

DoA VT -07

Länkad Lista

‹

Länkar mellan elementen

‹

Elementen är en cell som består av länkar och värde

‹

Dubbel eller enkellänkad

©Anders Broberg, Lena Kallin Westin, 2007

65

DoA VT -07

Dubbellänkad lista

‹

Före insättning

Dubbellänkad lista

‹

Skapa ny nod för insättning

newNode nodeBefore nodeAfter

newNodeskapas

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

©Anders Broberg, Lena Kallin Westin, 2007

67

DoA VT -07

Dubbellänkad lista

‹

Efter insättning och före borttagning

©Anders Broberg, Lena Kallin Westin, 2007

68

DoA VT -07

Dubbellä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

©Anders Broberg, Lena Kallin Westin, 2007

69

DoA VT -07

Dubbellänkad lista

‹

Efter borttagning

(12)

©Anders Broberg, Lena Kallin Westin, 2007

70

DoA VT -07

Riktad Lista

‹Modell

¾Slalombana

¾Man kan ta sig till starten

¾Man passerar portarna i en riktning

¾Man kan ”åka” om en del av banan

‹Organisation

¾Specialisering av Lista

¾Har 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 ©A

nders Broberg, Lena Kallin Westin, 2007

71

DoA VT -07

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

©Anders Broberg, Lena Kallin Westin, 2007

72

DoA VT -07

Riktad Lista – Specialisering

‹

Previous och end behövs ej

‹

Isend lagts till

‹

Java: Kan ej ta bort en del av gränsytan

¾Exceptions för previous och end

¾Riktad Lista som helt ny klass -Ingen återvinning av kod...

©Anders Broberg, Lena Kallin Westin, 2007

73

DoA VT -07

Grä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)) → Bool

Inspect (p:pos,l:DList(val)) → val First (l:DList(val)) → pos

Isend (p:pos,l:DList(val)) → Bool Next(p:pos,l:DList(val)) → pos

Remove((p:pos,l:DList(val)) → (DList(val),pos)

©Anders Broberg, Lena Kallin Westin, 2007

74

DoA VT -07

Riktad Lista – konstruktion

‹

Konstruerad som

¾Fält

¾Dubbellänkad Lista

¾Enkellänkad Lista

‹

Enkellänkad Lista

¾Mer ekonomisk

©Anders Broberg, Lena Kallin Westin, 2007

75

DoA VT -07

Riktad Lista som Enkellänkad Lista

‹

Problem vid insättning

‹

Lösning:

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

oFysisk och logisk referens

¾Listhuvud oTomma objekt oGränspositioner

(13)

©Anders Broberg, Lena Kallin Westin, 2007

76

DoA VT -07

Enkellänkad Lista

‹

Konstruktion utan huvud

¾Stopplänkvärde (nil, null)

¾Insättning före elementet X oSkapa en ny cell

oSätt in den efter X

oKopiera X:s värde till den nya cellen oSätt X:s värde till v

©Anders Broberg, Lena Kallin Westin, 2007

77

DoA VT -07

n-länkad Cell

‹

Tippel som består av

¾ett värde

¾n st länkar

‹

Byggmaterial för andra datatyper

‹

n-länkad struktur

¾Objekt konstruerade med n-länkade celler oListor, träd

©Anders Broberg, Lena Kallin Westin, 2007

78

DoA VT -07

”1-Cell”

private class Cell {

private Object data; //data portion private Cell next; //link to next node

private Cell(Object dataPortion) {

data = dataPortion;

next = null;

} //end constructor

private Cell(Object dataPortion, Cell NextCell) {

data = dataPortion;

next = NextCell;

} //end constructor

} //end Cell ©Anders Broberg, Lena Kallin Westin, 2007

79

DoA VT -07

Cell används för positioner

private class Cell implements Pos {

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

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

else

return false;

} }

©Anders Broberg, Lena Kallin Westin, 2007

80

DoA VT -07

Länk

‹

Referens, pekare

¾En fysisk datatyp i många språk

‹

Objekt som refererar till annat objekt

‹

Konstrueras oftast som index i fält (kursor)

‹

Billigare kopiera länkar till objekt än objekten själva

‹

Java: Inget objekt utan länk

©Anders Broberg, Lena Kallin Westin, 2007

81

DoA VT -07

Gränsyta till Länk

Abstract datatype Link (obj) Make(x : obj) → Link (obj) Nil( ) → Link (obj)

Isnil(l : Link (obj)) → Bool

Follow(l : Link (obj)) → obj

Equal(l1,l2 : Link (obj)) → Bool

(14)

©Anders Broberg, Lena Kallin Westin, 2007

82

DoA VT -07

Dynamiska resurser

‹Skapar dataobjekt för tillfälliga behov

‹Kill – lösgör resurser

‹Create – reserverar resurser

‹Vå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ämtning

¾administrativ procedur

¾identifierar och återvinner objekt som inte utnyttjas (JAVA)

References

Related documents

använda ”utifrån”, för de som skapar en instans av vår klass. • Allt under private går

Vänster och höger delträd är sökträd och alla element i vänstra delträdet <.. elementet i

• För att programmet ska kunna reagera på händelser kopplar man på olika typer av lyssnare till komponenter i fönstret. • Lyssnarna kan fånga upp händelser som

Problem: Erbjuda samma gränssnitt till individuella objekt och en samling av objekt. Kontext: I ett system används enstaka objekt och samling av objekt i liknande

– Värstafallskomplexiteten för sökning är O(log(n)) för ett träd med n noder – Hur ser man till att trädet blir komplett

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

Verifiera en lösning genom att kolla att det är ett träd, att alla noder är med, samt att varje gradtal är högst k. Detta görs enkelt på

¾ It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information