© 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
©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)
©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.
©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?
¾???
©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
©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++
©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
©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
©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);
}
©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
©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
©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
©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
©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)