TDDI01 Datastrukturer och algoritmer. Ht Laborationer
|
|
- Göran Mattsson
- för 8 år sedan
- Visningar:
Transkript
1 LINKÖPINGS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Programvara och system (SaS) Tommy Olsson TDDI01 Datastrukturer och algoritmer Ht Laborationer Laborationskursen omfattar följande laborationsuppgifter på temat datastrukturer och algoritmer. 1. Sökträd 2. Jämförelse listor träd 3. Hashtabeller 4. Shellsort med Knuths gapsekvens 5. Test av interna, jämförande sorteringsmetoder. Den angivna ordningen motsvarar i huvudsak den ordning som stoffet är planerat att behandlas på föreläsningarna. Kodningsmässigt är laborationerna inte speciellt omfattande. I de flesta fall är det fråga om att använda och modifiera given kod. Detta är en i praktiken vanligt förekommande situation och därför en bra och realistisk övning och labtiden i kursen är dessutom begränsad. Väl förbedredd bör varje uppgift inte ta mer än två timmar att lösa men en extra timme per uppgift har planerats. Programkod Givna program finns tillgängliga i mappar för respektive uppgift i huvudmappen för laborationerna: ~TDDI01/kursbibliotek/lab/ Hjälpprogram finns i mappen ~TDDI01/kursbibliotek/lab/utilities/ och testdata finns i mappen ~TDDI01/kursbiibliotek/lab/tesdata/. Dessa behöver enbart kopieras om du inte ska arbeta på IDAs system och i så fall behöver sökvägar i vissa program samt make-filerna ändras. Allmäna anvisningar för laborationer Var väl förberedd då du kommer till laborationstillfällena, så att du kan utnyttja tiden effektivt. Läs igenom laborationshandledningarna och studera given programkod. Studera relevanta avsnitt i kurslitteraturen. Förbered programlösningar hemma, t.ex. hur du ska modifiera given kod. Tidsplanering Någon direkt tidplan ges ej för utförandet av dessa uppgifter, utan du får själv planerar hur laborationstiden bäst disponeras för de olika uppgifterna. Föreläsningarna styr när det tidigast kan vara lämpligt att göra respektive uppgift. Se respektive uppgift för hur den ska redovisas och följ dessa anvisningar! Använd IDAs omslag för laborationsredogörelser för det som ska lämnas in på papper. Deadline för laborationsuppgifterna är första dagen i läsperiod Ht2. Mycket nöje! 1
2 Laboration 1: Sökträd en gäller att komplettera given programkod för ett AVL-träd. Trädet kommer sedan att användas i laboration Sökstrukturer, där några jämförande test mellan olika sökstrukturer ska göras. Given kod Den givna koden för AVL-trädet finns i mappen ~TDDI01/kursbibliotek/lab/lab1/avltree/: Inkluderingsfilen AVL_tree.h innehåller definitionen för AVL-trädet och några tillhörande funktioner som ej är medlemmar (swap och operator<<). Implementeringsfilen AVL_tree.icc innehåller definitionerna för medlemsfunktionerna i klassen AVL_Tree samt definitioner för den nodtyp som AVL-trädet implementeras med, AVL_Tree_Node. Ett testprogram finns på filen avl_tree-test.cc. Det sätter in några värden i ett AVL-träd och sedan kan en del av operationerna på AVL-trädet testas. En funktion för borttagning i ett enkelt binärt sökträd finns på filen simple_remove.cc. För att kompilera programmet finns en make-file, Makefile. Kommandot make kör den. Eftersom det är mallkod och GNU GCC-kompilatorn g++ används, inkluderas AVL_Tree.icc sist i AVL_Tree.h. Om du av någon anledning vill undvika mallkod, finns det en enklare version av AVL-trädet i undermappen ej_template. I den koden är elementtypen Comparable definierad genom en typedef, i stället för att vara mallparameter. Kopiera hela mappen ~TDDI01/kursbibliotek/lab/lab1/avltree/ till en egen mapp. Om du inte tänker använda koden i ej_template tar du lämpligtvis bort den mappen. I annat fall kan du kopiera simple_remove.cc till ej_template och arbeta i den mappen. Din uppgift är att komplettera AVL-trädet med operationen remove(), i analogi med hur övriga operationer är implementerade, t.ex. insert(). I det givna programmet har är remove() deklarerad i i klassen AVL_Tree, men kastar bara ett undantag om funktionen anropas. Någon motsvarande remove() i klassen AVL_Tree_Node är inte deklarerad (men det ska du göra). Operationen remove() ska ta bort angivet element (om det finns). Utgå från den givna funktionen som finns på filen simple_remove.cc. Komplettera med balansjustering. Studera hur balanskontroll och justering görs i insert() och gör i princip samma sak. Tänk dock noga igenom var en obalans ligger i förhållande till obalansnoden och hur man kan avgöra om en enkelrotation eller en dubbelrotation ska göras! På den punkten skiljer det påtagligt från vad som gäller vid insättning, även om koden ska bli snarlik. Koden för funktionen remove() som du skrivit själv för AVL_Tree_Node ska lämnas in på papper; ej övrig kod. Städa mappen där du har programmet för AVL-trädet, gör en tar-fil av mappen, komprimera tar-filen med gzip och bifoga den zippade filen som en bilaga i ett e-brev till handledaren. 2
3 Laboration 2: Jämförelse listor träd en går ut på att jämföra följande sökstrukturer: Ordnad, rak länkad lista Skiplista AVL-träd Röd-svart träd Bottom-up-splayträd Top-down-splayträd. Dessa sökstrukturer beskrivs översiktligt i häftet Datastrukturer och algoritmer, Komplettering, som finns i kursmaterialet på webben. Kod för alla, utom AVL-trädet, är givna och har räknare inlagda i programkoden för att kunna räkna antalet nyckeljämförelser som görs vid sökningar. Koden för AVL-trädet, som du arbetat med i laboration 1 (Sökträd), ska du själv preparera på motsvarande sätt. Jämförelsen mellan de olika sökstrukturerna görs på följande sätt. Först sätts 4711 slumpmässigt ordnade ord in i sökstrukturen. Därefter genomförs en sökning på 523 ord, varav knappt 10% inte finns bland de 4711 som satts in i sökstrukturen (ger s.k. misslyckade sökningar). Under sökningen summeras antalet nyckeljämförelser som krävs för de 523 sökorden, för att hitta ett ord eller konstatera att det inte finns. Sedan beräknas medelvärdet genom att dividera summan med 523. Detta ger en uppskattning av det förväntade sökarbetet som krävs för att söka på ett godtyckligt ord. Varje given sökstruktur finns i en egen mapp i mappen ~TDDI01/kursbibliotek/lab/lab2/. Kopiera hela lab2 till en egen mapp. Kompilera respektive program med make probe. Detta genererar ett program probe, som gör den jämförelsetest som beskrivs ovan. Kör probe och studera resultaten för respektive sökstruktur. Gör en mapp för AVL-trädet och kopiera inkluderingsfilen och implementeringsfilen för AVL-trädet för den lösning som du gjort laboration 1 (Sökträd) till den mappen. Testprogrammet du ska använda, probe.cc, och Makefile ska du kopiera från någon lämplig given sökstruktur, t.ex. från bottom-up-splayträdet, och modifiera probe.cc för AVL-trädet. Studera hur koden för t.ex. bottom-up-splayträdet har kompletterats med räknare för att undersöka antalet nyckeljämförelser. Gör motsvarande tillägg i koden för AVL-trädet. Tänk noga igenom hur detta ska göras för att antalet nyckeljämförelser ska räknas korrekt! Kompilera med kommandot make probe. Kör det erhållna programmet probe och studera resultatet. Observera att denna laboration kan göras utan att laboration 1 lösts, eftersom inte borttagning görs i dessa testprogram. Den givna koden för laboration 1 kan alltså användas, ifall du av någon anledning inte löst laboration 1. 3
4 Testdatafiler Testdatafiler finns i kursbiblioteket i mappen ~TDDI01/kursbibliotek/lab/testdata. Det finns tre filer med 4711 ord, 4711ord.slump (slumpmässigt ordnade), 4711ord.alfa (alfabetiskt ordnade) och 4711ord.omv (alfabetiskat omvänt ordnade). Det är i första hand 4711ord.slump som ska användas. De 523 orden som ska användas för att beräkna sökprestanda finns på filen 523ord.slump. Programmen är skrivna för att ta namnen på indatafiler på kommandoraden, t.ex. enligt följande: probe 4711ord.slump 523ord.slump Sammanställ testresultaten på papper och motivera varför de erhållna resultaten stämmer med vad som kunde förväntas (för visst stämmer de?-). Motiveringarna ska förstås bygga på förväntade tidskomplexiteten för de olika sökstrukturerna. Försök ge en förklaring till eventuella avvikelser från de värden som du teoretiskt kan räkna ut för tidskomplexiteterna och observerade värden. Detta lämnas in till handledaren. Ingen kod ska redovisas på papper. Städa mappen där du har programmet för AVL-trädet (make zap), gör en tar-fil av mappen, komprimera tar-filen med gzip och bifoga den zippade tar-filen som bilaga i ett e-brev till din handledare. 4
5 Laboration 3: Hashtabeller en gäller att implementera kollisionshanteringsmetoden dubbelhashning och sedan genomföra ett enkelt test som går ut på att undersöka kollisionsfrekvensen i förhållande till fyllnadsgraden för olika kollisionshanteringsmetoder. Program för hashtabeller med kollisionshantering som bygger på linjär sondering, kvadratisk sondering och separat länkning är givna. Programkoden för hashtabell med kvadratisk sondering är modifierad för denna övning, eftersom man normalt förutsätter att fyllnadsgraden 50% ej överskrids vid kvadratisk sondering. Villkorliga räknare har lagts in i koden, i funktionen find, för att räkna antalet sonderingssteg som utförs. En kort beskrivning av metoden för att uppskatta tabellernas sökegenskaper ges nedan. Kopiera mapparna som finns i mappen ~TDDI01/kursbibliotek/lab/lab3/. Kompilera först de olika programmen med kommandot make plain och provkör med kommandot plain. Detta visar innehållet i hashtabellerna efter insättning av värden Kompilera sedan med kommandot make probe och provkör med kommandot probe. Detta visar kollisionsfekvensen för olika fyllnadsgrad. Studera utskrifterna. Kopiera filerna för linjär sondering till en ny mapp för dubbelhashning. Modifiera funktionen find, så att den implementerar dubbelhashning i stället för linjär sondering. Antalet sonderingssteg som utförs ska, på samma sätt som i de andra programmen, kunna räknas. Ändra filnamn, utskrifter från programmet, etc., så att det framgår att det är dubbelhashning och inte linjär sondering! Provkör programmet med kommandona make plain och make probe och notera resultaten. Kör de fyra metoderna i sina probe-versioner och sammanställ erhållna resultat i ett gemensamt kurvdiagram. På den horisontella axeln anger du fyllnadsgraden i procent (0-100% kan räcka även för separat länkning). Vertikalt plottar du kollisionsfrekvensen som funktion av fyllnadsgraden. Diagrammet lämnar du in till din handledare. Städa mappen där du har programmet för dubbelhashning, gör en tar-fil av mappen, komprimera tar-filen med gzip och bifoga den zippade filen som en bilaga i ett e-brev till handledaren. Undersökning av sökarbete relaterat till fyllnadsgrad Undersökningen av antalet sonderingssteg som krävs för att återfinna en post eller hitta en ledig plats för en ny post vid en viss fyllnadsgrad, avser att visa hur en hashtabells prestanda försämras med stigande fyllnadsgrad. En uppskattning av kollisionsfrekvensen/sökarbetet görs genom att successivt sätta in ord hämtade från filen 403hash.lagra i hashtabellen. Vid fyllnadsgraderna 10%, 20%, 30%, osv. till dess tabellen är full eller indata tar slut, avbryts insättningen tillfälligt och antalet sonderingssteg som i medeltal krävs undersöks vid den aktuella fyllnadsgraden. Antalet sonderingssteg vid en viss fyllnadsgrad bestäms genom att söka på de 50 ord som finns på filen 50kollision.test. För varje ord räknas antalet söksteg som utförs. Beräkningen av hemadressen räknas som ett första söksteget. Antalet söksteg summeras för de 50 orden och medelvärdet beräknas vid den aktuella fyllnadsgraden genom att dividera det summerade antalet söksteg med antalet ord, 50. 5
6 Kort om kompilering av dessa program och make-filerna Det finns två testprogram, plain.cc och probe.cc. Programmet på filen plain.cc som läser ord från en fil (403hash.lagra), sätter in ord i hashtabellen till dess den är full och skriver sedan ut tabellinnehållet som en kontroll på att det fungerar. För att kompilera detta program ger du kommandot eller enbart make plain make Programmet på probe.cc fyller successivt på tabellen med data från filen (403hash.lagra)och testar kollisionsfrekvensen vid olika fyllnadsgrad med ord från filen (50kollision.test) och skriver slutligen ut testdata. För att kompilera detta program ger du kommandot make probe Hjälpprogram (Count och primefns) och testdatafilerna behöver inte kopieras till arbetskatalogerna, utan åtkomst till dess sköts via direktiv i Makefile respektive inbyggda sökvägar i programmen. Ska du arbeta hemma måste även dessa kopieras och make-filen eventuellt ändras. 6
7 Laboration 4: Shellsort med Knuts gap en gäller att implementera en variant av sorteringsmetoden Shellsort. I mappen ~TDDI01/kursbibliotek/lab/lab4/ finns ett program för Shellsort, enligt Shells ursprungliga implementering (gapsekvensen erhålls genom successiv division med 2). Kopiera filerna i mappen ~TDDI01/kursbibliotek/lab/lab4/ till en egen arbetskatalog och provkör. Det finns en Makefile för att kompilera. Modifiera algoritmen för Shellsort så att den använder en följd av gap-värden enligt Knuths förslag. Detta ska ge gap-värdena 1, 4, 13, 40, 121, 364, 1093, 3280, osv. Formeln för att beräkna dessa värdena är: h 1 = 1 h i = 3h i Första h-värdet (startvärdet på gap i koden) ska räknas fram av Shellsort-funktionen, baserat på antal värden som ska sorteras. Kontrollera noggrant att algoritmen verkligen startar med största möjliga meningsfulla gapet! Vilket är det för n värden? Låt lämpligtvis programmet skriva ut detta värde när du testar! Testkör och studera resultatet. Lämna in koden på papper. Skicka in källkodsfilen med det fullständiga programmet som en bilaga i ett e-brev till din handledare. 7
8 Laboration 5: Test av interna, jämförande metoder en gäller att studera och jämföra olika sorteringsmetoder empiriskt, med avseende på deras tidskomplexitet. I mappen ~TDDI01/kursbibliotek/lab/lab5/ finns ett program med ett antal interna sorteringsmetoder som ingår i kursen. Kopiera filerna i mappen ~TDDI01/kursbibliotek/lab/lab5/ till en egen arbetskatalog och provkör. Det finns en Makefile för att kompilera. Komplettera med den Shellsort du själv implementerat i laboration 4. Inför räknare i den koden för att räkna jämförelser och förflyttningar, i analogi med vad som gjorts i de givna metoderna. Observera att ett byte är lika med 3 förflyttningar. Testkör och studera resultaten. Bedöm om de förefaller rimliga med tanke på deras förväntade tidskomplexitet. Lämna in utskriften från testkörningen på papper. Skicka in källkodsfilen med det fullständiga programmet via e-post till den handledare. 8
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
Datastrukturer. föreläsning 10. Maps 1
Datastrukturer föreläsning 10 Maps 1 Minsta uppspännande träd Maps 2 Minsta uppspännande träd Uppspännande träd till graf fritt delträd innehåller alla noderna Minsta uppspännande träd (MST) är det uppspännande
Tentamen Datastrukturer för D2 DAT 035
Tentamen Datastrukturer för D2 DAT 035 17 december 2005 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:
DAI2 (TIDAL) + I2 (TKIEK)
TNTMN KURSNMN PROGRM: KURSTKNING XMINTOR lgoritmer och datastrukturer I2 (TIL) + I2 (TKIK) 2017/2018, lp 4 LT75 Uno Holmer TI ÖR TNTMN redagen den 1/8 2018, 08.0-12.0 HJÄLPML NSVRIG LÄRR atastrukturer
Datastrukturer. föreläsning 10. Maps 1
Datastrukturer föreläsning 10 Maps 1 AVL-träd 1 2 5 2 0 4 1 8 3 2 1 11 1 7 Lecture 6 2 Insättning i AVL-träd Sätt först in det nya elementet på samma sätt som i ett vanligt BST! Det nya trädet kan bli
Teoretisk del. Facit Tentamen TDDC (6)
Facit Tentamen TDDC30 2014-08-29 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Vad är skillnaden mellan synligheterna public, private och protected? (1p) Svar:public: Nåbar för
TDDI14 Objektorienterad programmering
LINKÖPINGS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Avdelningen för programvara och system Tommy Olsson 2015-05-27 Datortentamen i TDDI14 Objektorienterad programmering Provkod DAT1 Datum 2015-06-01
Föreläsning Datastrukturer (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-27 Idag Balanserade sökträd Splayträd Skipplistor AVL-träd AVL-träd Sökträd Invariant (för varje nod): Vänster och höger delträd har samma
Inlämningsuppgifter, EDAF30, 2015
LUNDS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Programmering i C++ Inlämningsuppgifter, EDAF30, 2015 Det finns två deluppgifter som båda ska lösas: 1. skriv ett program för att hantera bankkonton
TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.
1 (8) TENTMEN: lgoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. örja varje uppgift på ett nytt blad. Skriv inga lösningar i tesen. Skriv ditt idnummer
IDA kursmaterial Informationsblad make. make
make make är ett verktyg som främst används för att underhålla, uppdatera och återskapa program och filer. Det är dock ett generellt verktyg som kan användas även i många andra sammanhang. En avancerad
Laboration 1. "kompilera"-ikonen "exekvera"-ikonen
Syfte Laboration 1. Objektorienterad programmering, Z1 Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i
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
Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1
Inlämningsuppgift : Finn 2D1418 Språkteknologi Christoffer Sabel E-post: csabel@kth.se 1 1. Inledning...3 2. Teori...3 2.1 Termdokumentmatrisen...3 2.2 Finn...4 3. Implementation...4 3.1 Databasen...4
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
Föreläsning 9 Datastrukturer (DAT037)
Föreläsning Datastrukturer (DAT07) Fredrik Lindblad 27 november 207 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/20/course/dat07 Innehåll 2
Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary 1 1.1 Definitioner... 1 1.2 Implementation... 2
Föreläsning 4 ADT Map/Dictionary, hashtabeller, skip-listor TDDC91: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 9 september 2015 Tommy Färnqvist, IDA, Linköpings universitet 4.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
TENTAMEN: Algoritmer och datastrukturer. Läs detta!
(6) TENTAMEN: Algoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt idnummer på varje blad (så att vi inte
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
Föreläsning 9. Sortering
Föreläsning 9 Sortering Föreläsning 9 Sortering Sortering och Java API Urvalssortering Instickssortering Söndra och härska Shellsort Mergesort Heapsort Quicksort Bucketsort Radixsort Läsanvisningar och
Försättsblad till skriftlig tentamen vid Linköpings Universitet
Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2013-03-27 Sal Tid 08:00 12:00 Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter som ingår i tentamen Antal
TDDI16: Datastrukturer och algoritmer
. TDDI16: Datastrukturer och algoritmer Lab 2: Knäcka lösenord Höstterminen 2018 2018-06-27 1 Upplägg Första delen av instruktionen, avsnitt 2 till 7, innehåller en fullständig beskrivning av problemet
Föreläsning 9 Innehåll
Föreläsning 9 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning, implementering effektivitet balanserade binära sökträd, AVL-träd Abstrakta datatyperna mängd (eng. Set) och lexikon
TDIU01 / 725G
TDIU01 / 725G67 2011-12-16 08-13 Inloggning Börja med att logga in i tentasystemet genom att logga in med användare examx som har lösenordet kluring1. Verifiera att dina uppgifter stämmer och förbered
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
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
Laboration 1. "kompilera"-ikonen "exekvera"-ikonen
Programmerade system I1 Syfte Laboration 1. Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i att skriva
Försättsblad till skriftlig tentamen vid Linköpings Universitet
Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2015-08-28 Sal Tid 08:00 12:00 Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter som ingår i tentamen Antal
Teoretisk del. Facit Tentamen TDDC (6)
Facit Tentamen TDDC30 2013-06-05 1 (6) Teoretisk del 1. (3p) "Snabba frågor" Alla svar motiveras väl. a) Vad skiljer en statisk metod från en icke-statisk? (0.5p) Svar:En statisk metod är associerad till
Övningen vill visa på vikten av valet av datastruktur, trots att de ofta erbjuder samma funktionalitet genom sina gränssnitt.
1 Samlingar 1.1 Frekvenstabell En Integer är icke-muterbar (precis som String, Float, Boolean et.c.). Ickemuterbarhet har många fördelar, men en nackdel är att ett helt nytt objekt måste skapas när ett
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
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
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
Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6
Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner
Enkellänkad lista header och sentinel
Enkellänkad lista header och sentinel Enkellänkad lista List- och trädimplementering 1(6) Tom lista Enkellänkad lista med header Tom lista skapar strukturell enhetlighet för alla datanoder inget specialfall
Tentamen med lösningsförslag Datastrukturer för D2 DAT 035
Tentamen med lösningsförslag Datastrukturer för D2 DAT 035 17 december 2005 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.)
TDP005 Projekt: Objektorienterat system
. TDP005 Projekt: Objektorienterat system Laboration i Make och CMake Författare Filip Strömbäck Höstterminen 2016 Version 1.0 2016-10-04 Introduktion I denna lab kommer vi titta närmare på två verktyg
Programmering i C++ Kompilering från kommandoraden
Programmering i C++ Kompilering från kommandoraden Sven Gestegård Robertz Datavetenskap, LTH 9 november 2015 Sammanfattning Ibland vill man, av olika anledningar, inte använda en stor integrerad utvecklingsmiljö
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
TDDI TDDI22 Tentaregler
Inloggning TDDI22 Tentaregler Logga in i tentasystemet genom att välja session exam system och logga in med ditt vanliga LiU- ID. Välj inte att ha denna session som standardsession. Verifiera att dina
Laborationer i C++ TDDI16 Datastrukturer och algoritmer
Laborationer i C++ TDDI16 Datastrukturer och algoritmer 10 oktober 2016 2 Förord Detta kompendium innehåller laborationer för kursen TDDI16 Datastrukturer och algoritmer som ges vid Institutionen för datavetenskap
Försättsblad till skriftlig tentamen vid Linköpings Universitet
Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2013-06-05 Sal Tid 08:00 12:00 Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter som ingår i tentamen Antal
Innehåll. Föreläsning 10. Specifikation. Mängd. Specifikation. Konstruktion av mängd. Mängd Lexikon Hashtabell
Innehåll Föreläsning Mängd, lexikon och hashtabell Mängd Lexikon Hashtabell Mängd Specifikation Modell: En påse, men den är inte riktigt bra eftersom man tex kan ha mängder med gemensamma element. Organisation:
Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram
Mål Lab 2: Underprogram Följande laboration introducerar underprogram; procedurer, funktioner och operatorer. I denna laboration kommer du att lära dig: Hur man skriver underprogram och hur dessa anropas.
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
Laboration 1. Objektorienterad programmering, Z1. Syfte
Syfte Laboration 1. Objektorienterad programmering, Z1 Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i
Tentamen Datastrukturer D DAT 036/INN960
Tentamen Datastrukturer D DAT 036/INN960 18 december 2009 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. Betygsgränser, CTH: 3 = 24 p, 4 = 36 p, 5 = 48 p, GU:
Datastrukturer och algoritmer
Datastrukturer och algoritmer Kompendium/komplettering Tommy Olsson, Institutionen för datavetenskap, 2007. Innehåll Inledning... 1 1 Skiplista... 3 1.1 Skiplistans uppbyggnad... 3 1.2 Operationer på
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
Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik II 2018-10-19 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Försättsblad till skriftlig tentamen vid Linköpings Universitet
Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2016-03-21 Sal Tid 08:00 12:00 Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter som ingår i tentamen Antal
Innehåll. F7: Tabell, hashtabell, relation & lexikon. Gränsyta till Tabell. Tabell. Tabell Hashtabell Relation Lexikon.
Innehåll F7: Tabell, hashtabell, relation & lexikon Niclas Börlin 5DV49 Datastrukturer och algoritmer Tabell Hashtabell Relation Lexikon Tabell Gränsyta till Tabell Modell Uppslagsbok Organisation Ändlig
Föreläsning 5 Innehåll
Föreläsning 5 Innehåll Algoritmer och effektivitet Att bedöma och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Datavetenskap (LTH) Föreläsning 5 VT 2019 1 / 39 Val av algoritm och datastruktur
Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.
Tentamen Programmeringsteknik II 2014-0-27 Skrivtid: 0800 100 Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja alltid ny uppgift på nytt papper. Lägg
PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION
PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION Laborationsansvarig: Anders Arvidsson Utskriftsdatum: 2005-08-31 Laborant(er): 1 Syfte Laborationen ska ge studenten möjlighet att genom assemblerinlägg
Tentamen i TDP004 Objektorienterad Programmering Praktisk del
Tentamen i TDP004 Objektorienterad Programmering Praktisk del Datum: 2010-04-07 Tid: 8-12 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 285607 Jourhavande kommer att besöka skrivsalarna ungefär
Laborationer i Java TDDD71 Datastrukturer och algoritmer
Laborationer i Java TDDD71 Datastrukturer och algoritmer 30 oktober 2015 2 Förord Detta kompendium innehåller laborationer för kursen TDDD71 Datastrukturer och algoritmer (DALG) som ges vid Institutionen
Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn
Träd allmänt Träd allmänt Ett generellt träd är Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn där t1,..., tn i sin tur är träd och kallas subträd, vars rotnoder kallas
TDDC30 Programmering i Java, datastrukturer och algoritmer
LINKÖPINGS UNIVERSITET Institutionen för datavetenskap Jonas Wallgren Tentamen i TDDC30 Programmering i Java, datastrukturer och algoritmer För I3, Ii3 Datum: 2009-04-17 Klockan: 14-18 Jour: Jonas Wallgren,
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
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
MMA132: Laboration 2 Matriser i MATLAB
MMA132: Laboration 2 Matriser i MATLAB Introduktion I den här labben skall vi lära oss hur man använder matriser och vektorer i MATLAB. Det är rekommerad att du ser till att ha laborationshandledningen
Tentamen Datastrukturer D DAT 035/INN960
Tentamen Datastrukturer D DAT 035/INN960 22 december 2006 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,
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.
Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.
Facit Tentamen TDDC30 2015-08-28 kl 08-12 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Vad är syftet med ett interface? (1p) Svar:Att ange vilka metoder som ska finnas, utan
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
Avslutning. Kapitel Komprimering av filer
Kapitel 12 Avslutning I detta sista kapitel tittar vi på hur man kan installera program själv. I samband med det finns det anledning att titta på komprimering av filer och på filarkiv (som kan vara användbart
TENTAMEN: Algoritmer och datastrukturer. Läs detta!
1 (6) TENTAMEN: Algoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt idnummer på varje blad (så att vi
Tentamen i TDP004 Objektorienterad Programmering Praktisk del
Tentamen i TDP004 Objektorienterad Programmering Praktisk del Datum: 2011-04-28 Tid: 08-12 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 281456 Jourhavande kommer att besöka skrivsalarna ungefär
Tentamen Datastrukturer D DAT 036/INN960
Tentamen Datastrukturer D DAT 036/INN960 18 december 2009 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. Betygsgränser, CTH: 3 = 24 p, 4 = 36 p, 5 = 48 p, GU:
Försättsblad till skriftlig tentamen vid Linköpings Universitet
Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2016-03-21 Sal Tid 14:00 18:00 Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter som ingår i tentamen Antal
Skolan för Datavetenskap och kommunikation. Programmeringsteknik. Föreläsning 13
Skolan för Datavetenskap och kommunikation Programmeringsteknik Föreläsning 13 information om p-uppgiften P-uppgiften Spec Prototyp Granskning Krav på P-uppgiftslösningen Redovisning av P-uppgiften P-uppgiften:
Försättsblad till skriftlig tentamen vid Linköpings Universitet
Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2015-03-19 Sal Tid 14:00 18:00 Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter som ingår i tentamen Antal
Föreläsning 10 Innehåll. Diskutera. Inordertraversering av binära sökträd. Binära sökträd Definition
Föreläsning Innehåll Diskutera Binära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, AVL-träd Jämföra objekt interfacet Comparable Interfacet
Program. Kapitel make Program Interpreterande och kompilerande program
Kapitel 11 Program Detta kapitel är som synes mycket kort och nämner inte allt från föreläsningen. 11.1 Program Ett datorprogram är en samling instruktioner som beskriver något som en dator ska utföra.
Värmedistribution i plåt
Sid 1 (6) Värmedistribution i plåt Introduktion Om vi med konstant temperatur värmer kanterna på en jämntjock plåt så kommer värmen att sprida sig och temperaturen i plåten så småningom stabilisera sig.
Laborationer i Java TDDD71 Datastrukturer och algoritmer
Laborationer i Java TDDD71 Datastrukturer och algoritmer 25 oktober 2017 2 Förord Detta kompendium innehåller laborationer för kursen TDDD71 Datastrukturer och algoritmer (DALG) som ges vid Institutionen
Föreläsning 10 Innehåll
Föreläsning 10 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, AVL-träd Jämföra objekt interfacet Comparable Interfacet
Uppgift 1 ( Betyg 3 uppgift )
2008-03-12.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Du skall skriva ett program som läser igenom en textfil som heter FIL.TXT och skriver ut alla rader där det står ett decimaltal först på raden. Decimaltal
TANA17 Matematiska beräkningar med Matlab
TANA17 Matematiska beräkningar med Matlab Laboration 1. Linjär Algebra och Avbildningar Namn: Personnummer: Epost: Namn: Personnummer: Epost: Godkänd den: Sign: Retur: 1 Introduktion I denna övning skall
Datastrukturer. Föreläsning 5. Maps 1
Datastrukturer Föreläsning 5 Maps 1 Traversering av träd Maps 2 Preordningstraversering Traversera = genomlöpa alla noderna i ett träd Varje nod besöks innan sina delträd Preordning = djupet först Exempel:
När man vill definiera en matris i MATLAB kan man skriva på flera olika sätt.
"!$#"%'&)(*,&.-0/ 177 Syftet med denna övning är att ge en introduktion till hur man arbetar med programsystemet MATLAB så att du kan använda det i andra kurser. Det blir således inga matematiska djupdykningar,
Föreläsning 11 Innehåll. Diskutera. Binära sökträd Definition. Inordertraversering av binära sökträd
Föreläsning Innehåll Diskutera Binära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, AVL-träd Jämföra objekt interfacet Comparable Interfacet
TDDI22 (exempel) TDDI22 Tentaregler
Inloggning TDDI22 Tentaregler Logga in i tentasystemet genom att välja session exam system och logga in med ditt vanliga LiU- ID. Välj inte att ha denna session som standardsession. Verifiera att dina
Övningsuppgifter till föreläsning 2 Variabler och uttryck
Sid 1 (5) Övningsuppgifter till föreläsning 2 Variabler och uttryck Syfte Syftet med övningsuppgifterna är att träna på: Aritmetik, variabler, tilldelning, scanf och printf Generellt Diskutera gärna uppgifterna
Facit Tentamen TDDC kl (6)
Facit Tentamen TDDC30 2015-03-19 kl 14-18 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Ge ett exempel på ett kodstycke som orsakar ett NullPointerException. (1p) Svar:Animal
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
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,
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,
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
Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson Plot och rekursion
Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson 2010-11-19 Plot och rekursion I denna laboration skall du lära dig lite om hur plot i MatLab fungerar samt använda
TDDC74 Lab 02 Listor, sammansatta strukturer
TDDC74 Lab 02 Listor, sammansatta strukturer 1 Översikt I denna laboration kommer ni att lära er mer om: Mer komplexa rekursiva mönster, procedurer och processer. Hur man kan hantera listor och andra enklare
Objektorienterad programmering D2
Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste
Programkonstruktion och. Datastrukturer
Programkonstruktion och Datastrukturer Repetitionskurs, sommaren 2011 Datastrukturer (Listor, Träd, Sökträd och AVL-träd) Elias Castegren elias.castegren.7381@student.uu.se Datastrukturer Vad är en datastruktur?
Programkonstruktion och Datastrukturer
Programkonstruktion och Datastrukturer VT 2012 Tidskomplexitet Elias Castegren elias.castegren.7381@student.uu.se Problem och algoritmer Ett problem är en uppgift som ska lösas. Beräkna n! givet n>0 Räkna
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
Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)
Föreläsning 8. Mängd, Avbildning, Hashtabell
Föreläsning 8 Mängd, Avbildning, Hashtabell Föreläsning 8 Mängd (Set) Avbildning (Map) Hashtabeller Hashkoder Öppen adressering Länkning Implementering Mängd En mängd är en samling som inte innehåller
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: