Datastrukturer och algoritmer

Storlek: px
Starta visningen från sidan:

Download "Datastrukturer och algoritmer"

Transkript

1 Innehåll Föreläsning 1-2 Kurspresentation och information Innehållsöversikt, upplägg, kursmaterial, kursutvärdering, förväntade studie resultat etc... Föreläsning Programbyggnadskonst o Olika ansatser o 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 Kursens innehåll Kursens innehåll Abstrakta Datatyper (ADT) Abstrakta datatyper Begrepp, definition, konstruktion Algoritmer Tids- och rumsfrågor Designprinciper Sökning Sortering Introduktion till projektarbete enligt LIPSmodellen Både teoretiskt och praktiskt Många olika ADT kommer att diskuteras! Stack, Kö, Listor, Träd, Graf, Prioritetskö, Heap, Tabell, Sträng, Mängd, Sökträd, Tries, mm Grundbegrepp Vad är en organisation, modell, gränsyta, sorterad ADT, mm Primär vs. sekundär struktur Absolut vs. relativ komplexitet Varje ADT beskrivs på ungefär samma sätt Organisation, Modell, Gränsytan (formell, informell) Sätt att implementera o +/-, när var hur, komplexitet för de viktigaste operationerna Vart hittar vi ADT typiskt, vilka typproblem? o Hur hänger ADT ihop med andra ADT? o Algoritmer på ADT Kursens innehåll Algoritmer Kursens innehåll Algoritmer Tids och rumsfrågor Exekvering, implementering, underhåll Tids- och rumskomplexitet o Fokus på tidskomplexitet T(n) för en alg => O(n) o Experimentell och asymptotisk analys Att beskriva algoritmer Designprinciper Brute force, Divide&conquer, Greedy och dynamisk programmering Sökning (traversering) Vad är traversering Linjär- och Binärsökning o +/- o Krav på implementationen av ADTn Sortering Varför sorterar vi? Sorterad ADT vs sortering av data 5-6 olika algoritmer, inklusive analys o +/- o Stabil sortering

2 Kursens innehåll Projektarbete enligt LIPS-modellen Kursens upplägg LIPS utvecklad i Linköping En introduktion och sedan får ni arbeta med en delmängd av modellen Bilden tagen från websidan ovan Föreläsningar (16 st) Teoripresentation och lite praktiska inslag Gruppövningar (4 st) 3 grupper, SI-stil OBS! Obligatorisk närvaro på gruppövning 4! Individuell handledning i datorsal eller på handledarens rum Examination Tentamen (moment 1) 6 obligatoriska uppgifter (moment 2) Tentamen Obligatoriska uppgifter Ordinarie tentamen 5/ i Noliahallen på Nolia! Anmälan krävs! Senast 10 dagar innan tentan ges Enligt rektors beslut kodas tentamen Kan tyvärr leda till längre tid innan resultat anslås pga administrativt trassel! o Max 15 arbetsdagar (för första tentan blir det 30/6) Ett urval av gamla tentamina från tidigare år finns på kurssidan. 2 OU utförs enskilt och 4 OU utförs parvis Ordinarie sista redovisningsdag står på varje uppgifts webbsida. OU bedöms med G, K, O eller U Komplettering inom 5 arbetsdagar från första tillfälle för uthämtning Finns ett uppsamlingstillfälle (augusti). Måste göra om alla uppgifter Kan vara nya uppgifter/nya handledare Obligatoriska uppgifter OU2 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. Implementera tabeller Individuell, inlämnas 15/4 klockan Syfte: 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 ADT:n Tabell, öva dig i att hantera dynamiska strukturer, öva dig i skriftlig presentation.

3 OU4 Projektet Analysera algoritmer Experimentellt (individuell) Asymptotiskt (gruppövning med individuell redovisning) Inlämnas 8/5 klockan Syfte: Du ska få prova på att testa och utvärdera implementationer av okända algoritmer. öva er på att analytiskt utvärdera algoritmer. Implementera mjukvaran i en Router Utförs parvis och delredovisas vid 4 tillfällen. Syftet: Ni ska få praktiska kunskaper om användandet av datatyper och algoritmer. 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 givna krav. få en introduktion till en projektmodell och träna att arbeta utifrån den öva er att redovisa ett större arbete muntligt och skriftligt. Projektets delredovisningar Kursens (och bokens) strategi: OU1 inlämnas 3/4 klockan Skapande av en projektgrupp OU3 inlämnas 21/4 klockan Skapande av en projektplan OU5 inlämnas 15/5 klockan Muntlig redovisning av pågående arbete på gruppövning 4 och reviderad projektplan OU6 inlämnas 5/6 klockan Slutredovisning av färdig produkt och dokumentation av projektet 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, 5DV081 eller 5DV090 ska du implementera koden i Java. Läser du ett annat studieprogram, eller läst TDBA66, TDBA39 eller 5DV035 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 Kursmaterial Kursmaterial Kurslitteratur Janlert L-E., Wiberg T., Datatyper och algoritmer, 2:a uppl., Studentlitteratur, 2000, ISBN Föreläsningsunderlag (finns på websidan) Referenslitteratur: Mark Allen Weiss, "Datastructures and Algorithm Analysis in Java", 2 ed, Pearson, Addison Wesley ISBN Mark Allen Weiss, "Datastructures and Algorithm Analysis in C Addison Wesley Longman ISBN Allt material som ev. delas ut under kursen Mycket information skickas via mail. Läs dina cs-mail minst en gång om dagen! Gör forward: Mail som skickas till hela gruppen lagras i ett arkiv

