ID1020: Union-Find. Dr. Jim Dowling kap Slides adapted from Algorithms 4 th Edition, Sedgewick.
|
|
- Jonathan Sundberg
- för 9 år sedan
- Visningar:
Transkript
1 ID1020: Union-Find Dr. Jim Dowling kap. 1.5 Slides adapted from Algorithms 4 th Edition, Sedgewick.
2 Att utvecka en algoritm Stegen för att utveckla en användbar algoritm: - Bygg en modell av problemet. - Hitta en algoritm för att lösa problemet. - Är algoritmen snabb nog? Passar den i minnet? - Om inte, kom på varför. - Hitta ett sätt att fixa problemet. - Iterera tills man är njöd. Sedan, ska man analysera algoritm. 2
3 Dynamisk-konnektivitet problem Givet en mängd av N objekt, programmet ska stödja två operationer: - Union: skapa en förbindelse mellan (connect) två objekt. - Find: Finns det en stig (path) som förbinder två objekt? connect 4 and 3 connect 3 and 8 connect 6 and connect 9 and 4 connect 2 and 1 are 0 and 7 connected? are 8 and 9 connected? connect 5 and 0 connect 7 and 2 connect 6 and 1 connect 1 and 0 are 0 and 7 connected? x
4 Ett större konnektivitetsproblem Finns det en stig som förbinder p till q? Ja! p q 4
5 Bygg en modell av objekten Applikationer manipulerar objekt av alla möjliga typer. - Pixlar i en digitalbild. - Dator i ett nätverk. - Kompisar i ett socialt nätverk. - Transistorer i ett datorchip. - Element i en matematisk mängd. - Variabelnamn i ett Fortran program. När man programmerar, underlättar det att benämna objekt 0 till N 1. - Använd ett heltal som en array index. - Ta bort alla detaljer som inte är relevant till union-find. 5
6 Bygg en modell av förbindelserna Vi antar "är förbunden till" (connected to) är en ekvivalensrelation: - Reflexiv: p är förbunden till p. - Symmetrisk: om p är förbunden till q, q är förbunden till p. - Transitiv: om p är förbunden till q och q är förbunden till r, p är förbunden till r. En ekvivalensrelation partitionerar objekt i ekvivalensklasser som kallas för connected components. Sammanhängande komponent (connected component). Största mängd av objekt som har ömsesidiga förbindelser { 0 } { } { } 3 (sammanhängande) komponenter 6
7 Att implementera Find och Union operationer Find. I vilken komponent hittar vi objekt p? Connected. Finns objekt p och q i samma komponent? Union. Ersätt komponenterna som innehåller objekt p och q med en ny komponent som inkluderar både deras komponenterna, dvs deras union" union(2, 5) { 0 } { } { } { 0 } { } 3 komponenter 2 komponenter 7
8 Union-find datatyp (API) Mål. Bygg en effektiv datastruktur för union-find. - Antal objekt N kan vara enorm. - Antal operationer M kan också vara enorm. - Klienter kan anropa union och find operationer i vilken ordning som helst. public class UF UF(int N) void union(int p, int q) initialize union-find data structure with N singleton objects (0 to N 1) add connection between p and q int find(int p) component identifier for p (0 to N 1) boolean connected(int p, int q) are p and q in the same component? 8
9 connected() connected() kan implementeras med bara en kodrad: public boolean connected(int p, int q) { } return find(p) == find(q);
10 Ett exempel Klient till UF API:et Läs in ett antal objekt N från stdin (standard input). Upprepa stegen nedan: 1. läs in ett par heltal från stdin 2. om de inte är förbundna ännu, skapa en förbindelse mellan dem och skriv ut paret public static void main(string[] args) { int N = StdIn.readInt(); UF uf = new UF(N); while (!StdIn.isEmpty()) { } int p = StdIn.readInt(); int q = StdIn.readInt(); if (!uf.connected(p, q)) { } uf.union(p, q); StdOut.println(p + " " + q); % more tinyuf.txt antal object N redan förbundna } 1
11 Quick-find
12 Quick-find [ivrig metod] Datastruktur. - Integer array id[] av längd N. - Förklaring: id[p] är id:n av komponenten som innehåller p. p och q är förbundna iff (om och endast om) de har samma id. id[] , 5 och 6 är förbundna 1, 2, och 7 är förbundna 3, 4, 8, och 9 är förbundna
13 Quick-find Datastruktur. - Integer array id[] av längd N. - Förklaring: id[p] är id:n av komponenten som innehåller p id[] Find. Vad är id av p? Förbundna? Har p och q samma id? id[6] = 0; id[1] = 1 6 och 1 är inte förbundna Union. För att förbinda komponenter som innehåller p och q, ändra alla element vars id = id[p] till id[q] id[] efter ha slagit hop 6 och 1 problem: många värden kan förändras 1
14 Quick-find demo id[]
15 Quick-find demo id[]
16 Quick-find: Java implementation public class QuickFindUF { private int[] id; public QuickFindUF(int N) { id = new int[n]; for (int i = 0; i < N; i++) { id[i] = i; } } ge varje objekt samma komponent-id som dess egen id (N array accesser) } public boolean find(int p) { return id[p]; } public void union(int p, int q) { int pid = id[p]; int qid = id[q]; for (int i = 0; i < id.length; i++) { if (id[i] == pid) id[i] = qid; } } returnera id av p (1 array access) ändra alla element med id[p] till id[q] (tar som mest 2N + 2 array accesser) 1
17 Quick-find är för långsam Kostnadsmodell. Antal array accesser (array läsningar och skrivningar). algoritm initialize union find connected quick-find N N 1 1 beräkningstiden för array accesser kvadratisk Union är för dyrt. Det tar N 2 array accesser för att bearbeta en sekvens av N union operationer på N objekt. 1
18 Kvadratisk algoritmer skalar inte Tumregeln (för nu) operationer per sekund minnesord av huvudminne. förhållanden har hålt i sig sedan 1950! - Kan komma åt alla minnesord på ungefär 1 sekund. Stort problem för quick-find: - Med, 10 9 union operationer på 10 9 objekt, skulle quick-find exekverar mer än operationer => 30+ år av beräkningstid! Kvadratisk algoritmer skalar inte med bättre teknologi. - Ny dator kan vara 10x snabbare. - Men, datorn har 10x mer minnet => måste lösa ett problem som är bara 10x större. - Med en kvadratisk algoritm, => 10x långsammare! 18
19 Quick Union
20 Quick-union [lat metod] Datastruktur. - Integer array id[] av längd N. - Förklaring: id[i] är förälder av i. - Roten (Root) av i är id[id[id[...id[i]...]]]. fortsätta tills den inte förändras (inga cyklar i algoritm) id[] föräldern av 3 är 4 roten av 3 är 9 20
21 Quick-union Datastruktur. - Integer array id[] av längd N. - Förklaring: id[i] är förälder av i. - Roten av i är id[id[id[...id[i]...]]] id[] q p 3 Find. Vad är roten av p? Connected. Delar p och q samma rot? Union. För att förbinda komponenter som innehåller p och q, tilldelar id av p's rot till id av q's rot. id[] roten av 3 är 9 roten av 5 är 6 3 och 5 är inte förbundna q bara ett värde förändras p 3 21
22 Quick-union demo id[]
23 Quick-union demo id[]
24 Quick-union: Java implementation public class QuickUnionUF { private int[] id; public QuickUnionUF(int N) { id = new int[n]; for (int i = 0; i < N; i++){ id[i] = i; } } public int find(int i) { while (i!= id[i]) { i = id[i]; } return i; } public void union(int p, int q) { int i = find(p); int j = find(q); id[i] = j; } } ge varje objekt samma komponent-id som dess egen id (N array accesser) följ föräldrapekare tills man når roten (djupet av trädet array accesser) byt roten av p för att peka till roten av q (det tar djupet av p och q array accesser) 24
25 Quick-union är också för långsamt Kostnadsmodell. Antal array accesser. algoritm initialize union find connected quick-find N N 1 1 quick-union N N N N worst case inkluderar kostnaden av att hitta roten Quick-find defekt. - Union är för dyrt. (N array accesser). - Träden är flat", men det kostar för mycket att behålla dem flat. Quick-union defekt. - Träden kan bli för djupa. - Find/connected för dyrt (kan ta N array accesser). 26
26 Union Find förbättringar
27 Förbättring 1: Viktning Viktad quick-union. - Ändra på quick-union för att undvika djupa träd. - Spara storleken av trädet (dvs., antal objekt i trädet) i ett attribut. - Balansera träden genom att länka roten av det mindre trädet till roten av det större trädet. 28
28 Viktad quick-union demo id[]
29 Viktad quick-union demo id[]
30 Quick-union och viktad quick-union exempel 31
31 Viktad quick-union: Java implementation Datastruktur. Samma som quick-union, men vi behöver en extra array sz[i] för att räkna antal objekt i trädet med roten i. Find/connected. Samma som quick-union. Union. Ändringar till quick-union: - Länka roten av det mindre trädet till roten av det större trädet. - Uppdatera sz[] array. } int i = find(p); int j = find(q); if (i == j) return; if (sz[i] < sz[j]) { } else { id[i] = j; sz[j] += sz[i]; id[j] = i; sz[i] += sz[j]; 32
32 Viktad quick-union analys Körtiden. - Find: tar tid proportionellt mot djupet av p. - Union: tar konstant tid, givet rotnoderna. Sats. Djupet av nod x är maximalt lg N. lg = base-2 logarithm djupet 3 2 x N = 11 djupet(x) = 3 lg N 33
33 Viktad quick-union analys Körtiden. - Find: tar tid proportionellt mot djupet av p. - Union: tar konstant tid, givet rotnoderna. lg = base-2 logarithm Sats. Djupet av nod x är maximalt lg(n). Bevis. Vad är det som gör att djupet av objekt x ökar? - Ökar med 1 när trädet T1 som innehåller x sammanfogar (merges) med ett annat träd T2. - Storleken av trädet som innehåller x minst fördubblas eftersom T 2 T 1. - Storleken av trädet som innehåller x kan fördubblas som mest lg N gångar. Varför? lg N T2 T1 x 16 N 34
34 Viktad quick-union analys Körtiden. - Find: tar tid proportionellt mot djupet av p. - Union: tar konstant tid, givet rotnoderna. Sats. Djupet av nod x är maximalt lg(n). algoritm initialize union find connected quick-find N N 1 1 quick-union N N N N viktad QU N lg N lg N lg N inkluderar kostnaden av att hitta roten Kommer algoritmen att terminera med garanterad acceptabelt prestanda? Nej, men det går lätt att förbättra den. 35
35 Förbättring 2: stig komprimering Quick union med stig komprimering (path compression). Precis efter ha beräknat roten av p, sätt id[] av varje examinerade nod så att den pekar till denna roten. 0 root x 9 p
36 Förbättring 2: stig komprimering Quick union med stig komprimering. Precis efter ha beräknat roten av p, sätt id[] av varje examinerade nod så att den pekar till denna roten. 0 root p x
37 Förbättring 2: stig komprimering Quick union med stig komprimering. Precis efter ha beräknat roten av p, sätt id[] av varje examinerade nod så att den pekar till denna roten. 0 root p x
38 Förbättring 2: stig komprimering Quick union med stig komprimering. Precis efter ha beräknat roten av p, sätt id[] av varje examinerade nod så att den pekar till denna roten. 0 root p x
39 Förbättring 2: stig komprimering Quick union med stig komprimering. Precis efter ha beräknat roten av p, sätt id[] av varje examinerade nod så att den pekar till denna roten. x 0 root p Resultatet. Nu, find() har bi-effekten att den komprimerar trädet, dvs minska djupet av trädet. 40
40 Stig komprimering: Java implementation Tvåstegs implementation: lägg till en andra loop till find() för att tilldela id[] av varje examinerade nod till roten. Enklare ettstegs-variant (stighalvering): Gör att varannan nod i stigen pekar till sin farfar (grandparent). public int find(int i) { while (i!= id[i]) { id[i] = id[id[i]]; i = id[i]; } return i; } bara en extra rad av kod behövdes I praktiken. Det finns ingen anledning att inte komprimera stigen! Den behåller träden nästan flat. 41
41 Viktad quick-union with stig komprimering: amorterad analys Sats. [Hopcroft-Ulman, Tarjan] Om man börjar med en tom datastruktur, vilken sekvens som helst av M union-find operationer på N objekt gör mindre än c ( N + M lg* N ) array accesser. - Analys kan förbättras till N + M (M, N). - Enkel algoritm med fascinerande matematik. Linjärtid algoritm för M union-find operationer på N objekt? - Kostnad inom en konstant faktor av inläsningen av data. - I teori är WQUPC (weighted quick-union with path compression) inte helt linjär. - I praktiken är WQUPC linjär. N lg* N itererade lg funktion Häpnadsväcknande fakta: Ingen linjärtid algoritm finns [Fredman-Saks]. i "cell-probe" beräkningsmodellen 42
42 Sammanfattning Slutsats. Viktad quick union (och/eller stig komprimering) möjliggör att lösa problem som annars inte hade kunnat lösas. algoritm quick-find quick-union viktad QU QU + stig komprimering viktad QU + stig komprimering worst-case time M N M N N + M log N N + M log N N + M lg* N beräkningstid för M union-find operationer på en mängd av N objekt Ex. [10 9 unions och finds med 10 9 objekt] - WQUPC minskar tiden från 30 år till 6 sekundar. - En Supercomputer hjälper inte mycket; det är en bra algoritm som möjliggör lösningen. 43
43 Union-Find applikationer
44 Union-find applikationer - Perkolation. - Spel (Go, Hex). Dynamisk konnektivitet. - Least common ancestor. - Ekvivalens av ändliga tillståndsautomater. - Hinley-Milner polymorphic type inference. - Kruskal's minsta uppspännande träd algoritm. - Matlab's bwlabel() funktion i bildbehandling. 45
45 Perkolation En abstrakt modell av många fysiska system: - N x N grid av platser (sites). - Varje plats är öppen med sannolikheten p (och blockerad med sannolikheten 1 p). - Systemet perkolerar iff topp och botten är förbundna genom öppna platser. 46
46 Perkolation En abstrakt modell av många fysiska system: - N x N grid av platser (sites). - Varje plats är öppen med sannolikheten p (och blockerad med sannolikheten 1 p). - Systemet perkolerar iff topp och botten är förbundna genom öppna platser. model system vacant site occupied site percolates electricity material conductor insulated conducts fluid flow material empty blocked porous social interaction population person empty communicates 47
47 Sannolikheten av perkolation Beror på grid storleken N och ledig plats (site vacancy) sannolikheten p. p low (0.4) does not percolate p medium (0.6) percolates? p high (0.8) percolates 48
48 Perkolation fasövergång När N är stor, teori garanterar en skarp tröskel p*. - p > p*: perkulerar med väldig hög sannolikhet. - p < p*: perkulerar med väldig låg sannolikhet. Vad är värdet av p*? 49
49 Monte Carlo simulering - Initialisera alla platser i en N-x-N grid så att deras tillstånd är blockerad (blocked). - Gör slump platser lediga tills det finns en stig mellan toppen och botten. - Ledighet procentsats (vacancy percentage) uppskatter p*. N = 20 helt ledig plats (förbunden till topp) ledig plats (inte förbunden till topp) blockerad plats 50
50 Dynamisk konnektivitet lösning för att uppskatta perkolationströskeln Hur kan man kontrollera om ett N-x-N system perkolerar? Modellera som ett dynamisk konnektivitet problem och använd union-find. N = 5 ledig plats blockerad plats 51
51 Dynamisk konnektivitet lösning för att uppskatta perkolationströskeln Hur kan man kontrollera om ett N-x-N system perkolerar? Skapa ett objekt för varje plats och tilldela de namn från 0 to N 2 1. N = ledig plats blockerad plats 52
52 Dynamisk konnektivitet lösning för att uppskatta perkolationströskeln Hur kan man kontrollera om ett N-x-N system perkolerar? Skapa ett objekt för varje plats och tilldela de namn från 0 till N 2 1. Platser befinner sig i samma komponent iff de är förbundna med lediga platser. N = 5 ledig plats blockerad plats 53
53 Dynamisk konnektivitet lösning för att uppskatta perkolationströskeln Hur kan man kontrollera om ett N-x-N system perkolerar? Skapa ett objekt för varje plats och tilldela de namn från 0 till N 2 1. Platser befinner sig i samma komponent iff de är förbundna med lediga platser. Perkolerar iff en av platsen på bottenraden (vilken som helst) är förbunden till en på toppraden (vilken plats som helst). brute-force algoritm: N 2 anrop till connected() N = 5 topprad bottenrad ledig plats blockerad plats 54
54 Dynamisk konnektivitet lösning för att uppskatta perkolationströskeln Knep. Introducera 2 virtuella platser (virtual sites) med förbindelser till topp och botten. Systemet perkolerar iff den virtuella topp-platsen är förbunden till en virtuell bottenplats mer effektivt algoritm: bara 1 anrop till connected() virtuell topp-plats N = 5 topprad bottenrad ledig plats blockerad plats virtuell bottenplats 55
55 Dynamisk konnektivitet lösning för att uppskatta perkolationströskeln Vi vill omvandla en blockerad plats till en öppen plats. Hur bygger man en model av detta? öpnna denna plats N = 5 ledig plats blockerad plats 57
56 Dynamisk konnektivitet lösning för att uppskatta perkolationströskeln Markera den nya platsen som ledig; förbinda alla sina angränsande lediga platser. upp till 4 anrop till union() öpnna denna plats N = 5 ledig plats blockerad plats 58
57 Perkolation tröskel Vad är perkolation tröskeln p*? Ungfär för large square lattices. konstant känd bara med hjälp av simuleringar En snabb algoritm möjliggör ett noggrannt svar till en vetenskaplig fråga. 59
58 Sammanfattning Union-Find är en intressant algoritm med många praktiska applikationer Med union-find som ett exempel, har vi gått igenom följande steg i utvecklingen av en algoritm: - Bygga en modell av problemet. - Hitta en algoritm för att lösa problemet. - Är den snabb nog? Passar den i minnet? - Om inte, kom på varför. - Hitta ett sätt att fixa problemet. - Iterera tills man är njöd Nästa föreläsningen: - Stackar, bags, och köer - [Enkel-sortering] 60
Ekvivalensrelationer
Abstrakt datatyp för disjunkta mängder Vi skall presentera en abstrakt datatyp för att representera disjunkta mängder Kan bl.a. användas för att lösa ekvivalensproblemet avgör om två godtyckliga element
TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find
TDDI16 Datastrukturer och algoritmer Prioritetsköer, heapar, Union/Find Prioritetsköer En vanligt förekommande situation: Väntelista (jobbhantering på skrivare, simulering av händelser) Om en resurs blir
Föreläsning 10. Grafer, Dijkstra och Prim
Föreläsning 10 Grafer, Dijkstra och Prim Föreläsning 10 Grafer Representation av grafer Dijkstras algoritm Implementation av Dijkstras algoritm Minimium spanning tree Läsanvisning och uppgifter Broarna
Föreläsning 10. Grafer, Dijkstra och Prim
Föreläsning 10 Grafer, Dijkstra och Prim Föreläsning 10 Grafer Representation av grafer Dijkstras algoritm Implementation av Dijkstras algoritm Minimium spanning tree Läsanvisning och uppgifter Broarna
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 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 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
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
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 {
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 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
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 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.
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 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
Föreläsning 10. Grafer, Dijkstra och Prim
Föreläsning 10 Grafer, Dijkstra och Prim Föreläsning 10 Grafer Representation av grafer Dijkstras algoritm Implementation av Dijkstras algoritm Minimium spanning tree Broarna i Königsberg, Euler, 17 Grafer
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
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
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
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
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 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
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 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:
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
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ö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.
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
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ö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 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 Läsanvisningar och
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
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 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
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
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket 1 Länkade listor Likadant som i Ada-kursen. 2 Stack MyStack MyStack
Föreläsning 1. Abstrakta datatyper, listor och effektivitet
Föreläsning 1 Abstrakta datatyper, listor och effektivitet Föreläsning 1 Datastrukturer Abstrakta DataTyper ADT Lista Lista och Java Collections Framework (ArrayList) Lista implementerad med en array Analys
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
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
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
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
Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till:
Länkade listor i C Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till: Dynamiskt allokerad array Arrayer allokerade på stacken Kan alltså användas till att
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Laboration 2 Datastrukturer En liten uppgift Frågor 1 Laboration 2 - Datastrukturer Länkade datastrukturer Stack Kö (En. Queue) Lista
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
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
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
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
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 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 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
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
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 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
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
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 (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-10-30 Repetition Analys av tidskomplexitet. Kostnadsmodeller. Asymptotisk komplexitet/notation. Dynamiska arrayer. Amorterad tidskomplexitet
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
ID1020: Quicksort. Dr. Jim Dowling jdowling@kth.se. kap 2.3. Slides adapted from Algoritms 4 th Edition, Sedgewick.
ID1020: Quicksort Dr. Jim Dowling jdowling@kth.se kap 2.3 Slides adapted from Algoritms 4 th Edition, Sedgewick. Quicksort Grundläggande metod. - Blanda array:n. - Partitioner så att för något värde j
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
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
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
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.
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, EDA501/EDAA20 Programmering M MD W BK L
LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen, EDA501/EDAA20 Programmering M MD W BK L 2017 05 31, 8.00 13.00 Anvisningar: Preliminärt ger uppgifterna 9 + 12 + 10 + 9 = 40 poäng.
Objektorienterad programmering E. Back to Basics. En annan version av printtable. Ett enkelt exempel. Föreläsning 10
Objektorienterad programmering E Föreläsning 10 Rekursion Länkade datastrukturer Back to Basics Exekvera programmet för hand! public class Param { public static int f(int x) { return x+1; public static
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
OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15
OMTENTAMEN I PROGRAMSPRÅK -- DVG C01 130823 kl. 08:15-13: 15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Bilaga A: BNF-definition Betygsgräns: Kurs: Max 60p, Med beröm godkänd 50p, Icke utan beröm godkänd
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
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
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
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
Föreläsning 3 Datastrukturer (DAT037)
Föreläsning 3 Datastrukturer (DAT037) Fredrik Lindblad 1 6 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat037 1
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
Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin
Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 Hjälpmedel: Inga hjälpmedel är tillåtna
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:
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
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
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
Föreläsning 3-4 Innehåll
Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå
4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &
TelefonKostnad static Math static $ & )&* +,-&. 0 +& + & 3 356+573 ) & & 6 3 3 & 3 * 6 3.:; < = 3 = 6 ; < : & >?.;,;@.A@;0,0,? @B0 C,0 > *. > 5 C D & D 5 * &! ; 66C! * C, 0 E,&! 0 F,G0 >: = = C 3 & HI
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
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
Algoritmer. Två gränssnitt
Objektorienterad programmering E Algoritmer Sökning Linjär sökning Binär sökning Tidsuppskattningar Sortering Insättningssortering Föreläsning 9 Vad behöver en programmerare kunna? (Minst) ett programspråk;
LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p
UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det
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
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
ID1020 Algoritmer och Datastrukturer
Slides adapted from Algorithms 4 th Edition, Sedgewick. ID1020 Algoritmer och Datastrukturer Dr. Jim Dowling (Examinator) jdowling@kth.se Dr. Johan Karlandar (Examinator) johank@nada.kth.se Dr. Per Brand
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
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
SMD 134 Objektorienterad programmering
SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning
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
F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander
F12 - Collections ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Collections (samlingar) En collection är ett objekt som fungerar som en samling av andra objekt En collection erbjuder
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
public static void mystery(int n) { if (n > 0){ mystery(n-1); System.out.print(n * 4); mystery(n-1); } }
Rekursion 25 7 Rekursion Tema: Rekursiva algoritmer. Litteratur: Avsnitt 5.1 5.5 (7.1 7.5 i gamla upplagan) samt i bilderna från föreläsning 6. U 59. Man kan definiera potensfunktionen x n (n heltal 0)
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
Tentamen Grundläggande programmering
Akademin för Innovation Design och Teknik Tentamen Grundläggande programmering Kurskod: DVA103 Datum 2012-06-11 Tid 14.10 16.30 Examinator: Lars Asplund Maxpoäng: 48 Betygsgränser: Betyg 3: 20 Betyg 4:
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 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER
Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER Från laboration 3 till 4 I laboration 3 har du implementerat klasser implementerat metoder i klasserna I laboration 4 kommer du att implementera
Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?
Algoritmer och datastrukturer Allmänt om kursen Kort javagrund repetition - Klasser, metoder, objekt och referensvariabler, - Hierarkiska klass strukturer - Arrayer och arrayer av objekt - Collection ramverket