Datastrukturer. föreläsning 7. Maps 1
|
|
- Ann-Marie Lind
- för 5 år sedan
- Visningar:
Transkript
1 Datastrukturer föreläsning 7 Maps 1
2 Hashtabeller Maps 2
3 Kollisioner vad gör man? Använder hinkar ( hashing in buckets, chaining ) Cellen med index i innehåller ett litet lexikon med alla nycklar med hashvärde i. Vi kallar detta en hink. Den implementeras ofta som en osorterad lista. Öppen adressering ( open addressing ): Lagra i annan ledig cell (t ex nästa lediga, men det finns andra sätt att välja den nya lediga cellen) Maps 3
4 Vilket är bäst hinkar eller öppen adressering? enklare att använda hinkar öppen adressering sparar utrymme öppen adressering mer känslig för hög belastningsfaktor både experiment och teoretiska studier har visat att tidskomplexiteten oftast är lika bra eller bättre med hinkar Maps 4
5 Hashfunktioner Man brukar konstruera en hashfunktion h genom att sätta samman två funktioner: h = h 2 o h 1 Hashkodningen: h 1 : keys integers Kompressionsfunktionen: h 2 : integers [0, N 1] Maps 5
6 Hashkodning av strängar En sträng är en lista av tecken. Varför inte bara summera hashkoderna för tecknen? Många kollisioner! T ex temp01 och temp10 får samma hashkod och stop, tops, pots, spot får också samma hashkod. Maps 6
7 Polynomiella hashkoder Koda strängen c 0 c 1 c n Typkonvertera tecknen till heltal vi får i 0 i 1 i n Beräkna polynomet i 0 +i 1 a+ + i n a n för lämpligt a (t ex 33, 37, 39, 41) Maps 7
8 Hashkoder för objekt Javas klass Object har en metod hashcode() I många Javaimplementeringar ger detta en heltalstolkning av objektets minnesadress! Detta är ej så bra, likadana objekt lagrade på olika ställen får olika hashkoder! Det är bättre att implementera egna hashkoder! Maps 8
9 Komprimering Enklast med modulo-metoden h 2 (y) = y mod N Hashtabellens storlek N vanligen ett primtal. Försök sprida ytterligare, t ex MADmetoden (multiplicera, addera och dividera): h 2 (y) = (ay + b) mod N a och b är slumpvis valda naturliga tal så att a mod N 0 N primtal Maps 9
10 Tidskomplexitet Om vi har perfekt hashfunktion (inga kollisioner) är sökning, insättning och borttagning O(1) I värsta fall är alla dessa operationer O(n), utom insättning i hashtabeller med hinkar som är O(1) även i värsta fall. Varför? Belastningsfaktorn α = n/n påverkar effektiviten hos operationerna. Maps 10
11 Hashtabeller: fördelar och nackdelar Fördelar: - Snabb: O(1) i praktiken vid låg belastningsfaktor - Särskilt bra för stort lexikon - Fördel om max storlek känd i förväg Nackdelar: - Hashfunktionen kan ta signifikant tid att beräkna - Risk för dålig hashfunktion och kollisioner (säkerhetsattack) - Ineffektivt att räkna upp elementen 11
12 Grafer Maps 12
13 Grafer ett exempel En oriktad graf: Noderna är flygplatser (trebokstavskombinationer) Det finns en båge mellan två noder omm det finns en flyglinje mellan motsvarande flygplatser. Till varje båge finns dessutom ett tal som representerar avståndet mellan flygplatserna. PVD ORD SFO LGA HNL 337 LAX DFW MIA Maps 13
14 Riktade och oriktade grafer I en riktad graf har bågarna en riktning. I en oriktad graf saknar bågarna riktning. Exempel. - Ett vägnät med enkelriktade gator kan representeras som en riktad graf - Ett vägnät utan enkelriktade gator kan representeras som en oriktad graf - Obs att en oriktad graf kan ses som ett specialfall av en riktad graf! Maps 14
15 Vad är en graf, matematiskt? En riktad graf är ett par (V,E) där V är en mängd av noder (hörn) E C VxV är en mängd av ordnade par av noder som kallas bågar (kanter). Om (v,w) är en båge kallas v bågens källa och w bågens mål. Det kan dessutom finnas ytterligare information om bågen, t ex en vikt eller ett namn. En oriktad graf definieras på samma sätt som en riktad graf, med den enda skillnaden att bågarna är oordnade par. Om (v,w) är en båge i en oriktad graf kallar vi v och w bågens ändpunkter. De oriktade graferna kan betraktas som symmetriska riktade grafer, dvs riktade grafer med egenskapen att om (v,w) är en båge i E så är också (w,v) en båge i E. Maps 15
16 Riktade och oriktade bågar Riktade bågar ordnade par av bågar (u,v) u är källan (ursprungsnoden) v är målet (målnoden) Exempel: bågar är flyglinjer från en flygplats till en annan. Vi har här dessutom information om flyglinjens nummer i bågen. Oriktade bågar oordnade par av bågar (u,v) Exempel: bågar finns mellan flygplatser som har en flyglinje mellan sig. Det finns dessutom information om avståndet mellan flygplatserna. En riktad graf har riktade bågar En oriktad graf har oriktade bågar ORD ORD flight AA miles PVD PVD Maps 16
17 Fler exempel Elektriska kretsar Vägnät Flygnätverk Flödesscheman Datanätverk Local area network Internet Databaser Entity-relationship diagram Maps 17
18 Terminologi Ändpunkter U och V är ändpunkter på a Bågar som är förbundna med (eller utgår från) noder a, d, b är förbundna med V Grannoder U och V är grannar En nods grad X har graden 5 Self-loop j är en self-loop Parallella bågar h och i är parallella bågar U a c V W d f b e X Y g h i Z j Maps 18
19 Mer terminologi Väg Alternerande följd av noder och bågar Börjar och slutar med nod Varje båge kommer mellan sina ändpunktsnoder Om det inte finns parallella bågar räcker det att ange en följd av noder! Enkel väg Exempel Alla noderna är distinkta P 1 =(V,b,X,h,Z) är en enkel väg P 2 =(U,c,W,e,X,g,Y,f,W,d,V) är inte någon enkel väg U a c V d P 2 W f b e P 1 X g Y h Z Maps 19
20 Ännu mer terminologi Cykel: väg som börjar och slutar i samma nod Enkel cykel: noderna på cykeln är distinkta utom startnoden = slutnoden Exempel: C 1 =(V,b,X,g,Y,f,W,c,U,a,V) är en enkel cykel C 2 =(U,c,W,e,X,g,Y,f,W,d,V,a,V ) är en cykel som inte är enkel (W besöks två gånger) U a c V d C 2 W f b X e Y C 1 g h Z Maps 20
21 Egenskaper hos oriktade grafer Egenskap 1 Σ v deg(v) = 2m Bevis: varje ändpunkt räknas två gånger Egenskap 2 Om self-loops och parallella bågar saknas gäller m n (n 1)/2 Bevis: en nods grad är högst (n 1). Notation n m deg(v) antalet noder antalet bågar graden hos v Exempel n = 4 m = 6 deg(v) = 3 Maps 21
22 Hur implementerar man grafer? Det finns tre olika huvudmetoder! - båglista - grannmatris - grannlistor Maps 22
23 Båglista som implementeringsmetod Grafen implementeras som en lista av noder och en lista av bågar med deras ändpunkter (källor och mål) Denna lista kan implementeras som ett fält eller en länkad lista Problem: om vi befinner oss i en nod måste vi leta genom hela båglistan för att hitta dess grannar Maps 23
24 Grannmatris (kopplingsmatris) Numrera noderna Grafen implementeras med hjälp av en matris M, så att M[i,j] är 1 om det finns en båge mellan noderna med nummer i och j och 0 annars. (Man kan också lagra information om bågen i M[i,j].) Effektivt (O(1)) att avgöra om två noder är grannar, men utrymmet är O(n 2 ). Bra för täta grafer med många bågar. Maps 24
25 Grannlistor En lista av par (v,vs) där v är en nod och vs är en lista som innehåller par av grannoder till v och bågarna som går till dem. Listan kan implementeras som ett fält eller en länkad lista. (om grafen är stor kan det även vara lämpligt att använda effektiva datastrukturer som hashtabeller) Bra metod om man enkelt vill kunna hitta en viss nods grannar. Maps 25
26 Grafrepresentation i Haskell Riktad graf utan information i noderna. Nod och bågmängder implementerade som listor. Båglista type Graph = ([Node],[Edge]) type Edge = (Node,Node) Grannlistor type Graph = [(Node,[Node])] Maps 26
27 En ADT för riktade grafer Metoder för att få ut information om grafen incidentedges(v) origin(e) destination(e) areadjacent(v, w) Metoder för att ändra grafen insertvertex(v) insertedge(v, w, e) removevertex(v) removeedge(e) Allmänna metoder numvertices() numedges() vertices() edges() Maps 27
28 Delgrafer En delgraf S till en graf G S noder är en delmängd av Gs S kanter är en delmängd av Gs En uppspännande delgraf till G innehåller alla Gs noder delgraf uppspännande delgraf Maps 28
29 Sammanhängande En graf är sammanhängande om varje par av noder i grafen är förbundna med en väg En sammanhängande komponent av G är en maximal sammanhängande delgraf av G sammanhängande graf osammanhängande graf med två sammanhängande komponenter Maps 29
30 Fria träd och skogar Ett fritt träd är en oriktad graf som är sammanhängande saknar cykler Obs att fria träd saknar rot! En skog är en oriktad graf som saknar cykler En sammanhängande komponent i en skog är träd fritt träd skog Maps 30
31 Uppspännande träd och skogar Ett uppspännande träd för en sammanhängande graf är en uppspännande delgraf som är ett fritt träd En graf kan ha mer än ett uppspännande träd Tillämpning: kommunikationsnätverk En uppspännande skog är en uppspännande delgraf som är en skog graf uppspännande träd Maps 31
32 Djupet-först sökning (DFS) och bredden-först sökning (BFS) Två metoder att genomsöka en graf; två grafiteratorer! Kan även användas för att avgöra om två noder är sammanbundna. Djupet först: välj en startnod, följ en väg så långt som möjligt, gör sedan backtracking, följ nästa väg så långt som möjligt, osv Bredden först: välj en startnod, genomsök först alla noder med avståndet 1, sedan alla noder med avståndet 2, osv. Lecture 6 32
33 Djupet-först sökning A B D E C Lecture 6 33
34 Exempel A obesökt nod A A besökt nod obesökt båge upptäcktsbåge bakåtbåge B C D E A A B D E B D E C C Lecture 6 34
35 Exempel, fortsättning A A B D E B D E C C A A B D E B D E C C Lecture 6 35
36 Djupet-först sökning av en labyrint Nod = korsning, hörn eller slut på återvändsgränd Båge = korridor Rekursionsstack för backtracking = rep tillbaka till ingången Lecture 6 36
37 DFS-algoritmen Algoritmen markerar besökta noder och upptäcktsbågar, dvs den bygger ett DFS-träd. Dessutom markerar den bakåtbågar. Algorithm DFS(G) Input graph G Output labeling of the edges of G as discovery edges and back edges for all u G.vertices() setlabel(u, UNEXPLORED) for all e G.edges() setlabel(e, UNEXPLORED) for all v G.vertices() if getlabel(v) = UNEXPLORED DFS(G, v) Algorithm DFS(G, v) Input graph G and a start vertex v of G Output labeling of the edges of G in the connected component of v as discovery edges and back edges setlabel(v, VISITED) for all e G.incidentEdges(v) if getlabel(e) = UNEXPLORED w opposite(v,e) if getlabel(w) = UNEXPLORED setlabel(e, DISCOVERY) DFS(G, w) else setlabel(e, BACK) Lecture 6 37
38 DFS: egenskaper Egenskap 1 DFS(G, v) besöker alla noder i vs sammanhängande komponent A Egenskap 2 Upptäcktsbågarna som markeras av DFS(G, v) utgör ett uppspännande träd för vs sammanhängande komponent ett DFS-träd B C D E Lecture 6 38
39 Analys av DFS Varje nod markeras två gånger En gång som UNEXPLORED En gång som VISITED Varje båge markeras två gånger En gång som UNEXPLORED En gång som DISCOVERY eller BACK Metoden incidentedges anropas en gång för varje nod Exekveringstiden för DFS är O(n + m) om grafen är implementerad som en grannlista Kom ihåg att Σ v deg(v) = 2m Lecture 6 39
40 Tidskomplexitet i flera variabler När vi introducerade O-komplexitet talade vi bara om funktioner av en variabel (ofta indatastorleken n ). Vi förklarade betydelsen av O(n), O(n 2 ), O(log n), O(n log n), osv Ibland är det naturligt att mäta indatastorleken i flera variabler, t ex * Matrismultiplikation av m*n och n*p matriser har komplexiteten O(mnp) * Djupet först sökning av en graf med n noder och m bägar Maps 40 har komplexiteten O(m+n)
41 Definition av O(f(m,n)) Definitionen är analog med envariabelfallet: T(m,n) är O(f(m,n)) omm det finns C och n 0 så att T(m,n) < Cf(m,n) för n > n 0 T ex T(m,n) är O(m+n) omm det finns C och n 0 så att T(m,n) < C(m+n) för n > n 0 Maps 41
42 Vanlig fråga: Kan vi inte förenkla O(mnp) till O(n 3 )? Nej, komplexiteten beror inte bara på n utan också på m och p! Eller till O(k 3 )? Vad skulle k vara? Jo, om t ex k är den maximala dimensionen (k = max(m,n,p)). Vi har alltså att matrismultiplikation är O(max(m,n,p) 3 ) = O((m + n + p) 3 ) Maps 42
43 Samma fråga om djupet först: Kan vi inte förenkla O(m+n) till O(n) eller O(m)? Nej, komplexiteten beror inte bara på antalet noder eller antalet bågar; den beror på båda! Notera att O(m+n) = O(max(m,n)). Varför? I specialfall, t ex, sammanhängande graf utan parallella bågar har vi att m är O(n 2 ). I så fall kan vi dra slutsatsen att djupet först sökning är O(n 2 ). Men detta är mindre informativt, tänk om vi har har en gles graf med färre bågar än noder! Då är ju faktiskt djupet först sökning O(n)! Maps 43
44 Tids- och utrymmeskomplexitet n noder m bågar inga parallella bågar inga self-loops riktad graf utrymme incidentedges(v) areadjacent (v, w) båglista grannlista grannmatris insertedge(v, w, e) Maps 44
45 Tids- och utrymmeskomplexitet n noder m bågar inga parallella bågar inga self-loops riktad graf båglista grannlista grannmatris utrymme O(n + m) O(n + m) O(n 2 ) incidentedges(v) areadjacent (v, w) insertedge(v, w, e) Maps 45
46 Tids- och utrymmeskomplexitet n noder m bågar inga parallella bågar inga self-loops riktad graf båglista grannlista grannmatris utrymme O(n + m) O(n + m) O(n 2 ) incidentedges(v) O(m) O(deg(v)) O(n) areadjacent (v, w) insertedge(v, w, e) Maps 46
47 Tids- och utrymmeskomplexitet n noder m bågar inga parallella bågar inga self-loops riktad graf båglista grannlista grannmatris utrymme O(n + m) O(n + m) O(n 2 ) incidentedges(v) O(m) O(deg(v)) O(n) areadjacent (v, w) O(m) O(deg(v)) O(1) insertedge(v, w, e) Maps 47
48 Tids- och utrymmeskomplexitet n noder m bågar inga parallella bågar inga self-loops riktad graf båglista grannlista grannmatris utrymme O(n + m) O(n + m) O(n 2 ) incidentedges(v) O(m) O(deg(v)) O(n) areadjacent (v, w) O(m) O(deg(v)) O(1) insertedge(v, w, e) Maps 48
49 Tids- och utrymmeskomplexitet n noder m bågar inga parallella bågar inga self-loops riktad graf båglista grannlista grannmatris utrymme O(n + m) O(n + m) O(n 2 ) incidentedges(v) O(m) O(deg(v)) O(n) areadjacent (v, w) O(m) O(deg(v)) O(1) insertedge(v, w, e) O(1) O(1) O(1) Maps 49
50 Dynamiska fält och grannmatriser En grannmatris är ett fält. För att kunna lägga till nya element utan att riskera overflow måste vi använda ett dynamiskt fält. Obs att insättning av ny nod får O(1) som amorterad komplexitet, men O(n 2 ) som vanlig värstafallskomplexitet. Maps 50
51 Dynamiska fält och grannlistor I tabellen har vi antagit att grannlistorna är implementerade som ett dynamiskt fält av länkade listor. Då får vi snabb åtkomst av grannarna till en given nod. Hur ändrar sig komplexiteterna i tabellen om vi har grannlistan som en länkad lista av länkade listor? Maps 51
52 Djupet-först sökning: tillämpningar Avgör om en graf är sammanhängande Bestäm de sammanhängande komponenterna Bestäm en uppspännande skog Finn en väg mellan två noder Finn en cykel Lecture 6 52
Datastrukturer. föreläsning 7. Maps 1
Datastrukturer föreläsning 7 Maps 1 Grafer Maps 2 Grafer ett exempel En oriktad graf: Noderna är flygplatser (trebokstavskombinationer) Det finns en båge mellan två noder omm det finns en flyglinje mellan
Läs merDatastrukturer. föreläsning 6. Maps 1
Datastrukturer föreläsning 6 Maps 1 Avbildningar och lexika Maps 2 Vad är ett lexikon? Namn Telefonnummer Peter 031-405937 Peter 0736-341482 Paul 031-405937 Paul 0737-305459 Hannah 031-405937 Hannah 0730-732100
Läs merDatastrukturer. föreläsning 8. Lecture 6 1
atastrukturer föreläsning 8 Lecture 6 1 jupet-först sökning (S) och bredden-först sökning (S) Två metoder att genomsöka en graf; två grafiteratorer! Kan även användas för att avgöra om två noder är sammanbundna.
Läs merTentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)
Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag) 21 december 2007 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng
Läs merTentamen Datastrukturer D DAT 035/INN960
Tentamen Datastrukturer D DAT 035/INN960 21 december 2007 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.) Betygsgränser,
Läs merFö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
Läs merDatastrukturer. föreläsning 8. Maps 1
Datastrukturer föreläsning 8 Maps 1 Att hitta den kortaste vägen 0 8 A 4 2 8 B 7 2 C 1 D 2 5 3 9 8 E F 5 3 Lecture 6 2 Viktade grafer I en viktad graf tillordnar vi ett tal till varje båge. Detta tal kallas
Läs merTentamen 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,
Läs merFö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
Läs merFö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
Läs merDatastrukturer. 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
Läs merFö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
Läs merFö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
Läs merFö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
Läs merFö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
Läs merFö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
Läs merFö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
Läs merFöreläsning Datastrukturer (DAT037)
Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-11-20 Idag Grafer: Terminologi. Datastrukturer. Topologisk sortering. Kortaste vägen. Bredden först-sökning. Dijkstras algoritm. (Vi får
Läs merFö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)
Läs merDatastrukturer. föreläsning 9. Maps 1
Datastrukturer föreläsning 9 Maps 1 Grafer och grafalgoritmer Hur implementerar man grafer? Hur genomsöker (traverserar) man grafer? Hur genomsöker man viktade grafer (och hittar kortaste vägen)? Hur beräknar
Läs merGrafer, allmänt. Med datastrukturen graf menas vanligen: en mängd av noder (vertices) och en mängd av bågar (edges).
Grafer, allmänt Allmänt Med datastrukturen graf menas vanligen: en mängd av noder (vertices) och en mängd av bågar (edges). En graf kan vara riktad (directed) eller oriktad (undirected). En graf kan vara
Läs merGrafer 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
Läs merTentamen 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:
Läs merDatastrukturer. 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
Läs merFöreläsningsanteckningar F6
Föreläsningsanteckningar F6 Martin Andersson & Patrik Falkman Kortaste vägen mellan en nod och alla andra noder Detta problem innebär att givet en graf G = (E,V) hitta den kortaste vägen över E från en
Läs merHashtabeller. TDA416, lp3 2016
Hashtabeller TDA416, lp3 2016 Mängder och avbildningar (Sets and Maps) I den abstrakta datatypen avbildning/uppslagstabell (Map) lagras nyckelvärde-par. Grundläggande operationerna är insättning, borttagning
Läs merFöreläsning Datastrukturer (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-13 Idag Grafer: Terminologi. Datastrukturer. Topologisk sortering. Kortaste vägen. Bredden först-sökning. Dijkstras algoritm. (Vi får
Läs merTentamen 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äs merTommy 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
Läs merFö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
Läs merTommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary 1 1.1 Definitioner... 1 1.2 Implementation... 2
Föreläsning 5 ADT Map/Dictionary, hashtabeller TDDI16: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 16 september 2015 Tommy Färnqvist, IDA, Linköpings universitet 5.1 Innehåll Innehåll
Läs merFö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
Läs merMagnus Nielsen, IDA, Linköpings universitet
Föreläsning ADT Map/Dictionary, hashtabeller TDDC9,TDDE22,725G97: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 7 september 208 Magnus Nielsen, IDA, Linköpings universitet. ADT Map/Dictionary.
Läs merTentamen Datastrukturer, DAT037 (DAT036)
Tentamen Datastrukturer, DAT037 (DAT036) Datum, tid och plats för tentamen: 2017-08-17, 8:30 12:30, M. Ansvarig: Fredrik Lindblad. Nås på tel nr. 031-772 2038. Besöker tentamenssalarna ca 9:30 och ca 11:00.
Läs merGrafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4
Grafer, traversering Koffman & Wolfgang kapitel 1, avsnitt 4 1 Traversering av grafer De flesta grafalgoritmer innebär att besöka varje nod i någon systematisk ordning precis som med träd så finns det
Läs merTentamen 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.)
Läs merLö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
Läs merDatastrukturer och algoritmer. Innehåll. Tabell. Tabell - exempel. Gränsyta till Tabell. Tabell. Modell. Hashtabell Relation, lexikon.
Datastrukturer och algoritmer Föreläsning 7 Tabell, hashtabell Relation & lexikon Innehåll Tabell Tabell Hashtabell Relation, lexikon Modell Uppslagsbok Organisation Ändlig avbildning av argument på värden
Läs merGraphs (chapter 14) 1
Graphs (chapter ) Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges) en båge är ett par (a, b) av två noder en båge kan vara cyklisk peka på sig själv
Läs merFöreläsning Datastrukturer (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-25 Idag Starkt sammanhängande komponenter Duggaresultat Sökträd Starkt sammanhängande komponenter Uppspännande skog Graf, och en möjlig
Läs merLö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
Läs merFö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
Läs merFö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
Läs merTentamen 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:
Läs merFö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
Läs merTNK049 Optimeringslära
TNK49 Optimeringslära Clas Rydergren, ITN Föreläsning 7 Nätverksoptimering Billigaste uppspännande träd (MST) Billigaste väg (SP) Projektnätverk Minkostnadsflödesproblem Agenda Terminologi för grafer/nätverk
Läs merAvbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4
Avbildningar och hashtabeller Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4 1 2 Mängder i Java 3 Mängd-gränssnittet Set vs. List Mängder får endast innehålla unika element: Metoden.add(E) returnerar
Läs merProv i DAT 312: Algoritmer och datastrukturer för systemvetare
Prov i DAT 312: Algoritmer och datastrukturer för systemvetare Jacek Malec Datavetenskap, LU 11 april 2003 Datum 11 april 2003 Tid 14 19 Ansvarig lärare Jacek Malec (tel. 03 9890431) Hjälpmedel inga Antal
Läs merFö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äs merTrafiksimulering: Grafalgoritmer
1 (38) Trafiksimulering: Grafalgoritmer Michael Hanke Skolan för teknikvetenskap SF1538 Projekt i simuleringsteknik 2 (38) Introduktion Varför grafalgoritmer? Grafer möjliggör en enkel och systematisk
Läs merTrädstrukturer och grafer
Översikt Trädstrukturer och grafer Trädstrukturer Grundbegrepp Binära träd Sökning i träd Grafer Sökning i grafer Programmering tillämpningar och datastrukturer Varför olika datastrukturer? Olika datastrukturer
Läs merFöreläsning 2: Grafer. Exempel på graf
Föreläsning 2: Grafer Vad är en graf? Terminologi Representationer Genomgång av hörnen i en graf Kortaste väg-problemet Exempel på graf Falun Uppsala Karlstad Västerås Stockholm Eskilstuna Örebro En graf
Läs merInnehå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:
Läs merFö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äs merTentamen 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 =
Läs merTentamen Datastrukturer (DAT036)
Tentamen Datastrukturer (DAT036) Det här är inte originaltesen. Uppgift 6 var felaktigt formulerad, och har rättats till. Datum och tid för tentamen: 2011-12-16, 8:30 12:30. Ansvarig: Nils Anders Danielsson.
Läs merLö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).
Läs merAlgoritmer och datastrukturer, föreläsning 11
lgoritmer och datastrukturer, föreläsning 11 enna föreläsning behandlar grafer. En graf har en mängd noder (vertex) och en mängd bågar (edge). Ett exempel är: E F G H Z enna graf har följande mängd av
Läs merDatastrukturer. föreläsning 3. Stacks 1
Datastrukturer föreläsning 3 Stacks 1 Abstrakta datatyper Stackar - stacks Köer - queues Dubbeländade köer - deques Vektorer vectors (array lists) All är listor men ger tillgång till olika operationer
Läs merAlgoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 10 Anton Grensjö grensjo@csc.kth.se 9 november 2017 1 Idag En konstruktionsreduktion Fler bevis av NP-fullständighet 2 Teori Repetition Ett problem tillhör
Läs merDatastrukturer och algoritmer. Föreläsning 15 Inför tentamen
Datastrukturer och algoritmer Föreläsning 15 Inför tentamen 1 Innehåll Kursvärdering Vi behöver granskare! Repetition Genomgång av gammal tenta 2 Första föreläsningen: målsättningar Alla ska höja sig ett
Läs merLösningsförslag för tentamen i Datastrukturer (DAT037) från
Lösningsförslag för tentamen i Datastrukturer (DAT7) från --9 Nils Anders Danielsson. Träd- och köoperationerna har alla tidskomplexiteten O(log s), där s är antalet element i trädet/kön (notera att jämförelser
Läs merProgramkonstruktion och. Datastrukturer
Programkonstruktion och Datastrukturer Repetitionskurs, sommaren 2011 Datastrukturer (hash-tabeller och heapar) Elias Castegren elias.castegren.7381@student.uu.se Arrayer igen En array är en linjär datastruktur
Läs merTentamen Datastrukturer, DAT037 (DAT036)
Tentamen Datastrukturer, DAT037 (DAT036) Datum och tid för tentamen: 2017-01-11, 14:00 18:00. Ansvarig: Fredrik Lindblad. Nås på tel nr. 031-772 2038. Besöker tentamenssalarna ca 15:00 och ca 17:00. Godkända
Läs merDatastrukturer. 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
Läs mer729G04 - Diskret matematik. Lektion 4
729G04 - Diskret matematik. Lektion 4 1 Lösningsförslag 1.1 Vägar, stigar och annat 1. Vi ges den oriktade grafen G=(V,E), V = {a, b, c, d, f, g, h, i, j}, E = {{a, b}, {b, c}, {a, c}, {f, g}, {c, d},
Läs merFö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
Läs merMatematik för språkteknologer (5LN445) Institutionen för lingvistik och filologi VT 2014 Författare: Marco Kuhlmann 2013
UPPSALA UNIVERSITET Matematik för språkteknologer (5LN445) Institutionen för lingvistik och filologi VT 2014 Författare: Marco Kuhlmann 2013 4 Grafer En graf är en struktur av prickar förbundna med streck.
Läs merFö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
Läs merInnehå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
Läs merMA2047 Algebra och diskret matematik
MA2047 Algebra och diskret matematik Något om grafer Mikael Hindgren 26 september 2018 roarna i Königsberg De sju broarna i Königsberg (nuvarande Kaliningrad) på 1700-talet: (a) Königsberg 1652 (b) Graf
Läs merProgramkonstruktion 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
Läs merAlgoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö grensjo@csc.kth.se 4 oktober 2017 1 Idag Algoritmkonstruktion (lite blandat) Redovisning och inlämning av labbteori 3 2 Uppgifter Uppgift
Läs merHitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet
Föreläsning 13 Innehåll Algoritm 1: Sortera Exempel på problem där materialet i kursen används Histogramproblemet Schemaläggning Abstrakta datatyper Datastrukturer Att jämföra objekt Om tentamen Skriftlig
Läs merSökning. Översikt. Binärt sökträd. Linjär sökning. Binär sökning. Sorterad array. Linjär sökning. Binär sökning Hashtabeller
Översikt Linjär sökning Sökning Binär sökning Hashtabeller Programmering tillämpningar och datastrukturer 2 Linjär sökning Binärt sökträd Undersök ett element i taget tills du hittar det sökta Komplexitet
Läs merInnehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd
Innehåll Föreläsning 12 Sökträd Sökning Sökning och Sökträd 383 384 Binärt sökträd Används för sökning i linjära samlingar av dataobjekt, specifikt för att konstruera tabeller och lexikon. Organisation:
Läs merDatastrukturer och Algoritmer D0041D
Luleå Tekniska Universitet 19 mars 2014 Laborationsrapport Laboration 3 Datastrukturer och Algoritmer D0041D Primms Algoritm Namn E-mail Magnus Björk magbjr-3@ltu.student.se Handledare Felix Hansson Primms
Läs merFö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
Läs merAlgoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö grensjo@csc.kth.se 9 oktober 2015 Anton Grensjö ADK Övning 6 9 oktober 2015 1 / 23 Översikt Kursplanering Ö5: Grafalgoritmer och undre
Läs merTENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.
1 (8) 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 namn och personnummer på varje blad
Läs merTommy Färnqvist, IDA, Linköpings universitet. 1 Administrativ information 1 1.1 Upplägg... 1
Föreläsning 1 Kursadministration, ADT Map/Dictionary, hashtabeller TDDD71: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 3 november 2015 Tommy Färnqvist, IDA, Linköpings universitet
Läs merGrundlä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
Läs merFöreläsning 6. Slumptal Testa slumptal Slumptal för olika fördelningar Grafer Datastrukturen graf
Föreläsning 6 Slumptal Testa slumptal Slumptal för olika fördelningar Grafer Datastrukturen graf Repetition En dator kan inte generera slumptal då den är helt deterministisk, däremot kan den generera pseudo-slumptal
Läs merFöreläsning 5: Dynamisk programmering
Föreläsning 5: Dynamisk programmering Vi betraktar en typ av problem vi tidigare sett: Indata: En uppsättning intervall [s i,f i ] med vikt w i. Mål: Att hitta en uppsättning icke överlappande intervall
Läs merFÖRELÄSNING 11 DATALOGI I
Föreläsning I07 FÖRELÄSNING DATALOGI I Grafer Beatrice Åkerblom beatrice@dsv.su.se Institutionen för Data- och Systemvetenskap SU/KTH Föreläsning I07 Läsanvisningar Michael Main Data Structures & Other
Läs merFö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
Läs merFöreläsning Datastrukturer (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2012-11-13 Idag Mer om grafer: Topologisk sortering. Kortaste vägen. Bredden först-sökning. Dijkstras algoritm. Floyd-Warshall. Topologisk sortering
Läs merProgrammering 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
Läs merTentamen TEN1 HI1029 2014-05-22
Tentamen TEN1 HI1029 2014-05-22 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha
Läs merDatastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö
Datastrukturer och algoritmer Föreläsning 4 Test, Stack och Kö 1 Innehåll Test Datatyperna Stack och kö Specifikation och Gränssnitt Konstruktion Tillämpning 2 Testa VIKTIGT! Test går att göra under många
Läs merGrafer. 1 Grafer. Grunder i matematik och logik (2015) 1.1 Oriktade grafer. Marco Kuhlmann
Marco Kuhlmann 1 En graf är en struktur av prickar förbundna med streck. Ett tidsenligt exempel på en sådan struktur är ett social nätverk, där prickarna motsvarar personer och en streck mellan två prickar
Läs merGrafer och grannmatriser
Föreläsning 2, Linjär algebra IT VT2008 Som avslutning på kursen ska vi knyta samman linjär algebra med grafteori och sannolikhetsteori från första kursen. Resultatet blir så kallade slumpvandringar på
Läs merFö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 Effektivitet och minneskrav Implementering Läsanvisning och uppgifter
Läs merDatastrukturer. Sammanfattning och Referenshäfte. Guldbrand, Eric Johansson, Algot
Datastrukturer Sammanfattning och Referenshäfte Guldbrand, Eric Johansson, Algot Juli 2018 Sammanfattning Algoritmiska problem underlättas ofta genom kännedom av vanliga datastrukturer, deras styrkor och
Läs merFöreläsning 4: Kombinatorisk sökning
DD2458, Problemlösning och programmering under press Föreläsning 4: Kombinatorisk sökning Datum: 2009-09-25 Skribent(er): Kristina Nylander, Dennis Ekblom, Marcus Öman Föreläsare: Fredrik Niemelä 1 Introduktion
Läs merFöreläsning 5: Kardinalitet. Funktioners tillväxt
Föreläsning 5: Kardinalitet. Funktioners tillväxt A = B om det finns en bijektion från A till B. Om A har samma kardinalitet som en delmängd av naturliga talen, N, så är A uppräknelig. Om A = N så är A
Läs merFöreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer
Föreläsning 5: Giriga algoritmer Kruskals och Prims algoritmer Spännande träd: Om G är en sammanhängande graf så är ett spännande träd ett träd som innehåller alla noder i V (G). Viantarattviharkantvikterw(e)
Läs merAlgoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 7 Anton Grensjö grensjo@csc.kth.se 14 oktober 2015 Anton Grensjö ADK Övning 7 14 oktober 2015 1 / 28 Översikt Kursplanering Ö6: Algoritmkonstruktion F19:
Läs merFöreläsning 14 Innehåll
Föreläsning 14 Innehåll Abstrakta datatyper, datastrukturer Att jämföra objekt övriga moment i kursen Om tentamen Skriftlig tentamen både programmeringsuppgifter och teoriuppgifter Hitta fel i fingerade
Läs mer