4 Mina målsättningar Vad krävs för att nå dit? 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 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 Hur kan man lägga upp sina studier? Hur kan jobbet fördelas? En 7,5 hp kurs motsvarar 200h total studietid för normalstudenten. 5 veckor ger ca 40h/vecka. Delta på undervisningen Läsa boken Göra obligatoriska uppgifter Repetera/ tentaplugga Ofta samma sak som att arbeta med OU... 30h läsa boken+lips-material 5 min*max 370 sidor 40h övrigt tentaplugg 40h schemalagd undervisning (F/G) 90h kvar till de obligatoriska uppgifterna 15h till OU2 25h till OU4 50h till projektet (* 2 personer = 100h) PLANERING AV ARBETET VIKTIGT! Översikt över kursen Kursutvärdering från ifjol Vecka F/G Plugg OU OU1 0.5h Projektet 50h OU2 15h OU3 8h OU4 25h OU5 8h OU6 33,5h Bara 37 av 114 (32%) som svarade skriftligt Muntlig utvärdering genomfördes på sista föreläsningen (ca 40) 90 studenter aktiva hela kursen igenom Sammanfattning finns på sidan Projektet 50h * 2 personer = 100h!

5 Till den som ska planera kursen nästa gång: Förändringar på kursen sen förra året Komplexitetsuppgiften (OU3) Lägg gruppövningen (gö) längre ifrån inlämningsdagen. Var tydlig med att uppgiften kräver enskilt arbete utöver gö och att man bör ha försökt lösa uppgiften före gö för att få optimal hjälp från gö. Routerlabben (OU2 och OU4) Gör om OU2 så att den till exempel går ut på att skriva en problembeskrivning för OU4. o Tanken att "tvinga" studenterna att läsa OU4 och bearbeta specifikationen lyckades inte helt. Skriv om specifikationen av OU4 från grunden eftersom den fortfarande är svår att övergripa. Fundera på om Routerlabben ska bytas ut mot något annat, exempelvis träd. Handledning och rättning av obligatoriska uppgifter Gemensamma rättningsmallar för att minimera "orättvisor". Uppmuntra grupphandledning och sköt inte handledningen via mail. o Samma frågor ställs flera gånger och mailandet tar för mycket tid från personlig handledning. Komplexitetsuppgiften (OU3 i år OU4) En vecka mellan gruppövning och inlämnande Info i specifikationen om förberedelse och tidsåtgång Routerlabben (OU2 och OU4) Drivs i projektform med 4 avstämningar Uppgiften och specifikation ordentligt genomarbetad Handledning och rättning av obligatoriska uppgifter Gemensamma mallar/diskussioner Handledningsresursen räcker inte till mailsvar kring kodfrågor Mängden föreläsningar om träd minskar och en föreläsning om projekt och projektmodellen LIPS införs. Registrering Förkunskaperna innebär i praktiken Sker på studentexpeditionen eller hos Pedher Johansson. Alla som antagits med villkor (alla studenter på C/DV/ID) måste visa att man uppfyller förkunskapskraven. Skriv ut ett Ladokutdrag! o Gå till o Logga in (med ert UMDAC-student konto + lösenord) o Välj fliken Expedition Markera gärna förkunskaperna (5DV081/5DV090) med överstrykningspenna... Ingen examination förrän man är registrerad Regga dig innan första uppgiften ska vara inlämnad (på torsdag)! Studenten ska kunna implementera en godtycklig algoritmbeskrivning i JAVA/C. ha god erfarenhet av problemlösning. Kursens mål FSR (1) Kursens mål FSR (2) Efter avslutad kurs ska studenten kunna: redogöra för grundläggande begrepp relaterade till datastrukturer och algoritmer redogöra för organisation och specifikation för grundläggande abstrakta datatyper såsom lista, stack, kö, träd, mängd, graf och tabell redogöra för grundläggande algoritmer, deras komplexitet och karakteristiska egenskaper välja lämpliga datatyper och algoritmer för ett givet problem välja och utföra lämpliga implementationer (konstruktioner) av de valda datatyperna och algoritmerna Efter avslutad kurs ska studenten kunna: analysera enklare 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 och dynamisk programmering) på nya problem tillämpa de teoretiska kunskaperna och objektorienteringsparadigmen praktiskt på ett programmeringsprojekt, dvs. konstruera en komplett programvara inklusive dokumentation (med systembeskrivning och webbaserad API) utifrån givna riktlinjer utforma en enkel arbetsplan för ett programmeringsprojekt som utförs i grupp samt dokumentera, följa upp och skriftligt utvärdera den gjorda planeringen.

6 Inblandade personer MIT-huset, våning 4 Föreläser Lena Kallin Westin (kallin@cs.umu.se) Ola Ringdahl (ringdahl@cs.umu.se) Håller i gruppövningar: Ola Ringdahl Linus Jonsson (linusj@cs.umu.se) Oskar Lindgren (oskarl@cs.umu.se) Handleder och rättar obligatoriska uppgifter: Linus Jonsson Oskar Lindgren Johan Westerlund (johanw@cs.umu.se) Studievägl. Pedher Lablådor Student exp. Lena Oskar Johan support Studievägl. Lena P MIT-huset, våning 2 Linus Ola Programbyggnadskonst, Listor Att bygga program bygga hus/broar Husbygge Specifikation/Beskrivning Material Verktyg Utvärdering/uppföljning Programmering Problembeskrivning Systemdesign Modelleringsverktyg 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öljning o Komplexitetsanalys o Valideringskriterier Metaforer och världsbilder för programbyggnad Metaforer för programbyggnad Instruktionsmetaforen Problemlösningsmetaforen Adaptionsmetaforen Världsbilder/ansatser Manipulativa ansatsen Funktionella ansatsen Objektorienterade ansatsen Låg nivå nära datorn Hög nivå

7 Terminologi Terminologi Inte alltid enhetlig! Viktigt sätta grunden för bokens och kursens innehåll. Data bär information genom att representera något. x 12 y hej 7 a true Datatyp = objekt + operationer Objekten finns i en värdemängd/objektmängd Operationerna kan vara funktioner, relationer och predikat heltal = % udda - * + jämn > / <= Heltal: 1,2,3,4 till exempel enkel Lista av heltal: till exempel homogen... kan vara... Relation (personinfo) kan vara sammansatt namn ålder kön till exempel heterogen Står det bara datatyp så menar man abstrakt datatyp abstrakt När man pratar om en datatyp utan att bry sig om och hur den är realiserad i programspråk/hårdvara Kan anses vara abstrakt eftersom... fysisk datatyp... kan vara... implementerad En fysisk datatyp är... En datatyp som är impl i en fysik datatyp är... konkret... kan vara... konstruerad När man besrkivit hur objekten ska representeras och hur operationerna skulle kunna implementeras (algoritmer) datatyp Implementerad i språket/hårdvaran tex int, char Komplett konstruerad från grunden och redo att användas i ett program Mer terminologi: Mer terminologi: Element Beståndsdel i en sammansatt datatyp Består av värde och position Värde: 2 Position: c a d f g h i j Värde: d Position: 2:a barn till roten e 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 Position Plats i strukturen Positionsbeskrivningar förändras när element sätts in eller tas bort Hur man anger positioner avgörs vid konstruktionen av datatypen. Strukturförändrande operationer behöver returnera nytt positionsvärde

8 Genomgång av en datatyp - Beskrivningar Genomgång av en datatyp Modell - vardaglig, det man modellerar Organisation Grundläggande natur på objekten, linjärt ordnade, före och efter relation etc. Informell beskrivning Gränsytan (de operationer som hör till datatypen) Informell beskrivning av operationernas funktion Signaturdiagram Ofta den mest omfattande beskrivningen! Formell beskrivning rent matematisk-logisk (axiom och slutsatser) Konstruktioner och implementationer Olika sätt att konkretisera datatypen o Lista som en array vs Lista som en dynamisk struktur Komplexitetsanalys Exemplen i boken i huvudsak Java eller ML Tillämpningar och algoritmer Typproblem och algoritmer som löser dem Komplexitetsanalys Lista ADT:n Lista är en Modell Pärm o Bläddra, inspektera, lägga till, ta bort Organisation Diskret linjärt ordnad o Ändligt antal linjärt ordnade element o Första / sista element o Före / efter relation av element (inte värden) o Alla element (utom det sista) har en efterföljare o Alla element (utom det första) har en föregångare Dynamisk datatyp Struktur och storlek förändras under datatypens livslängd Generisk datatyp (polytyp) Lista av typ o Typ kan vara av vilken typ som helst o Lista av heltal, Lista av tecken, etc Homogen datatyp Alla element har samma typ 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) Bild från sidan 47 i Janlert L-E., Wiberg T., Datatyper och algoritmer, Studentlitteratur, 2000

