Föreläsning 11. Riktade grafer. Viktade grafer. TDDC70/91: DALG. Innehåll. Innehåll. 1 Riktade grafer A 11.3
|
|
- Roger Sandström
- för 8 år sedan
- Visningar:
Transkript
1 Föreläsning 11 Riktade grafer. Viktade grafer. T70/1: ALG Utskriftsversion av föreläsning i atastrukturer och algoritmer 14 oktober 2013 Tommy Färnqvist, IA, Linköpings universitet 11.1 Innehåll Innehåll 1 Riktade grafer 1 2 Konnektivitet 3 Transitivt hölje 6 4 Topologisk sortering 11 Viktade grafer 17 6 Kortaste vägar Riktade grafer Introduktion I en riktad graf är alla bågar riktade A 11.3 genskaper n graf G = (V,) sådan att varje båge går i en riktning: åge (a,b) går från a till b men inte från b till a. Om G är enkel (inga parallella bågar och inga öglor) gäller m n (n 1), d.v.s. m O(n 2 ). 1
2 A 11.4 Politisk bloggosfär-graf The Political logosphere and the 2004 US lection: ivided They log, Adamic och Glance, Nattliga lån mellan banker The Topology of the Federal Funds Market, ech och Atalay, Implikationsgraf 2
3 11.7 Kombinatorisk krets 11. WordNet-graf 11. 3
4 Tillämpningar riktad graf transport www näringskedja schemaläggning finansiell mobiltelefon smittsam sjukdom citeringar objektgraf arvshierarki kontrollflöde nod gatukorsning hemsida art uppgift bank person person artikel objekt klass kodblock rikatd båge enkelriktad gata hyperlänk rovdjur-byte-förhållande föregångarvillkor transaktion ringt samtal infektion citering pekare ärver från hopp Några algoritmiska grafproblem Stig. Finns det en riktad stig från s till t? Kortaste väg. Vilken är den kortaste riktade stigen från s till t? Stark konnektivitet. Finns det en riktad stig mellan alla par av noder? Topologisk sorting. Går det att rita den riktade grafen så att alla kanter pekar uppåt? Transitivt hölje. För vilka noder v och w finns det en stig från v till w? Page Rank. Hur betydelsefull är en webbsida? Riktad FS Vi kan specialisera traverseringsalgoritmerna (FS och FS) till riktade grafer I den riktade FS-algoritmen får vi fyra typer av bågar discovery -bågar bakåt-bågar framåt-bågar korsande bågar n riktad FS med start i nod s bestämmer vilka noder som är nåbara från s 4
5 A Konnektivitet Nåbarhet FS-träd rotat i v: noder nåbara från v via riktade stigar F A A F A Starkt sammanhängande Varje nod är nåbar från alla andra noder a c g d e f b 11.1 Algoritm för att avgöra starkt sammanhängande Välj en nod v i G // Kan alla noder nås från v?utför FS från v i G Om det finns w som inte besöks svara nej Låt G vara G med riktningen på varje båge omkastad // Kan v nås från alla noder?utför FS från v i G Om det finns w som inte besöks svara nej Annars, svara ja
6 Körtid: O(n + m) G: a c g d e f b G : a c g d e f b Starkt sammanhängande komponenter Maximal delgraf sådan att varje nod kan nå alla andra noder i delgrafen Kan också göras i O(n + m) tid genom att använda FS i flera steg a c g { a, c, g } f d e b { f, d, e, b } Transitivt hölje Transitivt hölje Givet en riktad graf G, låt det transitiva höljet av G vara den riktade grafen G sådan att G har samma noder som G om G har en riktad stig från u till v (u v) så har G en riktad båge från u till v et transitiva höljet ger information om nåbarheten i en riktad graf A G A G* 11.1 eräkning av transitiva höljet Vi kan köra FS med start i varje nod v 1,...,v n, alltså O(n (n + m)) Alternativt använda dynamisk programmering: Floyd-Warshalls algoritm
7 Transitiva höljet med Floyd-Warshall Numrera noderna 1,2,...,n. I fas k, betrakta bara stigar som använder noder med nummer 1,2,...,k som mellanliggande noder: i Använder bara noder numrerade 1,,k (lägg till bågen om den inte redan är med) Stig med noder numrerade 1,,k-1 k Stig med noder numrerade 1,,k-1 j Floyd-Warshalls algoritm Floyd-Warshalls algoritm numrerar noderna i G som v 1,...,v n och beräknar en serie riktade grafer G 0,...,G n G 0 = G G k har en riktad båge (v i,v j ) om G har en riktad stig från v i till v j med mellanliggande noder i mängden {v 1,...,v k } Vi ser att G n = G I fas k beräknas grafen G k utgående från G k 1 Körtid: O(n 3 ) om areadjacent är O(1) Floyd-Warshalls algoritm function FLOYWARSHALL(G) G 0 G for k 1 to n do G k G k 1 for i 1 to n (i k) do for j 1 to n ( j i,k) do if G k 1.ARAJANT(v i,v k ) then if G k 1.ARAJANT(v k,v j ) then if G k.arajant(v i,v j ) then G k.insrtirtg(v i,v j,k) return G n xempel: Floyd-Warshall OS v 7 OR v 4 v 2 SFO JFK v 6 LAX v 1 v 3 FW MIA v 7
8 11.23 Floyd-Warshall, iteration 1 OS v 7 OR v 4 v 2 SFO JFK v 6 LAX v 1 v 3 FW MIA v Floyd-Warshall, iteration 2 OS v 7 OR v 4 v 2 SFO JFK v 6 LAX v 1 v 3 FW MIA v 11.2 Floyd-Warshall, iteration 3
9 OS v 7 OR v 4 v 2 SFO JFK v 6 LAX v 1 v 3 FW MIA v Floyd-Warshall, iteration 4 OS v 7 OR v 4 v 2 SFO JFK v 6 LAX v 1 v 3 FW MIA v Floyd-Warshall, iteration
10 OS v 7 OR v 4 v 2 SFO JFK v 6 LAX v 1 v 3 FW MIA v 11.2 Floyd-Warshall, iteration 6 OS v 7 OR v 4 v 2 SFO JFK v 6 LAX v 1 v 3 FW MIA v 11.2 Floyd-Warshall, slutet 10
11 OS v 7 OR v 4 v 2 SFO JFK v 6 LAX v 1 v 3 FW MIA v Topologisk sortering Riktade acykliska grafer och topologisk ordning n riktad acyklisk graf (AG) är en riktad graf som inte har några riktade cykler n topologisk ordning av en graf är en totalordning v 1,...,v n av noderna sådan att varje båge (v i,v j ) uppfyller i < j xempel: I en riktad graf som svarar mot en instans av uppgiftsschemaläggning är en topologisk ordning en sekvens av uppgifter som uppfyller kraven på inbördes ordning mellan uppgifterna Proposition 1 (13.21 i kursboken). n riktad graf går att ordna topologiskt omm grafen är en AG A AG G v 2 v 1 A v 4 v v3 Topologisk ordning av G Topologisk sortering Numrera noderna, så att (u,v) u < v 11
12 1 vakna 2 3 äta plugga ALG 7 spela baka kakor till läraren 4 sova mer ALG skriva datorprogram 10 sova n typisk studentdag 6 träna 11 drömma om grafer Algoritm för topologisk sortering procedure TOPOLOGIALSORT(G) S ny tom stack for all u G.VRTIS() do låt INOUNTR(u) vara ingraden för u if INOUNTR(u) = 0 then S.PUSH(u) i 1 while S.ISMPTY() do u S.POP() låt u få nummer i i den topologiska ordningen i i + 1 for all utgående kanter (u,w) från u do INOUNTR(w) INOUNTR(w) 1 if INOUNTR(w) = 0 then S.PUSH(w) Körtid: O(n + m) Alternativ algoritm för topologisk sortering procedure TOPOLOGIALSORT(G) H G n G.NUMVRTIS while H är icke-tom do låt v vara en nod utan utgående bågar märk v med n n n 1 ta bort v från H temporär kopia av G Körtid: O(n + m). Hur då...? Algoritm för topologisk sortering via FS Simulera algoritmen genom att använda en djupetförstsökning procedure TOPOLOGIALFS(G) n G.NUMVRTIS sätt alla noder och bågar till UNXPLOR som i FS for all v G.VRTIS() do if GTLAL(v) = UNXPLOR then TOPOLOGIALFS(G, v) procedure TOPOLOGIALFS(G, v) STLAL(v,V ISIT ) for all e G.ININTGS(v) do if GTLAL(e) = UNXPLOR then w OPPOSIT(v, e) 12
13 if GTLAL(w) = UNXPLOR then STLAL(e, ISOV RY ) TOPOLOGIALFS(G, w) else e är korsande båge eller framåt-båge märk v med topologiskt nummer n n n xempel: Topologisk sortering xempel: Topologisk sortering xempel: Topologisk sortering 13
14 11.3 xempel: Topologisk sortering xempel: Topologisk sortering 14
15 xempel: Topologisk sortering xempel: Topologisk sortering 1
16 xempel: Topologisk sortering xempel: Topologisk sortering 16
17 xempel: Topologisk sortering Viktade grafer Viktade grafer I en viktad graf är varje båge associerad med ett numeriskt värde kallat bågens vikt. ågvikter kan representera avstånd, kostnader, etc Google maps 17
18 11.47 olaget ontinentals flygrutter i USA (augusti 2010) 11.4 Tillämpningar PRT/PM Kartapplikationer Seam carving Robotnavigering Texture mapping Typsättning i TeX Trafikplanering i stadsmiljö Optimal pipelining för VLSI-chip Schemaläggning av telemarketingförsäljare Routing av meddelanden inom telekom. Routingprotokoll för nätverk (OSPF, GP, RIP) Utnyttja gynsamma situationer vid valutahandel Optimal ruttplanering för lastbilar givet trafikstockningsmönster 1
19 ng. endpoints, incident, adjacent, degree, parallel, loops Kortaste vägar Problemet kortaste väg Givet en viktad graf och två noder u och v vill vi hitta en stig mellan u och v med minimal total vikt. Längden av en stig är summan av vikterna på stigens bågar xempel Kortaste vägen mellan Providence och Honolulu PV OR SFO LGA HNL LAX FW MIA 11.0 genskaper hos kortaste vägar n delväg av en kortaste väg är också en kortaste väg et finns ett träd av kortaste vägar från en startnod till alla andra noder xempel tt träd av kortaste vägar från Providence PV OR SFO LGA HNL LAX FW MIA
20 ijkstras algoritm Avståndet från en nod v till en nod s är längden av kortaste vägen mellan s och v ijkstras algoritm beräknar avstånden från en given startnod s till alla noder v i grafen Antaganden: grafen är sammanhängande bågarna är oriktade grafen har inga öglor eller parallella bågar bågvikterna är ickenegativa Vi bygger ett moln av noder med start i s, som till slut täcker alla noder Vi märker varje nod v med d(v), vilket betecknar avståndet mellan v och s i delgrafen bestående av molnet och noderna som är grannar till molnet I varje steg lägger vi till den nod u utanför molnet som har minst avståndsmärkning d(u) uppdaterar vi märkningen av noderna som är grannar till u 11.2 Utökningssteget etrakta en båge e = (u,z) sådan att u är noden vi nyligen lagt till i molnet z inte är med i molnet Relaxeringen av bågen e uppdaterar d(z) enligt: d(z) min{d(z), d(u) + weight(e)} s d(u) 0 u e d(z) 7 z s d(u) 0 u e d(z) 60 z 11.3 xempel 0 A F 0 A F 0 A F 0 A F
21 Fortsättning på exemplet 0 A F 0 A F 11. ijkstras algoritm n prio-kö lagrar noderna utanför molnet Nyckel: avstånd Värde: nod Lokator-baserade metoder insert(k,v) returnerar en lokator replacekey(l,k) ändrar en posts nyckelvärde Vi lagrar två saker i varje nod: avstånd (d(v)) lokator i prio-kön procedure IJKSTRA(G, s) Q ny tom heapbaserad prio-kö for all v G.VRTIS() do if v = s then STISTAN(v, 0) else STISTAN(v, ) l Q.INSRT(GTISTAN(v), v) STLOATOR(v, l) while Q.ISMPTY() do u Q.RMOVMIN() for all e G.ININTGS(u) do z G.OPPOSIT(u, e) r GTISTAN(u)+WIGHT(e) if r <GTISTAN(z) then STISTAN(z, r) Q.RPLAKY(GTLOATOR(z), r) 11.6 Analys av ijkstras algoritm Grafoperationer Vi anropar incidentdges en gång för varje nod Märkningsoperationer Vi hämtar/sätter avstånd och lokator för nod z O(deg(z)) gånger Att sätta/hämta en märkning tar tid O(1) Prio-köoperationer 21
22 Varje nod sätts in en gång och tas ut en gång från prio-kön, där varje insättning och borttagning tar tid O(logn) n nods nyckel i prio-kön ändras som mest deg(w) gånger, där varje nyckeländring tar tid O(logn) ijkstras algoritm har exekveringstid O((n+m) logn) givet att grafen representeras med en grannlista Kom ihåg att v deg(v) = 2m xekveringstiden kan också uttryckas som O(mlogn) eftersom vi antagit att grafen är sammanhängande 11.7 Varför ijkstras algoritm fungerar ijkstras algoritm är baserad på den giriga metoden. Algoritmen lägger till noderna efter ökande avstånd. Antag att algoritmen inte hittade alla kortaste avstånd. Låt F vara den första felaktiga noden som behandlas. När den föregående noden,, längs den sanna kortaste vägen behandlades var dess avstånd korrekt. Men bågen (,F) relaxerades i det steget! Mao, så länge d(f) d() kan inte avståndet till F bli fel. vs, ingen nod får fel avstånd. 7 0 A F Varför ijkstras algoritm inte fungerar med negativa bågvikter ijkstras algoritm är baserad på den giriga metoden. Algoritmen lägger till noderna efter ökande avstånd. Om en nod med en negativ incident båge skulle läggas till sent i molnet skulle den förstöra avståndet till noder som redan finns i molnet. 0 A F s sanna avstånd är 1, men finns redan i molnet med d()=! 11. ellman-fords algoritm (finns inte i kursboken) Fungerar även med negativa bågvikter Måste anta riktade bågar (annars kan det finnas cykler med negativ vikt) Iteration i hittar alla kortaste vägar som använder i bågar xekveringstid: O(nm) Kan utökas till att detektera cykler med negativ vikt procedure LLMANFOR(G, s) for v G.VRTIS() do if v = s then STISTAN(v, 0) else STISTAN(v, ) for i 1 to n 1 do for each e G.GS() do u G.ORIGIN(e) z G.OPPOSIT(u, e) r GTISTAN(u)+WIGHT(e) if r <GTISTAN(z) then STISTAN(z, r)
23 xempel Noderna är märkta med resp d(v)-värde
Föreläsning 10. Riktade grafer. Viktade grafer. TDDC91,TDDE22,725G97: DALG. Innehåll. Innehåll Riktade grafer A 10.3
öreläsning 1 Riktade grafer. Viktade grafer. T1,T,G: LG Utskriftsversion av föreläsning i atastrukturer och algoritmer oktober 1 Magnus Nielsen, I, Linköpings universitet 1.1 Innehåll Innehåll 1. 1 Riktade
Datastrukturer. 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.
Datastrukturer. 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
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
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 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 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 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 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
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
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
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
Tommy Färnqvist, IDA, Linköpings universitet
Föreläsning 8 Sortering och urval TDDC70/91: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 1 oktober 2013 Tommy Färnqvist, IDA, Linköpings universitet 8.1 Innehåll Innehåll 1 Sortering
Fö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
Datastrukturer. 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
Fö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
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 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
Föreläsning 2. Kortaste vägar i grafer.
Föreläsning 2. Kortaste vägar i grafer. Problem: KORTASTE VÄGAR Den enklaste varianten är om vi inte har kantvikter och kortaste väg är en väg med såfåkanter som möjligt. Indata: En riktad graf G och en
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
Några svar till TDDC70/91 Datastrukturer och algoritmer
Några svar till TDDC70/91 Datastrukturer och algoritmer 2011--18 Följande är lösningsskisser och svar till uppgifterna på tentan. Lösningarna som ges här ska bara ses som vägledning och är oftast inte
Föreläsning 2. Kortaste vägar i grafer.
Föreläsning 2. Kortaste vägar i grafer. Problem: KORTASTE VÄGAR Den enklaste varianten är om vi inte har kantvikter och kortaste väg är en väg med såfåkanter som möjligt. Indata: En riktad graf G och en
Magnus Nielsen, IDA, Linköpings universitet
Föreläsning 7 Introduktion till sortering TDDC91,TDDE22,725G97: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 24 september 2018 Magnus Nielsen, IDA, Linköpings universitet 7.1 1
Grafer. 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
Grafer, 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
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
729G04 - Diskret matematik. Lektion 4
729G04 - Diskret matematik. Lektion 4 Ett generellt råd är att rita upp noder och bågar för graferna nedan. 1 Uppgifter 1.1 Vägar, stigar och annat 1. Vi ges den oriktade grafen G=(V,E), V = {a, b, c,
Algoritmer, 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
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
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
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
Kaliningrad) låg vid bägge sidor av floden Pregel samt på
Grunder i matematik och logik (2018) Grafteori Marco Kuhlmann Grafteori är det område inom matematiken som undersöker egenskaper hos grafer. Inom grafteorin har begreppet graf en annan betydelse än graf
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
Fö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ö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 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)
Trafiksimulering: 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
Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary 1 1.1 Definitioner... 1 1.2 Implementation... 2
Föreläsning 4 ADT Map/Dictionary, hashtabeller, skip-listor TDDC91: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 9 september 2015 Tommy Färnqvist, IDA, Linköpings universitet 4.1
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
Tommy Färnqvist, IDA, Linköpings universitet
Föreläsning Metoder för algoritmdesign TDDD86: DALP Utskriftsversion av föreläsning i Datastrukturer, algoritmer och programmeringsparadigm 7 december 015 Tommy Färnqvist, IDA, Linköpings universitet.1
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
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
729G04 - 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ö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
Föreläsning 9: NP-fullständighet
Föreläsning 9: NP-fullständighet Olika typer av problem: 1. Beslutsproblem: A(x) =Ja. 2. Optimeringsproblem: A(x) =m Vanligen max/min. 3. Konstruktionsproblem: A(x) =En struktur. Vanligen lösningen till
Grafer, 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
Föreläsning 2. AVL-träd, Multi-Way -sökträd, B-träd TDDD71: DALG. Innehåll. Innehåll. 1 Binära sökträd
Föreläsning AVL-träd, Multi-Wa -sökträd, B-träd DDD7: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer november 5 omm Färnqvist, IDA, Linköpings universitet. Innehåll Innehåll Binära
Datastrukturer. föreläsning 7. Maps 1
Datastrukturer föreläsning 7 Maps 1 Hashtabeller 0 1 2 3 025-612-0001 4 451-229-0004 981-101-0004 Maps 2 Kollisioner vad gör man? Använder hinkar ( hashing in buckets, chaining ) Cellen med index i innehåller
ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15
ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 150112 kl. 08:15 13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilogarna. ***
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,
TNK049 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
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
Föreläsning 1. Introduktion. Vad är en algoritm?
Några exempel på algoritmer. Föreläsning 1. Introduktion Vad är en algoritm? 1. Häll 1 dl havregryn och ett kryddmått salt i 2 1 2 dl kallt vatten. Koka upp och kocka gröten ca 3minuter. Rör om då och
Avancerad Problemlösning och Programmering i Praktiken
Avancerad Problemlösning och Programmering i Praktiken Grafalgoritmer II High Performance Computing Center North (HPC2N) Grafrepresentation Igår: Grafrepresentation DFS BFS Kortaste vägen MST Kortaste
Algoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övningsmästarprovsövning 2 Anton Grensjö grensjo@csc.kth.se 20 november 2017 1 Dagordning 1. Genomgång av uppgiftens lösning 2. Genomgång av bedömningskriterier
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
Graphs (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
Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition
Grafdefinitioner Träd N = {i}: noder (hörn) = {(i, )}, i N, N: bågar (kanter) Graf: G = (N, ) efinitioner Väg: Sekvens av angränsande bågar. ykel: Väg som startar och slutar i samma nod. En enkel väg innehåller
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 4: Giriga algoritmer. Giriga algoritmer
Föreläsning 4: Giriga algoritmer Giriga algoritmer Denna typ av algoritmer arbetar efter följande princip: Gör i varje situation det som är lokalt optimalt, d.v.s. bäst för stunden. Några exempel vi redan
Algoritmer, 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
MA2047 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ö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
Algoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 10 Anton Grensjö grensjo@csc.kth.se 18 november 2015 Anton Grensjö ADK Övning 10 18 november 2015 1 / 20 Översikt Kursplanering Ö9: NP-fullständighetsbevis
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:
ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15
ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 160119 kl. 08:15 13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilogarna. ***
Algoritmer, 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
N = {i}: noder (hörn) Graf: G = (N, B) Definitioner. Väg: Sekvens av angränsande bågar. Cykel: Väg som startar och slutar i samma nod.
Polyeder 0 x, 0 x, 0 x, x + x + x, x + x + x Grafdefinitioner N = {i}: noder (hörn) = {(i, j)}, i N, j N: bågar (kanter) Graf: G = (N, ) efinitioner Väg: Sekvens av angränsande bågar. ykel: Väg som startar
Algoritmer 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
Föreläsning 13. Dynamisk programmering
Föreläsning 13 Dynamisk programmering Föreläsning 13 Dynamisk programmering Fibonacci Myntväxling Floyd-Warshall Kappsäck Handelsresandeproblemet Dynamisk programmering Dynamisk programmering används typiskt
Grafer 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å
Föreläsning 11. Giriga algoritmer
Föreläsning 11 Giriga algoritmer Föreläsning 11 Giriga algoritmer Användning Växelproblemet Kappsäcksproblemet Schemaläggning Färgläggning Handelsresandeproblemet Giriga algoritmer (Greedy algorithms)
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
Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts.
Datakompression fö 3 p.3 Datakompression fö 3 p.4 Optimala koder Övre gräns för optimala koder En prefixkod kallas optimal om det inte existerar någon annan kod (för samma alfabet och sannolikhetsfördelning)
OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15
OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 140818 kl. 08:15 13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna. Betygsgräns: *** OBS *** Kurs:
Fö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
Optimala koder. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or.
Datakompression fö 3 p.1 Optimala koder En prefixkod kallas optimal om det inte existerar någon annan kod (för samma alfabet och sannolikhetsfördelning) som har lägre kodordsmedellängd. Det existerar förstås
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
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 13. Dynamisk programmering
Föreläsning 13 Dynamisk programmering Föreläsning 13 Dynamisk programmering Fibonacci Myntväxling Floyd-Warshall Kappsäck Handelsresandeproblemet Uppgifter Dynamisk programmering Dynamisk programmering
Optimering Kruskal s algoritm Prim-Jarník s algoritm
Optimering Kruskal s Prim-Jarník s 0.7 1.3 0.5 0.3 2.1 0.7 1.3 0.5 0.3 2.1 Viktad graf raf där varje kant har en vikt Vikterna kan motsvara Kostnad Avstånd Tidsåtgång ur hittar man kortaste vägen från
DD1320 Tillämpad datalogi. Lösning (skiss) till tenta 20 okt 2011
DD1320 Tillämpad datalogi Lösning (skiss) till tenta 20 okt 2011 1 KMP P I P P I N i 1 2 3 4 5 6 Next[i] 0 1 0 2 1 3 2 Huffmankodning: Algoritmen 1. Sortera tecknen som ska kodas i stigande förekomstordning.
Algoritmer, 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:
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
OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15-13:15
OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 170331 kl. 08:15-13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilagarna. *** OBS ***
Fö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ö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
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
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: 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ö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 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.
Föreläsning 9: Turingmaskiner och oavgörbarhet Turingmaskinen Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen. Data är ett oändligt långt band där nollor och ettor står
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.)
Tommy Färnqvist, IDA, Linköpings universitet
Föreläsning 1 Algoritmiska paradigm TDDC70/91: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 15 oktober 013 Tommy Färnqvist, IDA, Linköpings universitet 1.1 Innehåll Innehåll 1 Dekomposition
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.
Grundläggande datalogi - Övning 3
Grundläggande datalogi - Övning 3 Björn Terelius November 14, 2008 Utskrift av stackar Tornen i Hanoi Principerna för rekursion: Hitta ett enkelt basfall (som har en känd lösning). Reducera varje annat
Föreläsning 12+13: Approximationsalgoritmer
Föreläsning 12+13: Approximationsalgoritmer Många av de NP-fullständiga problemen är från början optimeringsproblem: TSP, Graph Coloring, Vertex Cover etc. Man tror att P NP och att det alltså inte går
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