Tentamen Datastrukturer (DAT036)
|
|
- Linnéa Håkansson
- för 8 år sedan
- Visningar:
Transkript
1 Tentamen Datastrukturer (DAT036) Datum och tid för tentamen: , 8:30 12:30. Ansvarig: Nils Anders Danielsson. Nås på eller anknytning Besöker tentamenssalarna ca 9:30 och ca 11:30. Godkända hjälpmedel: Kursboken (Data Structures and Algorithm Analysis in Java, Weiss, valfri upplaga), handskrivna anteckningar. För att få betyget n (3, 4 eller 5) måste du lösa minst n uppgifter. Om en viss uppgift har deluppgifter med olika gradering så räknas uppgiften som löst om du har löst alla deluppgifter med gradering n eller mindre. 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 allvarliga misstag kan eventuellt godkännas (kanske efter en helhetsbedömning av tentan; för högre betyg kan kraven vara hårdare). Lämna inte in lösningar för flera uppgifter på samma blad. Skriv din tentakod på varje blad. Lösningar kan underkännas om de är svårlästa, ostrukturerade eller dåligt motiverade. Pseudokod får gärna användas, men den får inte utelämna för många detaljer. Om inget annat anges så kan du använda kursens uniforma kostnadsmodell när du analyserar tidskomplexitet (så länge resultaten inte blir uppenbart orimliga). 1
2 1. (Lätt.) Skriv ett effektivt program som tar en lista av strängar, beräknar varje strängs frekvens (hur många gånger den förekommer i listan), och skriver ut strängarna sorterade efter frekvens (i fallande ordning). Om två strängar har samma frekvens spelar ordningen ingen roll. Exempel: Lista: "elefant", "giraff", "lodjur", "elefant", "elefant" Utskrift: elefant lodjur giraff Förklara implementationen, och analysera programmets tidskomplexitet. Din analys ska ta hänsyn både till listans längd n, och antalet tecken w i den längsta strängen. Var tydlig med vilka antaganden du gör i din analys. Standarddatastrukturer och -algoritmer från kursen behöver inte förklaras, men däremot motiveras. Om pseudokod används måste den vara detaljerad. 2. (Lätt.) Betrakta följande Javaklass: // Trädnoder med föräldrapekare. // // Invariant: Om this.parent inte är null så gäller antingen // this.parent.left = this // eller // this.parent.right = this. public class Node<A> { public A contents; // Innehåll. public Node<A> left; // Vänster delträd. public Node<A> right; // Höger delträd. public Node<A> parent; // Förälder. Är följande implementation av enkelrotation korrekt? Motivera (gärna med figurer), och om något är fel, visa hur man kan åtgärda felet. (Eventuella problem har inget med Java att göra. Koden kompilerar utan problem.) 2
3 // Roterar upp noden child förbi sin förälder. // // Noden child samt dess förälder och förälderns förälder // måste vara icke-null. public static <A> void rotateup(node<a> child) { // Förfäder. Node<A> parent = child.parent; Node<A> grandparent = parent.parent; // Uppdatera föräldrapekare. child.parent = grandparent; parent.parent = child; // Uppdatera barnpekare. if (parent.left == child) { parent.left = child.right; child.right = parent; else { parent.right = child.left; child.left = parent; // Uppdatera pekaren från "farföräldern". if (grandparent.left == parent) { grandparent.left = child; else { grandparent.right = child; 3
4 3. Uppgiften är att konstruera en datastruktur som implementerar en variant av avbildnings-adtn ( map-adtn ). Anta att nycklar är totalt ordnade och att det finns en komparator som avgör hur två nycklar k och k är relaterade (k < k, k = k eller k > k ). ADTn har följande operationer: empty: Skapar en tom avbildning. insert(k, v): Lägger till en bindning k v till avbildningen. Om en bindning k v redan finns i avbildningen så tas den bort. lookup(k): Om en bindning k v finns i avbildningen så ger den här operationen v som svar, och annars meddelas på något lämpligt sätt att en sådan bindning saknas. remove-smaller(k): Tar bort alla bindningar k v där k < k. Övriga bindningar påverkas inte. Den här uppgiften har graderade deluppgifter: För trea: Implementera ovanstående ADT, förklara hur din implementation fungerar, och analysera operationernas tidskomplexitet. Standarddatastrukturer och -algoritmer från kursen behöver inte beskrivas i detalj. För att bli godkänd måste du se till att operationerna har följande tidskomplexiteter (antingen i värsta fall, eller amorterat): empty: O(1). insert: O(log n). lookup: O(log n). remove-smaller: O(n log n). Här är n antalet bindningar i avbildningen. Du kan anta att element kan jämföras på konstant tid. För fyra: Som för trea, men remove-smaller ska ha tidskomplexiteten O(log n). 4
5 4. Man kan sortera riktade acykliska grafer (DAGs) topologiskt genom att göra en djupet först-sökning och pusha noderna på en stack i postordning. För trea: Implementera den här algoritmen. Skriv en funktion (metod) som tar en graf och ger tillbaka en lista med grafens noder i topologisk ordning. Exempel: Graf: Möjligt resultat: 0, 1, 2, 3, 4. Var tydlig med hur du representerar grafer, och hur djupet förstsökningen utförs. Du behöver inte beskriva implementationer av stackar och listor i detalj. För fyra: Analysera din implementations tidskomplexitet (noggrant, det räcker inte att skriva djupet först-sökning tar si och så lång tid, du måste analysera din egen implementation). 5. (Svår.) Betrakta följande variant av list-adtn: empty: Skapar en tom lista. insert(x): Lägger till x sist i listan. delete-last: Tar bort och ger tillbaka listans sista element. Krav: Listan får inte vara tom. Man kan implementera den här ADTn med en dynamisk array på följande sätt: 1 empty: Allokera en array med längd ett. insert(x): Om arrayen är full: fördubbla arrayens storlek. Stoppa in x på den första lediga positionen. delete-last: Ta bort det sista elementet från arrayen. Om arrayens längd c är minst 4, och den innehåller c/4 element, halvera arrayens storlek. Ge tillbaka det sista elementet. Notera att arrayens längd hela tiden är 2 för något k N. Din uppgift är att bevisa att alla operationer tar amorterat konstant tid. 1 Notera att den här pseudokoden inte är detaljerad. 5
6 6. (Svår.) Handelsresandeproblemet kan formuleras så här: Givet en komplett, 2 viktad, oriktad graf, hitta en kortaste enkel cykel. Med andra ord, hitta en väg som besöker alla noder exakt en gång, förutom att den börjar och slutar i samma nod, och som är minst lika kort som alla andra sådana vägar. Lös följande variant av handelsresandeproblemet effektivt: Kanternas vikter är ickenegativa. Du kan anta att de är naturliga tal. Grafen uppfyller triangelolikheten: Låt d(u, v) stå för vikten av kanten mellan noderna u och v. I så fall gäller för alla noder u, v och w att d(u, w) d(u, v) + d(v, w). Du behöver inte hitta en kortaste enkel cykel, det räcker att hitta en enkel cykel som är max dubbelt så lång som de kortaste. Standarddatastrukturer och -algoritmer från kursen behöver inte förklaras. Motivera utförligt varför din lösning är korrekt och effektiv. Tips: Använd ett minsta uppspännande träd. 2 I en komplett graf finns det, för varje par av noder, en kant mellan noderna. 6
7 Lösningsförslag för tentamen i Datastrukturer (DAT036) från Nils Anders Danielsson 1. Låt oss benämna indatalistan strängar. Vi kan börja med att beräkna varje strängs frekvens genom att använda en hashtabell som mappar strängar till frekvenser: frekvenser new hashtabell för varje sträng s i strängar om s f finns i frekvenser frekvenser.insert(s, f + 1) annars frekvenser.insert(s, 1) Låt oss säga att listan innehåller n strängar, och att den längsta strängen innehåller w tecken. Det är då rimligt att anta att hashfunktionen kan beräknas på O(w) steg. Om vi vidare antar att hashfunktionen är perfekt 1 så tar insättning/uppslagning i hashtabellen också O(w) tidsenheter (amorterat), och koden ovan tar totalt O(wn) tidsenheter. Låt oss nu extrahera en lista med par (s, f) av strängar och frekvenser: sträng-frekvens-par frekvenser.list-with-bindings() Den här konverteringen tar O(n) tidsenheter, om hashtabellens lastfaktor λ c för någon konstant c oberoende av n. Nu kan vi sortera listan m a p andra komponenten, i fallande ordning: sträng-frekvens-par.sort(descending) Här är descending en komparator som, då p = (s, f ) och p = (s, f ) jämförs, säger p < p om f > f, p = p om f = f, och p > p om f < f. Sorteringen kan utföras med O(n log n) jämförelser, och jämförelserna tar konstant tid (givet att vi använder en uniform kostnadsmodell), så tidskomplexiteten blir O(n log n). 1 Knappast realistiskt, men förhoppningsvis inte alltför långt från sanningen med realistiska indata. 1
8 Till sist kan vi skriva ut frekvenserna: för varje par (s, f) i sträng-frekvens-par skriv ut s följt av en radbrytning Om vi antar att tiden för en utskrift är O(c), där c är antalet tecken i strängen, så är tidskomplexiteten för utskriften O(wn). Den totala tidskomplexiteten blir O(n(w + log n)). 2. Implementationen är inte korrekt. Betrakta följande situation: p g.. c s l r Efter ett anrop av rotateup(c) får vi följande situation: g.. c l p r s Notera att vi inte har uppdaterat föräldrapekaren för noden r, vilket betyder att invarianten för Node är bruten: r.parent null, men ändå har vi varken r.parent.left = r eller r.parent.right = r. Man kan åtgärda felet genom att alltid uppdatera föräldrapekare och barnpekare samtidigt (se inlämningsuppgift 6.3 från 2011 års upplaga av kursen). 3. Man kan implementera ADTn med hjälp av ett splayträd. Operationerna empty, insert och lookup är de vanliga splayträdoperationerna, och har de vanliga tidskomplexiteterna (amorterat): empty: O(1). insert: O(log n). lookup: O(log n). 2
9 Det återstår att implementera remove-smaller(k). Vi kan göra det på följande sätt: Försök hitta minsta nyckeln större än eller lika med k. Om det inte finns någon sådan nyckel så är alla nycklar mindre än k, och då kan vi avsluta genom att skapa ett nytt, tomt träd. Om det finns någon sådan nyckel, splaya upp motsvarande nod till trädets rot, och radera den nya rotens vänstra delträd (som nu innehåller alla nycklar mindre än k). Med detaljerad rekursiv 2 pseudokod: // Hittar den nod, i delträdet vars rot är r, som har den // minsta nyckeln som är större än eller lika med k. Om // det inte finns någon sådan nod ges istället null som // svar. Roten r får vara null. Node find-closest-larger-key(key k, Node r) { if (r == null) { return null; if (r.key == k) { return r; else if (r.key < k) { return find-closest-larger-key(k, r.right); else { // r.key > k Node n = find-closest-larger-key(k, r.left); if (n == null) return r; else return n; remove-smaller(k) { // Antag att trädklassen innehåller exakt en // tillståndsvariabel, root, som pekar på rotnoden. Node larger = find-closest-larger-key(k, root); if (larger == null) { root = null; else { splay(larger); larger.left = null; 2 En iterativ implementation kan vara bättre, eftersom den undviker problem med stack overflow. 3
10 Hur effektiv är implementationen ovan? Analysen av splaying visar att en splayträdsoperation som innefattar sökning efter en nod och sedan splaying av den noden till trädets topp (plus O(1) extra arbete för varje nod längs sökvägen) har tidskomplexiteten O(log n) (amorterat, och givet att jämförelser tar konstant tid). I remove-smaller utförs inte splayingen om find-closest-larger-key inte hittar någon lämplig nod, men det gör inget: Vi skulle kunna ändra koden ovan så att den splayar upp den sista noden som besöktes även om ingen lämplig nod hittas, men eftersom trädet raderas i nästa steg skulle det inte påverka slutresultatet koden uppför sig som om splayingen faktiskt utfördes. Raderingen av noder med små nycklar (genom att sätta larger.left eller root till null) tar konstant tid och ökar inte trädets potential, så den amorterade tidskomplexiteten är O(1). Slutsatsen blir att den amorterade tidskomplexiteten för remove-smaller är O(log n). 4. Grafrepresentation: Noder är numrerade från 0 till n 1, där n är antalet noder. Grafstrukturen representeras med grannlistor: en array med storlek n, där n är antalet noder, och där position i innehåller en länkad lista med nod is direkta efterföljare. Vi kan implementera algoritmen i uppgiftsspecifikationen på följande sätt (pseudokod): List<Integer> topological-sort(graph g) { // Stacken. List<Integer> stack = new Stack<Integer>; // Array som visar om en viss nod besökts. Boolean visited[] = new Boolean[g.number-of-nodes]; // Initialisering av arrayen. for (Integer i = 0; i < g.number-of-nodes; i++) visited[i] = false; // En lokal procedur med tillgång till variablerna // stack och visited. void dfs(integer i) { visited[i] = true; // (A) for all immediate successors j of i in g { if (not visited[j]) dfs(j); // (B) stack.push(i); // (C) 4
11 // Djupet först-sökning (D). for (Integer i = 0; i < g.number-of-nodes; i++) { if (not visited[i]) dfs(i); // Den topologiskt sorterade listan. return stack; Tidskomplexitetsanalys (givet en graf med noder V och kanter E): Allokering av stack: O(1). Allokering och initialisering av array: O( V ). Proceduren dfs anropas exakt en gång för varje nod, så raderna A och C körs båda V gånger, och tar konstant tid varje gång: O( V ). Loopen Bs kropp körs en gång för varje kant, och varje iteration tar konstant tid (om man inte räknar tiden för dfs(j)): O( E ). Loopen Ds kropp tar också konstant tid (om man inte räknar tiden för dfs(i)): O( V ). Totalt: O( V + E ). 5. Låt oss använda potentialmetoden med följande potentialfunktion (där c är arrayens längd, eller kapacitet, och n är listans längd): Ψ(c, n) = k c 2n. Tanken är att potentialen är minst när arrayen är halvfull, och ökar ju närmare vi kommer en fördubbling/halvering av storleken; k är en positiv konstant vars värde förhoppningsvis faller ut från analysen nedan. Som ett specialfall kan vi definiera att potentialen är 0 innan vi kört empty. Är potentialfunktionen OK? Ja, i och med att potentialen är ickenegativ så är ursprungspotentialen mindre än eller lika med alla möjliga potentialer. Låt oss nu analysera operationerna: empty: Tar konstant tid, och ökar potentialen från 0 till 1. Den amorterade tidskomplexiteten är alltså O(1). insert: Om vi inte fördubblar arrayen så tar insert konstant tid, och potentialen ökar med Ψ(c, n + 1) Ψ(c, n) = k c 2(n + 1) k c 2n, där c och n är kapaciteten och längden innan vi satt in det nya elementet. En enkel fallanalys (c 2n, c = 2n + 1 och c 2(n + 1)) 5
12 visar att ökningen är som mest 2k. Den amorterade tidskomplexiteten är då som mest O(1) + 2k, vilket är O(1) eftersom k är en konstant. Om vi fördubblar arrayens kapacitet från c till 2c så är tidskomplexiteten av insert O(c) (vi kopierar c element och sätter in ett nytt). Potentialförändringen är Ψ(2c, c + 1) Ψ(c, c) = k 2c 2(c + 1) k c 2c = k(c 2). Den amorterade tidskomplexiteten är O(c) k(c 2), vilket är O(1) om k kan väljas tillräckligt stor. delete-last: Borttagningsoperationen kan analyseras på motsvarande sätt. Om kapaciteten inte halveras är den amorterade tidskomplexiteten (notera att n 1) O(1) + Ψ(c, n 1) Ψ(c, n) = O(1) + k c 2(n 1) k c 2n O(1) + 2k = O(1). Om kapaciteten halveras är den amorterade tidskomplexiteten (notera att c är en tvåpotens och c 4) O(c) + Ψ c 2, c 4 Ψ c, c = O(c) + k c 2 2 c 4 k c 2 c = O(c) 3 2 kc. Här får vi återigen att den amorterade tidskomplexiteten är O(1) om k kan väljas tillräckligt stor. M a o blir den amorterade tidskomplexiteten för alla operationer O(1) om vi bara låter k vara tillräckligt stor. 6. Algoritm (för grafer med minst två noder): Beräkna ett minsta uppspännande träd T. Ett sådant träd existerar eftersom grafen är sammanhängande. Gör en djupet först-sökning i T (inte grafen), med början i en godtycklig nod v, och lägg varje nod sist i en länkad lista p första gången noden besöks. Om man sedan lägger till v sist i listan så representerar p en enkel cykel (eftersom grafen är komplett). Den här cykeln är algoritmens resultat. 6
13 Korrekthet Observera först att trädets totala vikt inte kan vara större än den kortaste enkla cykelns vikt w, för om man tar bort en kant från cykeln så får man ett uppspännande träd, och alla kanter har ickenegativa vikter. Notera också att djupet först-sökningen i algoritmens andra steg följer varje kant i T exakt 3 två gånger. Beteckna motsvarande väg med p. Den här vägens totala vikt är max 2w. Allt som återstår är att visa att vägen p inte är tyngre/längre än p. Vägen p har i princip konstruerats genom att utgå från p och byta ut vissa vägsnuttar v, v,, v (i 3) mot genvägar v, v (eftersom noderna v,, v redan hade besökts). Triangelolikheten medför att de här genvägarna aldrig är längre än ursprungsvägsnutten: d(v, v ) d(v, v ) + d(v, v ) Alltså är p max lika lång som p. d(v, v ). Effektivitet Antag att grafen har n noder. Då har den θ(n ) kanter (eftersom den är komplett). Beräkning av minsta uppspännande träd med Prims algoritm tar O(n ) steg (om man väljer rätt variant av algoritmen, och givet att det tar konstant tid att jämföra två vikter), och djupet först-sökningen tar O(n) steg (eftersom trädet innehåller n 1 kanter och vi bara gör konstant mycket extra arbete per nod och kant). Alltså är tidskomplexiteten O(n ), vilket är effektivt eftersom grafen innehåller θ(n ) kanter. 3 Eftersom är ett träd. 7
Lösningsförslag för tentamen i Datastrukturer (DAT036) från
Lösningsförslag för tentamen i Datastrukturer (DAT036) från 2011-12-16 Nils Anders Danielsson 1. Låt oss benämna indatalistan strängar. Vi kan börja med att beräkna varje strängs frekvens genom att använda
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.
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:
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
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
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.
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
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
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
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
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
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ö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
Föreläsning Datastrukturer (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-18 Idag Mer om grafer: Minsta uppspännande träd (för oriktade grafer). Prims algoritm. Kruskals algoritm. Djupet först-sökning. Cykel
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
Föreläsning 8 Datastrukturer (DAT037)
Föreläsning 8 Datastrukturer (DAT037) Fredrik Lindblad 1 22 november 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
Föreläsning 4 Datastrukturer (DAT037)
Föreläsning 4 Datastrukturer (DAT07) Fredrik Lindblad 1 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat07 1 Innehåll
Föreläsning 8 Datastrukturer (DAT037)
Föreläsning 8 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-23 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Förra
Föreläsning Datastrukturer (DAT037)
Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-11-23 Idag Mer om grafer: Minsta uppspännande träd (för oriktade grafer). Djupet först-sökning. Minsta uppspännande träd Träd (utan rot)
Föreläsning Datastrukturer (DAT037)
Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-12-14 Idag Frågor? Är något oklart inför tentan? Sammanfattning Exempel från föreläsning 1 Dåligt val av datastruktur public class Bits {
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ösningsförslag till tentamen Datastrukturer, DAT037,
Lösningsförslag till tentamen Datastrukturer, DAT037, 2018-01-10 1. Båda looparna upprepas n gånger. s.pop() tar O(1), eventuellt amorterat. t.add() tar O(log i) för i:te iterationen av första loopen.
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ösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), Tiden det tar att utföra en iteration av loopen är oberoende av värdet på
Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), 2017-01-11 1. Loopen upprepas n gånger. getat på en dynamisk array tar tiden O(1). member på ett AVL-träd av storlek n tar tiden O(log n).
Föreläsning 10 Datastrukturer (DAT037)
Föreläsning 10 Datastrukturer (DAT037) Fredrik Lindblad 1 29 november 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
Föreläsning 5 Datastrukturer (DAT037)
Föreläsning 5 Datastrukturer (DAT037) Nils Anders Danielsson, Fredrik Lindblad 2016-11-14 Förra gången: Cirkulära arrayer Prioritetskö Binära heapar Leftistheapar merge Det verkar inte gå att slå ihop
Lösningsförslag till tentamen Datastrukturer, DAT037,
Lösningsförslag till tentamen Datastrukturer, DAT037, 2018-04-05 1. q.dequeue() tar O(1) (eventuellt amorterat) s.contains(x) tar O(1) pq.add(x) tar O(log i) I värsta fall exekveras innehållet i if-satsen.
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
Föreläsning Datastrukturer (DAT037)
Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-11-16 Idag Mängder, avbildningar. Hashtabeller. Sortering. Pseudokod Blandning av programmeringsspråk, matematisk notation och naturligt
Föreläsning Datastrukturer (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2012-11-05 Repetition Förra gången: Listor, stackar, köer. Länkade listor, pekarjonglering. Idag: Cirkulära arrayer. Dynamiska arrayer. Amorterad
Föreläsning 13 Datastrukturer (DAT037)
Föreläsning 13 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-12-14 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Sammanfattning
Föreläsning 13 Datastrukturer (DAT037)
Föreläsning 13 Datastrukturer (DAT037) Fredrik Lindblad 1 11 december 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
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
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,
Föreläsning 7 Datastrukturer (DAT037)
Föreläsning 7 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-21 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Förra
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
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
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
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
Föreläsning 5: Grafer Del 1
2D1458, Problemlösning och programmering under press Föreläsning 5: Grafer Del 1 Datum: 2006-10-02 Skribent(er): Henrik Sjögren, Patrik Glas Föreläsare: Gunnar Kreitz Den här föreläsningen var den första
Föreläsning 6 Datastrukturer (DAT037)
Föreläsning 6 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-17 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Förra
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:
Lösningar Datastrukturer TDA
Lösningar Datastrukturer TDA416 2016 12 21 roblem 1. roblem 2. a) Falskt. Urvalssortering gör alltid samma mängd av jobb. b) Sant. Genom att ha en referens till sista och första elementet, kan man nå både
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
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
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 Det är extra mycket
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,
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
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
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
Föreläsning 2 Datastrukturer (DAT037)
Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 1 november 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
Tentamen Datastrukturer D DAT 036/DIT960
Tentamen Datastrukturer D DAT 036/DIT960 17 december 2010 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 0736-341480 eller ankn 1035 Max poäng på tentamen: 60. Betygsgränser, CTH: 3 = 24 p, 4 = 36 p, 5 =
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
Självbalanserande AVL-träd Weiss, avsnitt 4.4
Självbalanserande AVL-träd Weiss, avsnitt 4.4 Peter Ljunglöf DAT036, Datastrukturer 30 nov 2012 1 Balanserade träd Nodbalanserat träd: skillnaden i antalet noder mellan vänster och höger delträd är högst
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
Föreläsning 6 Datastrukturer (DAT037)
Föreläsning 6 Datastrukturer (DAT037) Fredrik Lindblad 1 15 november 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
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
Självbalanserande träd AVL-träd. Koffman & Wolfgang kapitel 9, avsnitt 1 2
Självbalanserande träd AVL-träd Koffman & Wolfgang kapitel 9, avsnitt 1 2 1 Balanserade träd Nodbalanserat träd: skillnaden i antalet noder mellan vänster och höger delträd är högst 1 Höjdbalanserat träd:
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
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:
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
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
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:
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.
Grafer MST Top. sortering Starkt samm. komponenter Kortaste avstånd. Grafalgoritmer 1. Douglas Wikström KTH Stockholm
Grafalgoritmer 1 Douglas Wikström KTH Stockholm popup-help@csc.kth.se Oriktade och riktade grafer Definition. En oriktad graf består av en mängd noder V och en mängd kanter E, där en kant är ett oordnat
Tentamen, Algoritmer och datastrukturer
UNDS TEKNISKA ÖGSKOA (6) Institutionen för datavetenskap Tentamen, Algoritmer och datastrukturer 23 8 29, 8. 3. Anvisningar: Denna tentamen består av fem uppgifter. Totalt är skrivningen på 36 poäng och
Lösningsförslag till exempeltenta 1
Lösningsförslag till exempeltenta 1 1 1. Beskriv hur binärsökning fungerar. Beskriv dess pseudokod och förklara så klart som möjligt hur den fungerar. 2 Uppgift 1 - Lösning Huvudidé: - Titta på datan i
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
Träd, binära träd och sökträd. Koffman & Wolfgang kapitel 6, avsnitt 1 4
Träd, binära träd och sökträd Koffman & Wolfgang kapitel 6, avsnitt 1 4 1 Träd Träd är ickelinjära och hierarkiska: i motsats till listor och fält en trädnod kan ha flera efterföljare ( barn ) men bara
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
Fredag 10 juni 2016 kl 8 12
KTH CSC, Alexander Baltatzis DD1320/1321 Lösningsförslag Fredag 10 juni 2016 kl 8 12 Hjälpmedel: En algoritmbok (ej pythonkramaren) och ditt eget formelblad. För betyg E krävs att alla E-uppgifter är godkända,
TDDI16 Datastrukturer och algoritmer. Algoritmanalys
TDDI16 Datastrukturer och algoritmer Algoritmanalys 2017-08-28 2 Översikt Skäl för att analysera algoritmer Olika fall att tänka på Medelfall Bästa Värsta Metoder för analys 2017-08-28 3 Skäl till att
Datastrukturer. föreläsning 9. Maps 1
Datastrukturer föreläsning 9 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 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:
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
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
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.)
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
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
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:
Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt
Binära träd (forts) Ett binärt träd kan lagras i ett enda sammanhängande minne Roten har index 1 Vänster barn till nod i har index 2*i Höger barn till nod i har index 2*i + 1 Föräldern till nod i har index
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
Grundläggande datalogi - Övning 4
Grundläggande datalogi - Övning 4 Björn Terelius November 21, 2008 Definitioner Olika mått på komplexitet Definition En funktion f sägs vara O(g) om det existerar konstanter c, N så att f (n) < cg(n) för
Algoritmer och datastrukturer 2012, fo rela sning 8
lgoritmer och datastrukturer 01, fo rela sning 8 Komplexitet för binära sökträd De viktigaste operationerna på binära sökträd är insert, find och remove Tiden det tar att utföra en operation bestäms till
Föreläsning 1. Introduktion och sökning i graf. Vad är en algoritm?
Föreläsning 1. Introduktion och sökning i graf Vad är en algoritm? Först: Vad är ett problem? Består av indata och ett mål. Indata: [En beskrivning av en struktur.] Mål: [Kan vara Ja/Nej, ett tal eller
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ä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
Föreläsning 11 Datastrukturer (DAT037)
Föreläsning 11 Datastrukturer (DAT037) Fredrik Lindblad 1 4 december 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
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 2015-05-26 Skrivtid: 0800 1300 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
TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.
1 (7) 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
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
if (n==null) { return null; } else { return new Node(n.data, copy(n.next));
Inledning I bilagor finns ett antal mer eller mindre ofullständiga klasser. Klassen List innehåller några grundläggande komponenter för att skapa och hantera enkellänkade listor av heltal. Listorna hålls
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
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
Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.
Programmering för Språkteknologer II Markus Saers markus.saers@lingfil.uu.se Rum -040 stp.lingfil.uu.se/~markuss/ht0/pst Innehåll Associativa datastrukturer Hashtabeller Sökträd Implementationsdetaljer
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.
public boolean containskey(string key) { return search(key, head)!= null; }
Tentamen Programmeringsteknik II 2009-05-26 med lösningar Skrivtid: 0900-1200 Uppgifter 1. Programbilagan ListMap.java innehåller en klass som implementerar en avbildning mellan mängden strängar och mängden
Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:
Föreläsning 7 Innehåll Rekursion Rekursivt tänkande: Hur många år fyller du? Ett år mer än förra året! Rekursion Rekursiv problemlösning Binärsökning Generiska metoder Rekursiv problemlösning: Dela upp
Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg 2013 12 19, 8.00 13.00 Anvisningar: Denna tentamen består av 4 uppgifter. Preliminärt
Tentamen Programmeringsteknik II Inledning. Anmälningskod:
Tentamen Programmeringsteknik II 2016-01-11 Inledning I bilagan finns ett antal mer eller mindre ofullständiga klasser. Några ingår i en hierarki: List, SortedList, SplayList och ListSet enligt vidstående