9 Varför är specifikationen viktig? Implementation av gränsyta till Lista 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 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); } Implementation av gränsyta till Pos Implementation av gränsytan i C public interface Pos { public boolean eq(pos p); } /* 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); 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 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

10 Länkad Lista Dubbellänkad lista Länkar mellan elementen Elementen är en cell som består av länkar och värde Dubbel eller enkellänkad Före insättning Dubbellänkad lista Skapa ny nod för insättning nodebefore nodeafter newnode 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 Dubbellänkad lista Efter insättning och före borttagning Dubbellänkad lista Dubbellänkad lista Ta bort ett element nodebefore nodetoremove nodebefore = nodetoremove:s bakåt länk nodeafter = nodetoremove:s framåt länk nodebefore:s framåt länk = nodeafter nodeafter Efter borttagning nodeafter:s bakåt länk = nodebefore

11 Algoritmmönster 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 Reduktion Beräknar en funktion av objektets elementvärden o Ex. Summera alla tal i en lista Mappning Transformera varje elementvärde i en datastruktur o Ex. multiplicera alla talen i en lista med 4 Riktad Lista Riktad Lista Specialisering 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 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. Previous och end behövs ej och 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... Gränsyta till Riktad Lista Riktad Lista konstruktion 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) Konstruerad som Fält Dubbellänkad Lista Enkellänkad Lista Enkellänkad Lista Mer (rums)ekonomisk behöver ju ändå inte bakåtlänkarna

12 Riktad Lista som Enkellänkad Lista Enkellänkad Lista Problem vid insättning Lösning: Representera position mha en länk till föregångarelementet o Fysisk och logisk referens Listhuvud o Tomma objekt o Gränspositioner Konstruktion utan huvud Stopplänkvärde (nil, null) Insättning före elementet X o Skapa en ny cell o Sätt in den efter X o Kopiera X:s värde till den nya cellen o Sätt X:s värde till v n-länkad Cell 1-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 o Listor, träd Cell är en implementationsdetalj i ADT:en Lista som kan gömmas för listans klient Cell kan alltså definieras i klassen som implementerar listan (intern klass), deklareras privat behöver inte ha set & get metoder 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 Cell används för positioner Länk 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; } 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

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

Datastrukturer och algoritmer

Datastrukturer och algoritmer Innehåll Datastrukturer och algoritmer Föreläsning 2 Listor Specifikation, Konstruktion Algoritmmönster Riktade listor, länkade celler Specifikation, Konstruktion Dynamiska resurser 24 25 Modell Pärm Bläddra,

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Datastrukturer och algoritmer Föreläsning 1 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2007 Innehåll 2 Kurspresentation Inblandade personer, Målsättning, Förkunskaper, Kursutvärdering, Upplägg,

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Innehåll Datastrukturer och algoritmer Föreläsning 1 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2007 2 Kurspresentation Inblandade personer, Målsättning, Förkunskaper, Kursutvärdering, Upplägg,

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Föreläsning 1 Kurspresentation Inblandade personer Målsättning Förkunskaper Kursutvärdering Upplägg Översikt Föreläsning 1 Viktiga begrepp Innehåll Anders Broberg, Ulrika Hägglund, Lena Kallin Westin,

Läs mer

Innehåll. Mina målsättningar. Vad krävs för att nå dit? Obligatoriska uppgifter. Websajten. Datastrukturer och algoritmer

Innehåll. Mina målsättningar. Vad krävs för att nå dit? Obligatoriska uppgifter. Websajten. Datastrukturer och algoritmer Innehåll Datastrukturer och algoritmer Föreläsning 1! Introduktion och begrepp Kurspresentation! - Målsättning! - Kursutvärdering! - Upplägg! - Översikt! Viktiga begrepp "1 "2 Mina målsättningar Alla ska

Läs mer

Innehåll. Inblandade personer. ÿkurspresentation Inblandade personer Administration Målsättning Förkunskaper Kursutvärdering Upplägg Översikt

Innehåll. Inblandade personer. ÿkurspresentation Inblandade personer Administration Målsättning Förkunskaper Kursutvärdering Upplägg Översikt ÿþýüûúùø øö ô Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Innehåll 2 ÿkurspresentation Inblandade personer Administration Målsättning Förkunskaper Kursutvärdering Upplägg Översikt ÿföreläsning

Läs mer

Datastrukturer och algoritmer (Python) Algoritmer och listor

Datastrukturer och algoritmer (Python) Algoritmer och listor Datastrukturer och algoritmer (Python) Algoritmer och listor 1 Innehåll Algoritmer och pseudokod som ett sätt att beskriva dem. Abstrakta datatypen lista och algoritmmönster för lista. Olika sätt att konstruera

Läs mer

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen Datastrukturer och algoritmer Föreläsning 15 Inför tentamen 1 Innehåll Kursvärdering Vi behöver granskare! Repetition Genomgång av gammal tenta 2 Första föreläsningen: målsättningar Alla ska höja sig ett

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Datastrukturer och algoritmer Föreläsning 16 2 Innehåll Snabbrepetition Exempeltentamen Kursutvärdering Mina målsättningar Kursens mål: 3 Rolig och viktig kurs Bli en bättre programmerare och inse att

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Innehåll Datastrukturer och algoritmer Föreläsning 2 Fält Specifikation, Konstruktion och Specifikation, Konstruktion Dynamiska resurser Länk Länkade celler 23 24 Konstruktion av Fält Fysisk datatyp i

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Innehåll Datastrukturer och algoritmer Föreläsning 2 Fält Specifikation, Konstruktion och Specifikation, Konstruktion Dynamiska resurser Länk Länkade celler 25 26 Fält Modell Schackbräde Organisation n-dimensionellt

Läs mer

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö Datastrukturer och algoritmer Föreläsning 4 Test, Stack och Kö 1 Innehåll Test Datatyperna Stack och kö Specifikation och Gränssnitt Konstruktion Tillämpning 2 Testa VIKTIGT! Test går att göra under många

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Abstrakta datatyper Listor Stackar

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Abstrakta datatyper Listor Stackar

Läs mer

Datastrukturer. föreläsning 3. Stacks 1

Datastrukturer. föreläsning 3. Stacks 1 Datastrukturer föreläsning 3 Stacks 1 Abstrakta datatyper Stackar - stacks Köer - queues Dubbeländade köer - deques Vektorer vectors (array lists) All är listor men ger tillgång till olika operationer

Läs mer

Föreläsning 14 Innehåll

Föreläsning 14 Innehåll Föreläsning 14 Innehåll Abstrakta datatyper, datastrukturer Att jämföra objekt övriga moment i kursen Om tentamen Skriftlig tentamen både programmeringsuppgifter och teoriuppgifter Hitta fel i fingerade

Läs mer

Introduktionsmöte Innehåll

Introduktionsmöte Innehåll Introduktionsmöte Innehåll Introduktion till kursen Kursens mål och innehåll Undervisning Datavetenskap (LTH) Introduktionsmöte ST 2019 1 / 14 EDAA01 Programmeringsteknik - fördjupningskurs Ingen sommarkurs

Läs mer

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet Föreläsning 13 Innehåll Algoritm 1: Sortera Exempel på problem där materialet i kursen används Histogramproblemet Schemaläggning Abstrakta datatyper Datastrukturer Att jämföra objekt Om tentamen Skriftlig

Läs mer

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Innehåll Föreläsning 1 Snabbrepetition Exempeltentamen ursvärdering Mina målsättningar Innehållsöversikt Rolig och viktig kurs Bli en bättre programmerare och inse att man blivit det änna till kända lösningar

Läs mer

Datastrukturer och algoritmer. Innehåll. Tabell. Tabell - exempel. Gränsyta till Tabell. Tabell. Modell. Hashtabell Relation, lexikon.

Datastrukturer och algoritmer. Innehåll. Tabell. Tabell - exempel. Gränsyta till Tabell. Tabell. Modell. Hashtabell Relation, lexikon. Datastrukturer och algoritmer Föreläsning 7 Tabell, hashtabell Relation & lexikon Innehåll Tabell Tabell Hashtabell Relation, lexikon Modell Uppslagsbok Organisation Ändlig avbildning av argument på värden

Läs mer

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 2 Datastrukturer (DAT037) Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-02 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Tidskomplexitet

Läs mer

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036) Tentamen Datastrukturer (DAT036) Datum och tid för tentamen: 2013-12-16, 14:00 18:00. Ansvarig: Nils Anders Danielsson. Nås på 0700 620 602 eller anknytning 1680. Besöker tentamenssalarna ca 15:00 och

Läs mer

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor Abstrakta datatyper 1 Primitiva vektorer Vektorer kan skapas av primitiva datatyper, objektreferenser eller andra vektorer. Vektorer indexeras liksom i C från 0. För att referera en vektor används hakparenteser.

Läs mer

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö Kö (ADT) En kö fungerar som en kö. Man fyller på den längst bak och tömmer den längst fram

Läs mer

Poäng. Start v. DV1: Datavetenskapens byggstenar 7.5. Antal registrerade (män/kvinnor) 38 (38/0)

Poäng. Start v. DV1: Datavetenskapens byggstenar 7.5. Antal registrerade (män/kvinnor) 38 (38/0) TEK/NAT Kursrapport Kurs Kurskod Poäng År Start v. DV1: Datavetenskapens byggstenar 5DV160 7.5 2014 44 Institution Institutionen för datavetenskap Antal registrerade (män/kvinnor) 38 (38/0) Antal aktiva

Läs mer

Föreläsning 10. ADT:er och datastrukturer

Föreläsning 10. ADT:er och datastrukturer Föreläsning 10 ADT:er och datastrukturer ADT:er och datastrukturer Dessa två begrepp är kopplade till varandra men de står för olika saker. En ADT (abstrakt datatyp) är just abstrakt och är inte kopplad

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Prioritetskö Heap Representation som

Läs mer

Föreläsning 4 Innehåll

Föreläsning 4 Innehåll Föreläsning 4 Innehåll Abstrakta datatypen lista Datastrukturen enkellänkad lista Nästlade klasser statiskt nästlade klasser inre klasser Listklasser i Java Implementera abstrakta datatyperna stack och

Läs mer

Exempeltenta GruDat 2002/2003

Exempeltenta GruDat 2002/2003 Exempeltenta GruDat 2002/2003 Endast ett svarsalternativ på varje fråga är korrekt. Felaktigt svar eller felaktigt antal ikryssade svarsalternativ ger noll poäng på uppgiften. Obs: Den riktiga tentan kommer

Läs mer

Länkade strukturer. (del 2)

Länkade strukturer. (del 2) Länkade strukturer (del 2) Översikt Abstraktion Dataabstraktion Inkapsling Gränssnitt (Interface) Abstrakta datatyper (ADT) Programmering tillämpningar och datastrukturer 2 Abstraktion Procedurell abstraktion

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-25 Idag Starkt sammanhängande komponenter Duggaresultat Sökträd Starkt sammanhängande komponenter Uppspännande skog Graf, och en möjlig

Läs mer

Tommy Färnqvist, IDA, Linköpings universitet

Tommy Färnqvist, IDA, Linköpings universitet Föreläsning 9 Pekare, länkade noder, länkade listor TDDD86: DALP Utskriftsversion av föreläsning i Datastrukturer, algoritmer och programmeringsparadigm 25 september 2015 Tommy Färnqvist, IDA, Linköpings

Läs mer

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036) Tentamen Datastrukturer (DAT036) Det här är inte originaltesen. Uppgift 6 var felaktigt formulerad, och har rättats till. Datum och tid för tentamen: 2011-12-16, 8:30 12:30. Ansvarig: Nils Anders Danielsson.

Läs mer

Föreläsning 1 Datastrukturer (DAT037)

Föreläsning 1 Datastrukturer (DAT037) Föreläsning 1 Datastrukturer (DAT037) Fredrik Lindblad 1 30 oktober 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037

Läs mer

Tentamen Datastrukturer (DAT037)

Tentamen Datastrukturer (DAT037) Tentamen Datastrukturer (DAT07) Datum och tid för tentamen: 2016-01-09, 14:00 18:00. Ansvarig: Nils Anders Danielsson. Nås på 0700 620 602 eller anknytning 1680. Besöker tentamenssalarna ca 15:00 och ca

Läs mer

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Tentamen Datastrukturer (DAT036/DAT037/DIT960) Tentamen Datastrukturer (DAT036/DAT037/DIT960) Datum och tid för tentamen: 2016-04-07, 14:00 18:00. Författare: Nils Anders Danielsson. (Tack till Per Hallgren och Nick Smallbone för feedback.) Ansvarig:

Läs mer

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036) Tentamen Datastrukturer, DAT037 (DAT036) Datum, tid och plats för tentamen: 2017-08-17, 8:30 12:30, M. Ansvarig: Fredrik Lindblad. Nås på tel nr. 031-772 2038. Besöker tentamenssalarna ca 9:30 och ca 11:00.

Läs mer

Länkade strukturer, parametriserade typer och undantag

Länkade strukturer, parametriserade typer och undantag Länkade strukturer, parametriserade typer och undantag Programmering för språkteknologer 2 Sara Stymne 2013-09-18 Idag Parametriserade typer Listor och länkade strukturer Komplexitet i länkade strukturer

Läs mer

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036) Tentamen Datastrukturer (DAT036) Datum och tid för tentamen: 2014-04-25, 14:00 18:00. Författare: Nils Anders Danielsson. Ansvarig: Nils Anders Danielsson. Nås på 0700 620 602 eller anknytning 1680. Besöker

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-10-30 Repetition Analys av tidskomplexitet. Kostnadsmodeller. Asymptotisk komplexitet/notation. Dynamiska arrayer. Amorterad tidskomplexitet

Läs mer

Föreläsning Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037) Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-11-20 Idag Grafer: Terminologi. Datastrukturer. Topologisk sortering. Kortaste vägen. Bredden först-sökning. Dijkstras algoritm. (Vi får

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Träd Traversering Insättning, borttagning

Läs mer

Dugga Datastrukturer (DAT036)

Dugga Datastrukturer (DAT036) Dugga Datastrukturer (DAT036) Duggans datum: 2012-11-21. Författare: Nils Anders Danielsson. För att en uppgift ska räknas som löst så måste en i princip helt korrekt lösning lämnas in. Enstaka mindre

Läs mer

Föreläsning 6: Introduktion av listor

Föreläsning 6: Introduktion av listor Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.

Läs mer

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

Lösningsförslag för tentamen i Datastrukturer (DAT037) från Lösningsförslag för tentamen i Datastrukturer (DAT7) från --9 Nils Anders Danielsson. Träd- och köoperationerna har alla tidskomplexiteten O(log s), där s är antalet element i trädet/kön (notera att jämförelser

Läs mer

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036) Tentamen Datastrukturer (DAT036) Datum och tid för tentamen: 2012-08-24, 8:30 12:30. Ansvarig: Nils Anders Danielsson. Nås på 0700 620 602 eller anknytning 1680. Besöker tentamenssalarna ca 9:30 och ca

Läs mer

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina

Läs mer

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition Seminarium 4 Köer och Stackar Innehåll ADT:erna Kö och Stack Definitioner Operationer Exempel på användning Givna klasser i Java Interfacet Queue Klassen Stack Klassen LinkedList Klassen PriorityQueue

Läs mer

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.' Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.' Skrivtid: 08.30 13.30 Hjälpmedel: Inga Lärare: Betygsgränser DVA104' Akademin)för)innovation,)design)och)teknik) Onsdag)2014:01:15) Caroline

Läs mer

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 4 Datastrukturer (DAT037) Föreläsning 4 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-10 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat037 Förra

Läs mer

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036) Tentamen Datastrukturer, DAT037 (DAT036) Datum och tid för tentamen: 2017-01-11, 14:00 18:00. Ansvarig: Fredrik Lindblad. Nås på tel nr. 031-772 2038. Besöker tentamenssalarna ca 15:00 och ca 17:00. Godkända

Läs mer

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6 Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6? DAGENS AGENDA Komplexitet Ordobegreppet Komplexitetsklasser Loopar Datastrukturer Några nyttiga regler OBS! Idag jobbar

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Innehåll Datastrukturer och algoritmer Föreläsning 14 Objektorientering Abstrakta datatyper Generella teorier 469 470 Java och C++ Programmeringsspråken C++ och java bygger båda på C. Förutom de grundläggande

Läs mer

Föreläsning 9 Innehåll

Föreläsning 9 Innehåll Föreläsning 9 Innehåll Träd, speciellt binära träd egenskaper användningsområden implementering Datavetenskap (LTH) Föreläsning 9 HT 2017 1 / 31 Inlämningsuppgiften De föreläsningar som inlämningsuppgiften

Läs mer

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna Föreläsning Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Implementering med lista ar Implementering av prioritetskö med heap Sortering

Läs mer

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Algoritmer & Datastrukturer i Java Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2010-03-16 Skrivtid: 4 timmar Kontaktperson: Nicolina Månsson Poäng / Betyg: Max 44 poäng

Läs mer

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) Snabba frågor Alla svar motiveras väl. Facit Tentamen TDDC30 2015-03-19 kl 08-12 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Varför väljer man ofta synligheten private hellre än public för medlemsvariabler i en klass?

Läs mer

Facit Tentamen TDDC (7)

Facit Tentamen TDDC (7) Facit Tentamen TDDC30 2014-03-18 1 (7) Teoretisk del 1. (3p) "Snabba frågor" a) Varför kan man tänkas vilja dölja metoder och variabler med private? (0.5p) Svar:För att skydda interna variabler från ändringar

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-13 Idag Grafer: Terminologi. Datastrukturer. Topologisk sortering. Kortaste vägen. Bredden först-sökning. Dijkstras algoritm. (Vi får

Läs mer

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen Föreläsning 9 Innehåll Inlämningsuppgiften De föreläsningar som inlämningsuppgiften bygger på är nu klara. Det är alltså dags att börja arbeta med inlämningsuppgiften. Träd, speciellt binära träd egenskaper

Läs mer

EDAA01 Programmeringsteknik - fördjupningskurs

EDAA01 Programmeringsteknik - fördjupningskurs EDAA01 Programmeringsteknik - fördjupningskurs Läsperiod lp 1+2 (Ges även lp 3) 7.5 hp anna.axelsson@cs.lth.se sandra.nilsson@cs.lth.se http://cs.lth.se/edaa01ht Förkunskapskrav: Godkänd på obligatoriska

Läs mer

Den som bara har en hammare tror att alla problem är spikar

Den som bara har en hammare tror att alla problem är spikar Introduktion Föreläsning (Weiss kap. -4) Många begrepp blir det Introduktion till kursen Exempel: Datastrukturen mängd Generiska Den som bara har en hammare tror att alla problem är spikar Vilken

Läs mer

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1.

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1. Välkomna till DIT012 IPGO 1 Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1. Lärare och Handledare Kursansvariga, examinatorer, föreläsare och handledare

Läs mer

Programmering för språkteknologer II, HT2011. Rum

Programmering för språkteknologer II, HT2011. Rum Programmering för språkteknologer II, HT2011 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv11/pst2/ Kursplan Mål Efter avslutad kurs skall studenten för att förtjäna betyget

Läs mer

Föreläsning 11. ADT:er och datastrukturer

Föreläsning 11. ADT:er och datastrukturer Föreläsning 11 ADT:er och datastrukturer ADT:er och datastrukturer Dessa två begrepp är kopplade till varandra men de står för olika saker. En ADT (abstrakt datatyp) är just abstrakt och är inte kopplad

Läs mer

Abstrakta datastrukturer

Abstrakta datastrukturer Föreläsning 2 Datastrukturer Abstrakta datastrukturer Stack Stack implementerad med array Länkad lista Stack implementerad med länkad lista Inlämningsuppgifter Datastrukturer En datastruktur är en struktur

Läs mer

Föreläsning 13 Innehåll

Föreläsning 13 Innehåll Föreläsning 13 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Heapar Implementering av prioritetskö med heap Klassen PriorityQueue i java.util Programexempel LPT-algoritmen

Läs mer

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar Föreläsning 1 Innehåll ADT Prioritetskö Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util ar Implementering av prioritetskö med heap Sortering med hjälp

Läs mer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1 Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut

Läs mer

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare Prov i DAT 312: Algoritmer och datastrukturer för systemvetare Jacek Malec Datavetenskap, LU 11 april 2003 Datum 11 april 2003 Tid 14 19 Ansvarig lärare Jacek Malec (tel. 03 9890431) Hjälpmedel inga Antal

Läs mer

Föreläsning 3 Datastrukturer (DAT037)

Föreläsning 3 Datastrukturer (DAT037) Föreläsning 3 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-07 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat037 Förra

Läs mer

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Algoritmer & Datastrukturer i Java Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2008-05-27 Skrivtid: 4 timmar Kontakt person: Nicolina Månsson, tel. 035-167487 Poäng / Betyg:

Läs mer

Tentamen Datastrukturer D DAT 035/INN960

Tentamen Datastrukturer D DAT 035/INN960 Tentamen Datastrukturer D DAT 035/INN960 21 december 2007 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.) Betygsgränser,

Läs mer

Datastrukturer. föreläsning 6. Maps 1

Datastrukturer. föreläsning 6. Maps 1 Datastrukturer föreläsning 6 Maps 1 Avbildningar och lexika Maps 2 Vad är ett lexikon? Namn Telefonnummer Peter 031-405937 Peter 0736-341482 Paul 031-405937 Paul 0737-305459 Hannah 031-405937 Hannah 0730-732100

Läs mer

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5 Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5? FORTSÄTTNING TRÄD RECAP (förra föreläsningen) RECAP (förra föreläsningen) Träd är icke-linjära datastrukturer som ofta

Läs mer

Seminarium 13 Innehåll

Seminarium 13 Innehåll Seminarium 13 Innehåll Prioritetsköer och heapar Prioritetsköer ADTn Klassen PriorityQueue i java.util Implementering med lista Heapar ADTn För implementering av prioritetskö För sortering Efter seminariet

Läs mer

Tentamen TEN1 HI

Tentamen TEN1 HI Tentamen TEN1 HI1029 2015-03-17 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Innehåll Datastrukturer och algoritmer Föreläsning14 Abstrakta datatyper Generella teorier Algoritmer Problemlösningsstrategier Typer av algoritmer 418 419 Abstrakta datatyper Ett koncept för att kunna

Läs mer

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar Föreläsning 1 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Heapar Implementering av prioritetskö med heap Sortering med hjälp av heap

Läs mer

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag) Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag) 21 december 2007 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng

Läs mer

Trädstrukturer och grafer

Trädstrukturer och grafer Översikt Trädstrukturer och grafer Trädstrukturer Grundbegrepp Binära träd Sökning i träd Grafer Sökning i grafer Programmering tillämpningar och datastrukturer Varför olika datastrukturer? Olika datastrukturer

Läs mer

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- Abstrakt datatyp Datatyp för en variabel Betecknar i ett programmeringsspråk den mängd värden variabeln får anta. T ex kan en variabel av typ boolean anta värdena true och

Läs mer

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Föreläsning 4 Kö Föreläsning 4 ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista ADT Kö Grundprinciper: En kö fungerar som en kö. Man fyller på den längst bak och

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Innehåll Föreläsning 3 Fält och Tabell Att läsa: Kapitel 5-6 Fält Fält Modell Schackbräde Organisation n-dimensionellt fält organiserat som rätblock Elementen o alla elementen värden har samma datatyp

Läs mer

Avbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4

Avbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4 Avbildningar och hashtabeller Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4 1 2 Mängder i Java 3 Mängd-gränssnittet Set vs. List Mängder får endast innehålla unika element: Metoden.add(E) returnerar

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Datastrukturer och algoritmer Föreläsning 5 Innehåll Vi har tittat på Abstrakta datatyper o Lista, Cell, Fält, Tabell, Stack, Kö, Träd (ordnade och binära), Graf, Mängd, Lexikon, Prioritetskö, Heap, Trie,

Läs mer

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel Data- och Programstrukturer Provmoment: Ladokkod: Tentamen ges för: Omtentamen NDP011 Systemarkitektprogrammet 7,5 högskolepoäng Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum:

Läs mer

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd Föreläsning 8 Innehåll Datastrukturer i kursen Träd, speciellt binära träd egenskaper användningsområden implementering Undervisningsmoment: föreläsning 8, övningsuppgifter 8, lab 4 Avsnitt i läroboken:

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Sortering Selectionsort, Bubblesort,

Läs mer

Föreläsning 1: Introduktion till kursen

Föreläsning 1: Introduktion till kursen (17 januari 2017 F1 1 ) Föreläsning 1: Introduktion till kursen Lärare: Anna Eckerdal och Tom Smedsaas samt ca 20 assistenter Registrering / avregistrering Undervisningsformer: föreläsningar och laborationer

Läs mer

Sökning och sortering

Sökning och sortering Sökning och sortering Programmering för språkteknologer 2 Sara Stymne 2013-09-16 Idag Sökning Analys av algoritmer komplexitet Sortering Vad är sökning? Sökning innebär att hitta ett värde i en samling

Läs mer

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad 1 Datatyper Tobias Wrigstad Det finns flera olika typer av (slags) data Olika datatyper har olika egenskaper. T.ex. är ett personnummer inte ett tal. (Den sista siffran skall stämma enligt den s.k. Luhnalgoritmen

Läs mer

Programmeringsteknik II

Programmeringsteknik II Programmeringteknik II Kursintroduktion http://www.it.uu.se/edu/course/homepage/prog2/vt18/ 2018-03-19 Programmeringsteknik II 2018-03-19 1 / 9 Lärare Carl Nettelblad (kursansvarig) Anna Eckerdal Biträdande

Läs mer

Föreläsning 2. Länkad lista och iterator

Föreläsning 2. Länkad lista och iterator Föreläsning 2 Länkad lista och iterator Föreläsning 2 Länkad-lista Lista implementerad med en enkellänkad lista Iterator Implementering av en Iterator Dubbellänkad lista och cirkulär lista LinkedList JCF

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2012-11-13 Idag Mer om grafer: Topologisk sortering. Kortaste vägen. Bredden först-sökning. Dijkstras algoritm. Floyd-Warshall. Topologisk sortering

Läs mer

Föreläsning 7. Träd och binära sökträd

Föreläsning 7. Träd och binära sökträd Föreläsning 7 Träd och binära sökträd Föreläsning 7 Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning Läsanvisningar och

Läs mer

Föreläsning 1: Introduktion till kursen

Föreläsning 1: Introduktion till kursen (16 januari 2016 F1.1 ) Föreläsning 1: Introduktion till kursen Lärare: Anna Eckerdal och Tom Smedsaas samt ca 20 assistenter Registrering / avregistrering Undervisningsformer: föreläsningar och laborationer

Läs mer

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klassen Mio ffl Särfall ffl Interface Kungl. Tekn. Högskolan

Läs mer

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom: 6 Rekursion 6.1 Rekursionens fyra principer Problem löses genom: 1. förenkling med hjälp av "sig själv". 2. att varje rekursionssteg löser ett identiskt men mindre problem. 3. att det finns ett speciellt

Läs mer