Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer
|
|
- Carl-Johan Larsson
- för 4 år sedan
- Visningar:
Transkript
1 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) på alla kanter i G. Hur hittar man spännande träd med minimal vikt? (Kallas Minimala Spännande Träd, MST.) Kruskals algoritm för MST Idén bakom denna algoritm är upprätthålla en spännande skog och förena delträden utan att skapa någon cykel tills ett enda stort träd bildats. Kruskal(V,E,w) (1) A (2) foreach v V (3) MakeSet(v) (4) Sortera E efter stigande vikt (5) foreach (u, v) E (ordnat efter stigande vikt w) (6) if FindSet(u) FindSet(v) (7) A A {(u, v)} (8) MakeUnion(u, v) (9) return A Tidskomplexitet: O( E log E ) (p.g.a. sorteringen); FindSet och MakeUnion tar O(log V ) tid. Korrekthetsbevis: Låt oss anta att T = {e 1,e 2,..., e p } är det träd som Kruskals algoritm ger. Låt T = {f 1,f 2,..., f p } vara ett annat spännande träd. Låt oss anta att kanterna i båda träden är sorterade i växande viktordning. Det kan hända att några av de första kanterna är samma i båda träden. De gemensamma kanterna bildar en mängd A. VikandåskrivaT = {A, e k,...} och T = {A, f k,...}. Viantarocksåatte k f k. Enligt definitionen av Kruskals algoritm måste w(e k ) w(f k ). Vi kan nu bilda grafen T {e k }.Denmåste innehålla en cykel C som innehåller e k men ingen av kanterna i A. Välj någon kant g e k i cykeln. Vi bildar trädet T = T {e k } {g}. Viserdåatt w(t ) w(t ). Fortsätt på samma sätt att sortera in fler kanter från T idet andra trädet. Till slut kommer vi att få T. Men då har vi visat att w(t ) w(t ). Alltså måste T vara minimalt.
2 Prims algoritm för MST Prims algoritm bygger på samma principer som Dijkstras algoritm. I varje steg läggs det hörn till trädet som ligger närmast (d.v.s. har lägst märkning key). Prim(V,E,w,s) (1) key[v] för varje v V (2) key[s] 0 (3) Q MakeHeap(V,key) (4) π[s] Null (5) while Q (6) v HeapExtractMin(Q) (7) foreach granne u till v (8) if u Q och w(u, v) <key[u] (9) π[u] v (10) key[u] w(u, v) (11) Justera heapen vid key[u] (12) return A Tidskomplexitet: O( V log V )+O( E log V ) =O( E log V ) Korrekthetsbevis: Prims algoritm ger spännande träd. Vi vill visa att de är minimala. Antag att det finns ett spännande träd T som börjar med kantmängd A på samma sätt som algoritmerna. Låt (u, v) vara den första kant som inte finns med i T. Vi visar att (u, v) lika gärna kan väljas. Ett snitt S igrafeng är en uppdelning V = S (V S). Sats. Om det finns ett MST som innehåller A E och ingen kant i A korsar snittet S så finns det ett MST som innehåller A {(u, v)} där (u, v) är kanten med minst vikt mellan S och V S. Bevis: Låt T vara ett MST som innehåller A men inte (u, v). Betraktastigen från u till v längs T. Den innehåller någon kant (x, y) som går från S till V S. Eftersom (u, v) hade minst vikt av alla såna kanter är T + {(u, v)} {(x, y)} ett MST. 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 sett: Kruskals algoritm Lägg till den lättaste kant som inte ger en cykel. Dijkstras algoritm Utvidga mängden S med det hörn som är märkt med lägst värde. Till många problem finns en naturlig girig algoritm, men ofta ger den inte en optimal lösning. Giriga algoritmer är ofta snabba så de kan användas för att snabbt få fram en approximativ lösning.
3 Passande problem En girig algoritm passar i situationer där: 1. Problemet kan delas upp i ett första girigt val som lämnar kvar ett delproblem. 2. Det giriga valet alltid går att kombinera med en optimal lösning. 3. Den optimala lösningen på delproblemet går alltid att kombinera med det giriga valet och ger då en optimal lösning. Exempel: Ett triangelproblem Problem: Hitta stigen från toppen till botten som maximerar summan av de ingående talen Låt n vara antalet rader. Det finns 2 n 1 olika stigar att prova. Girig algoritm för triangelproblemet Gå i varje steg till det största av de två talen på raden nedanför.
4 Den giriga algoritmen ger här summan 28 medan den bästa stigen ger 30 ( ). Tidskomplexiteten för den giriga algoritmen är Θ(n). Aktivitetsplanering Vi har n st aktiviteter a 1,a 2,..., a n som äger rum under tidsintervall på formen [s i,f i ). Inga intervall får överlappar varandra. (Intervallen är definierade som halvöppna. Det innebär t.ex. att [2, 4) och [4, 5) inte överlappar varandra.) Hur väljer man ut ett maximalt antal aktiviteter som inte överlappar varandra? Girig algoritm för aktivitetsplanering Sortera efter sluttid så att f 1 f 2... f n. (1) A {a 1 } (2) i 1 (3) for m 2 to n (4) if s m f i (5) A {a m } (6) i m (7) return A
5 Girig algoritm för intervalltäckning Givet är n punkter på tallinjen. Vi vill hitta ett minimalt antal intervall av längd 1 vars union innehåller alla punkterna. Girig algoritm: (1) Sortera punkterna i växande ordning. (2) while någon punkt finns kvar (3) Placera ett intervall med vänstra ändpunkten i punkten med lägst koordinat. (4) Ta bort alla punkterna som täcks av detta intervall. Algoritmen ger den minimala övertäckningen eftersom något intervall måste täcka punkten längst till vänster; den giriga placeringen av intervallet täcker alla punkter som skulle täckas av någon annan placering. Varför fungerar algoritmerna? Generell form: Ett problem kan lösas girigt om 1. Problemet kan lösas genom att man gör ett val och sedan har ett delproblem av samma typ kvar att lösa. 2. Det första valet kan göras girigt och det giriga valet går alltid att kombinera med en optimal lösning. En annan generell typ av problem Vi har en grundmängd E. Vi har en uppsättning tillåtna (oberoende) mängder F.Viharvikterw(e) på elementen. Maximal tillåten mängd: A F är maximal om A {x} / F för varje x/ A. Problem: Hur hittar man en maximal tillåten mängd med minimal viktsumma. (1) A (2) Sortera E efter stigande vikt (3) foreach e E (ordnat efter stigande vikt w) (4) if A {e} F (5) A A {e} (6) return A När fungerar denna algoritm? Jo, precis då F bildar en matroid.
6 Matroider Låt M vara en mängd och F en familj av delmängder till M. (M,F) bildar en matroid om 1. A F och B A medför B F. 2. Om A, B F och A < B så finns det x B \ A så att A x F. F kallas för familjen av oberoende mängder i matroiden. Ex: G är en graf M = E(G) och F är mängden av delgrafer utan cykler. Ex: M är en mängd vektorer och F är familjen av oberoende mängder av vektorer. Vi kan nu bevisa att den giriga algoritmen fungerar för matroider: Bevis: Det går att visa att maximala oberoende mängder har samma storlek. Antag att A = {a 1,a 2,...a p } är en maximal oberoende mängd som ges av algoritmen och att B = {b 1,b 2,..., b p } är en maximal oberoende mängd med lägre vikt. Antag att kanterna är sorterade efter ökande vikt i båda mängderna. Det måste finnas ett minsta tal j så att w(b j ) <w(a j ).SättdåA = {a 1,...a j 1 } och B = {b 1,..., b j }. Båda mängderna är oberoende och B > A. Det finns då b k B så att {a 1,..., a j 1,b k } F.Menw(a j ) >w(b j ) w(b k ).Detbetyder att algoritmen måste ha valt b k redan vilket är omöjligt. Någon sådan mängd B kan därför inte finnas.
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äs merFö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
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 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 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 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
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 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 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 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 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
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 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 merFö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
Läs merI en matchning ligger varje hörn i högst en kant. I en stig ligger varje hörn i högst två kanter.
26.2-9 Antag att rätt lösning är att dela upp V i V 1 och V 2 (V 1 V 2 =, V 1 V 2 = V ). Antal kanter vi måste skära är då det minsta snittet mellan v 1 och v 2, där v 1 är ett godtyckligt hörn i V 1 och
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 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 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 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 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 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 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 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 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
Läs merFöreläsning 4 Datastrukturer (DAT037)
Föreläsning 4 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-10 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat037 Förra
Lä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ä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 1: Dekomposition, giriga algoritmer och dynamisk programmering
2D1458, Problemlösning och programmering under press Föreläsning 1: Dekomposition, giriga algoritmer och dynamisk programmering Datum: 2007-09-04 Skribent(er): Anders Malm-Nilsson och Niklas Nummelin Föreläsare:
Läs merFö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 Uppgifter Giriga algoritmer (Greedy algorithms)
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 merGiriga algoritmer och dynamisk programmering
Föreläsning 1 Giriga algoritmer och dynamisk programmering Douglas Wikström KTH Stockholm popup-help@csc.kth.se Dagens citat Using the wrong algorithm to solve a problem is like trying to cut a steak with
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 merN = {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
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 merTommy 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
Läs merTDDI16 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
Läs merTrä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
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 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
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 merAlgoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 4 Anton Grensjö grensjo@csc.kth.se 25 september 215 Anton Grensjö ADK Övning 4 25 september 215 1 / 28 Översikt Kursplanering F9: Dynamisk programmering
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 merKaliningrad) 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
Läs merFö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)
Läs merMagnus 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
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 merFöreläsning 7+8: NP-problem. Begreppet effektiv algoritm är alltså synonymt med går i polynomisk tid i den här kursen. Är detta en rimlig uppdelning?
Formalisering av rimlig tid Föreläsning 7+8: NP-problem En algoritm som har körtid O(n k ) för någon konstant k är rimligt snabb. En algoritm som har körtid Ω(c n ) för någon konstant c>1 är för långsam.
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 merTrä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, 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 och slutar i samma nod. En enkel väg
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 merFöreläsning 13 Innehåll
Föreläsning 13 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Heapar Implementering av prioritetskö med heap Klassen PriorityQueue i java.util Programexempel LPT-algoritmen
Läs merTrä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, 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 och slutar i samma nod. En enkel väg
Läs merAlgoritmer, 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
Läs merFöreläsning 11: Beräkningsgeometri
DD2458, Problemlösning och programmering under press Föreläsning 11: Beräkningsgeometri Datum: 2009-11-24 Skribenter: David Björklund, Christoer Lundell Johansson och Mårten Selin Föreläsare: Fredrik Niemelä
Läs merADT 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
Läs merTommy 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
Läs merFöreläsning 13 Innehåll
Föreläsning 13 Innehåll Exempel på problem där materialet i kursen används Hitta k största bland n element Histogramproblemet Schemaläggning PFK (Föreläsning 13) VT 2013 1 / 15 Hitta k största bland n
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 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 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
Läs merAlgebra och Diskret Matematik A (svenska)
MITTUNIVERSITETET TFM Tentamen 2005 MAAA99 Algebra och Diskret Matematik A (svenska) Skrivtid: 5 timmar Datum: 2 november 2005 Denna tenta omfattar 8 frågor, där varje fråga kan ge 3 poäng. Maximalt poängantal
Läs mer729G04 - 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,
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 merFö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
Läs merFöreläsning 8+9: NP-problem. Begreppet effektiv algoritm är alltså synonymt med går i polynomisk tid i den här kursen. Är detta en rimlig uppdelning?
Formalisering av rimlig tid Föreläsning 8+9: NP-problem En algoritm som har körtid O(n k ) för någon konstant k är rimligt snabb. En algoritm som har körtid Ω(c n ) för någon konstant c>1 är för långsam.
Läs merÖvningsmästarprov 2 + några NP-reduktioner. Algoritmer, datastrukturer och komplexitet
Övningsmästarprov 2 + några NP-reduktioner Algoritmer, datastrukturer och komplexitet Idag Första timmen: övningsmästarprov 2 Andra timmen: NP-reduktioner Uppgiftsbeskrivning Låt oss ta bort kravet på
Läs merLö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.
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 merADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar
Föreläsning 1 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Heapar Implementering av prioritetskö med heap Sortering med hjälp av heap
Läs merAlgoritmer, 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
Läs merTräd Hierarkiska strukturer
Träd Hierarkiska strukturer a 1 a 2 a 3 a 4 a 2 a 5 a 6 a 7 Hierarki: Korta vägar till många Hur korta? Linjär lista: n 2 Träd: Antal element på avståndet m: g m a 1 a 3 a 8 a 12 m = log g n a 9 a 10 Väglängden
Läs merORDINARIE 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. ***
Läs merLö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.
Läs merDatastrukturer och algoritmer
Datastrukturer och algoritmer Föreläsning 16 2 Innehåll Snabbrepetition Exempeltentamen Kursutvärdering Mina målsättningar Kursens mål: 3 Rolig och viktig kurs Bli en bättre programmerare och inse att
Läs merAlgoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 12 Anton Grensjö grensjo@csc.kth.se 10 december 2015 Anton Grensjö ADK Övning 12 10 december 2015 1 / 19 Idag Idag Komplexitetsklasser Blandade uppgifter
Läs merFöreläsning 3: Dekomposition. Dekomposition
Föreläsning 3: Dekomposition Dekomposition Dekomposition är en generell metod för att lösa problem Metoden bygger på att man delar upp ett problem i delproblem av samma typ som ursprungsproblemet Uppdelningen
Läs merTrä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, 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 och slutar i samma nod. En enkel väg
Läs merIntroduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4
Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 014-015 Denna lektion ska vi studera rekursion. Lektion 4 Principen om induktion Principen om induktion är ett vanligt sätt att bevisa
Läs merEkvivalensrelationer
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
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 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 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 merFöreläsning 12. Söndra och härska
Föreläsning 12 Söndra och härska Föreläsning 12 Söndra och härska Maximal delsekvens Skyline Closest pair Växel Söndra och härska (Divide and conquer) Vi stötte på dessa algoritmer när vi tittade på sortering.
Läs merAlgoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 9 Anton Grensjö grensjo@csc.kth.se 9 november 2017 1 Idag Bevis av NP-fullständighet Labbteoriredovisning inför labb 4 2 Teori Teori När vi talar om NP-fullständighet
Läs merSortering. Brute-force. Sortering Ordna element enligt relation mellan nyckelvärden
Sortering Brute-force Sortering Ordna element enligt relation mellan nyckelvärden Flera olika algoritmer med olika fördelar Brute-force Gå igenom alla permutationer och hitta den där elementen ligger i
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 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 mer18 juni 2007, 240 minuter Inga hjälpmedel, förutom skrivmateriel. Betygsgränser: 15p. för Godkänd, 24p. för Väl Godkänd (av maximalt 36p.
HH / Georgi Tchilikov DISKRET MATEMATIK,5p. 8 juni 007, 40 minuter Inga hjälpmedel, förutom skrivmateriel. Betygsgränser: 5p. för Godkänd, 4p. för Väl Godkänd (av maximalt 36p.). Förenkla (så mycket som
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 merSeminarium 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
Läs merKap.6 Grafer. Egenskaper: Handskakningslemmat och Eulers formel Sats om eulerkrets/väg Isomorfi och representation av grafer Graffärgning
Kap.6 Grafer Allmänna begrepp: graf, delraf, multigraf, enkelgraf, riktad graf, nodsgrad vandring, väg, stig, krets, cykel sammanhängande graf, sammanhängande komponenter Speciella grafer: komplett graf,
Läs merFö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
Läs merAlgoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 8 Anton Grensjö grensjo@csc.kth.se 12 november 2015 Anton Grensjö ADK Övning 8 12 november 2015 1 / 21 Översikt Kursplanering Ö8: Mästarprov 1, oavgörbarhet
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 merOMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 09:00 14:00
OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 160402 kl. 09:00 14:00 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilogarna. *** OBS ***
Läs merLinjärt minne. Sammanhängande minne är ej flexibelt. Effektivt
Binära träd (forts) Ett binärt träd kan lagras i ett enda sammanhängande minne Roten har index 1 Vänster barn till nod i har index 2*i Höger barn till nod i har index 2*i + 1 Föräldern till nod i har index
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 mer