Algoritmer, datastrukturer och komplexitet

Storlek: px
Starta visningen från sidan:

Download "Algoritmer, datastrukturer och komplexitet"

Transkript

1 Algoritmer, datastrukturer och komplexitet Övningsmästarprovsövning 2 Anton Grensjö grensjo@csc.kth.se 20 november

2 Dagordning 1. Genomgång av uppgiftens lösning 2. Genomgång av bedömningskriterier och bedömningsprotokollet 3. Enskild kamraträttning av skriftlig lösning 4. Diskussion av bedömningarna och utvärdering 5. Rast! 6. Andra timmen: mer NP-fullständighetsbevis och konstruktionsreduktioner Jag kommer gå runt och ta närvaro under steg

3 Bevis av NP-fullständighet Säg att vi vill visa att problemet A är NP-fullständigt. Då bör vi utföra följande steg: 1. Visa att A NP. a) Föreslå vad en lösning kan vara. b) Visa att om svaret är ja så kan lösningen verifieras. c) Visa att verifikationen tar polynomisk tid (med avseende på indatastorleken). 2. Visa att A är NP-svårt. a) Hitta ett känt NP-fullständigt problem B att reducera. b) Hitta och beskriv en karp-reduktion av B till A. c) Bevisa att reduktionen är polynomisk (med avseende på indatastorleken). d) Bevisa att reduktionen är korrekt. i) Visa att ja-instanser mappas till ja-instanser och nej-instanser till nej-instanser. Vi vet sedan att B p A. 3. Nu har vi visat att A är NP-fullständigt! 3

4 Lösning till övningsmästarprov 2

5 Kortaste omblandade texten Kom ihåg problemet från övningsmästarprov 1: Vi har en text bestående av n ord, med längder w 1,..., w n. Texten ska nu skrivas ner på ett antal rader, där det får plats precis len tecken på varje rad. Ordens ordning får ej ändras. Två ord som står direkt efter varandra på samma rad måste skiljas med ett mellanslag. Vad är det minimala antalet rader som krävs för att skriva ner hela texten? Nu plockar vi bort kravet att orden måste placeras i samma ordning som i indata. Nytt problem: Vad är det minimala antalet rader av längd len som de n orden kan rymmas på om det är tillåtet att blanda om orden? 4

6 Kortaste omblandade texten Vad är det minimala antalet rader av längd len som de n orden kan rymmas på om det är tillåtet att blanda om orden? Formulera om detta optimeringsproblem som ett beslutsproblem (genom att införa ett mål). Bevisa sedan att beslutsproblemet är NP-fullständigt. Formulering av beslutsproblem: Inför ett mål K. Indata: Ordlängder {w i } n i=1, radlängd len, mål K. Alla tal är positiva heltal och alla ordlängder är högst len. Ny fråga: Går det att pussla in alla n ord på K rader av längd len så att det finns ett mellanslag mellan varje par av närliggande ord på samma rad? 5

7 Kortaste omblandade texten - NP-tillhörighet Låt oss visa att problemet ligger i NP. För varje ja-instans ska en lösning kunna verifieras i polynomisk tid. Låt lösningen vara en utplacering av orden på K rader, representerad som en funktion f : {1, 2,..., n} {1, 2,..., K}, som för varje ord anger vilken rad det ska placeras på. För att verifiera denna lösning, kolla att längden på varje rad inte blir större än len (inklusive mellanslag). Om K n finns det trivialt en lösning (ett ord på varje rad), så i detta fall kan vi direkt returnera true. 6

8 Kortaste omblandade texten - NP-tillhörighet 1: function TextPackningVerify({w i } n i=1, len, K, f : {1,.., n} {1,.., K}) 2: if K n then 3: return true 4: rowlen heltalsarray av längd K 5: for i 1 to K do 6: rowlen[i] 0 7: for i 1 to n do 8: row f(i) 9: if rowlen[row] > 0 then om raden inte är tom 10: rowlen[row] rowlen[row] + 1 lägg till mellanslag 11: rowlen[row] rowlen[row] + w i 12: if rowlen[row] > len then 13: return false 14: return true Tidskomplexitet: O(n) med enhetskostnad (OBS rad 2-3 viktiga!). 7

9 Kortaste omblandade texten - NP-tillhörighet Tidskomplexitet: O(n) med enhetskostnad. Hur blir det med bitkostnad? Låt m vara antalet bitar i indata. Alla additioner och jämförelser görs på O(m) tid, och således ligger tidskomplexiteten i O(nm). Notera även att n O(m), eftersom det finns n ordlängder i indata, och varje ordlängd måste bestå av minst en bit. Alltså ligger tidskomplexiteten även i O(m 2 ), och är således polynomisk med avseende på indatas längd. 8

10 Kortaste omblandade texten - NP-svårt Det återstår att visa att problemet är NP-svårt. Vi väljer att reducera problemet mängdpartitionering. Givet en multimängd positiva heltal, går det att partitionera talen i två delar som har samma summa? Idé: Låt varje tal i indata till mängdpartitionering motsvaras av en ordlängd i textpackningsproblemet. Låt K = 2. De två raderna i textpackningsproblemet får då en liknande funktion som de två mängderna i mängdpartitionering. Tanken är att det ska gå att placera alla ord på två rader om och endast om vi kan partitionera talen i två mängder med samma summa. Välj en radlängd så att alla orden precis får plats, utan något överblivet utrymme. Om orden kan placeras måste då antalet bokstäver vara samma på bägge raderna, vilket motsvarar att de två mängderna har samma summa. 9

11 Kortaste omblandade texten - NP-svårt Problem: vi måste ha mellanslag mellan efterföljande ord på samma rad Låt ordlängden vara 1 mindre än motsvarande tal från mängdpartitionering. Inklusive mellanslag blir då längden samma. Att inget mellanslag krävs sist på en rad kan vi korrigera för genom att minska radlängden med 1. Problem: alla ord måste ha positiv längd i textpackningsproblemet, men med nuvarande idé kommer talet 1 att ge ordlängden 0. Börja med att multiplicera alla tal med 2 (eller någon annan heltalskonstant större än 1). På så sätt kommer vi alltid fortfarande ha ett positivt tal när vi subtraherar 1. 10

12 Kortaste omblandade texten - NP-svårt 1: function Mängdpartitionering({s i } n i=1 ) 2: σ 0 3: for i 1 to n do 4: w i 2s i 1 5: σ σ + s i 6: len σ 1 7: K 2 8: return TextPackning({w i } n i=1, len, K) Tidskomplexitet: Låt m vara antalet bitar i indata. n O(m) eftersom varje s i utgör minst en indatabit. Alla tals storlek begränsade av m, så alla additioner och subtraktioner går på O(m) tid med bitkostnad. = tidskomplexiteten ligger i O(m 2 ) och är alltså polynomisk med avseende på indatas längd. 11

13 Kortaste omblandade texten - NP-svårt Korrekthet för reduktionen: Vi ska visa att 1. Varje ja-instans av mängdpartitionering transformeras till en ja-instans av textpackning 2. Varje nej-instans av mängdpartitionering transformeras till en nej-instans av textpackning Punkt 2 är ekvivalent med att för varje ja-instans av textpackning som kan skapas av transformationen så är motsvarande instans av mängdpartitionering också en ja-instans. 12

14 Kortaste omblandade texten - NP-svårt Visa ja-instans av mängdpartitionering = ja-instans av textpackning Antag att vi har en ja-instans av mängdpartitionering, dvs det finns en partitionering av {s i } n i=1 i A och B, så att summan av talen i A är lika med summan av talen i B. Låt σ = n i=1 s i. Eftersom A och B har samma summa måste denna summa vara σ/2. Konstruera nu en textpackningsinstans enligt reduktionen, dvs med K = 2 och len = σ 1. Placera talen i A på första raden och talen i B på andra raden. Varje radlängd blir då 2(σ/2) 1 = σ 1. 2(σ/2) eftersom vi summan av de ursprungliga talen var σ/2, varje ord inkl. mellanslag är lika långt som motsvarande tal, och vi dubblerade alla tal. 1 eftersom sista ordet på varje rad inte har något mellanslag efter sig. Textpackningen uppfyller alltså villkoret! 13

15 Kortaste omblandade texten - NP-svårt Visa att om vi fick en ja-instans av textpackning från vår reduktion så var den ursprungliga instansen av mängdpartitionering en ja-instans. Antag att vi har en textpackning på två rader av längd σ 1. Lägg till ett mellanslag efter sista ordet på varje rad. Summan av alla ordlängder på varje rad inklusive mellanslag är nu högst σ, och motsvarande tal har då summan högst σ/2. Eftersom summan av alla tal är σ måste summan av talen som placerades på respektive rad vara exakt σ/2. Således får vi en jämn partitionering om vi låter A vara talen som motsvarar orden på första raden, och B övriga. Eftersom reduktionen är korrekt och polynomisk är textpackning NP-svårt. Vi visade även innan att textpackning ligger i NP, och således är problemet även NP-fullständigt. 14

16 Bedömning av övningsmästarprovet

17 Kamratbedömning! OBS: kom ihåg att man inte behöver bli godkänd på övningsmästarprovet för att få sin bonuspoäng. 1. Leta reda på personen med samma siffra som du. 2. Byt lösningar med varandra inom gruppen. 3. Bedöm din kamrats lösning enligt instruktionerna och fyll i bedömningsprotokollet. 4. När båda är klara ska ni diskutera med varandra inom gruppen: Förklara varför ni bedömde som ni gjorde Försök att komplettera lösningarna så de skulle blivit godkända vid en ny bedömning 5. Fyll i utvärderingen. 6. Lämna in era lösningar och utvärderingar. Vi fortsätter med vanlig övning efter pausen, preliminärt kl 14:15. Då kommer vi ta fler exempel på NP-fullständighetsbevis och konstruktionsreduktioner. 15

18 Mer NP-fullständighetsbevis

19 Konspirationsdetektionsproblemet Detta problem var uppgift 2 på Mästarprov 2 år Du ska hjälpa Foliehattarnas Riksförbund att hitta möjliga konspirationer i sociala nätverk. Ett socialt nätverk består i denna uppgift av en uppsättning personer, tillsammans med information om vilka par av personer som är bekanta med varandra. En konspiration består av en mängd konspiratörer, samt en spindel i nätet, och uppfyller följande: Spindeln i nätet är bekant med alla konspiratörer. Ingen av konspiratörerna är bekant med någon annan konspiratör. Varje person som inte redan är konspiratör eller spindeln i nätet är bekant med någon av konspiratörerna. Att avgöra om en viss person kan vara spindeln i nätet för en möjlig konspiration är svårt. Visa att detta problem är NP-fullständigt. 16

20 Konspirationsdetektionsproblemet Anta att nätverket består av en mångd personer P och en mängd bekanskapspar A av personer som är bekanta med varandra. Den förmodade spindeln kallas X. Tillhör problemet NP? Låt oss visa att en ja-lösning till beslutsproblemet kan verifieras i polynomisk tid. Låt lösningen vara mängden konspiratörer, C P. Vi behöver kontrollera följande: Att ingen konspiratör är bekant med en annan konspiratör. Att varje konspiratör är bekant med spindeln. Att varje persion i nätverket som inte redan är konspiratör eller spindeln är bekant med minst en konspiratör. 17

21 Konspirationsdetektionsproblemet Tidskomplexitet: Om vi representerar A som en boolesk P P -matris tar verifikationen tid O( P 2 ), vilket är polynomiskt. Alltså ligger konspirationsdetektionsproblemet i NP. 18

22 Konspirationsdetektionsproblemet Visa att problemet är NP-svårt. Vilket problem ska vi reducera? 3CNF-SAT För varje variabel x i skapar vi två personer som är bekanta med varandra en som representerar x i och en som representerar x i. Vi skapar en spindel, som är bekant med alla variabelpersoner. Alltså blir varje variabelperson en möjlig konspiratör, men de två personer som representerar samma variabel kan inte båda vara konspiratörer. Vi skapar också en person för varje klausul. Varje klausulperson är bekant med personerna som motsvarar de literaler som ingår i klausulen. 19

23 Konspirationsdetektionsproblemet Tidskomplexitet: linjär i n och m. Eftersom både n och m begränsas av indatas längd är reduktionen polynomisk. 20

24 Konspirationsdetektionsproblemet Korrekthet: 1. Visa att om det ϕ är satisfierbar så finns det en konspiration. Antag att det finns en variabeltilldelning som satisfierar ϕ. Låt konspiratörerna vara de n personer som motsvarar variabeltilldelningen, dvs Om x k är sann så ska xp k vara konspiratör. Om x k är falsk så ska xn k vara konspiratör. Dessa konspiratörer är alla bekanta med spindeln men inte med varandra. Eftersom varje klausul är satisfierad, så är motsvarande klausulperson bekant med minst en konspiratör den konspiratör som motsvarar den sanna literalen i klausulen. Alltså har vi en konspiration! 21

25 Konspirationsdetektionsproblemet 2. Visa att om vår reduktion resulterade i en ja-instans av konspirationsdetektion så är den ursprungliga 3CNFSAT-formeln ϕ satisfierbar. Antag att vi har en konspiration. xp k och xn k är bekanta med varandra och med spindeln men inte med någon annan potentiell konspiratör. Alltså måste exakt en av dem vara konspiratör. Om xp k är konspiratör låter vi x k vara sann, och om xn k är konspiratör låter vi x k vara falsk. Detta ger oss en variabeltilldelning. För varje j: Tilldelningen satisfierar klausulen c j eftersom klausulpersonen cl j (som inte är en konspiratör) måste vara bekant med någon konspiratör, och de enda konspiratörer cl j är bekant med motsvarar tilldelade variabler. Således satisfierar variabeltilldelningen hela formeln ϕ. Slutsats: konspirationsdetektionsproblemet är NP-fullständigt. 22

26 Vänner och fiender Detta problem kommer från ett mästarprov år Du ska bjuda in till fest, men har svårt att bestämma dig för vilka personer du ska bjuda. Din bekantskapskrets kan representeras som en oriktad graf G med två olika sorters kanter: vänkanter och fiendekanter. G = (V, E v, E f ), där V är personer/hörn, E v är mängden vänkanter, E f är mängden fiendekanter. Gästlistan L till din fest måste uppfylla följande krav: Om v bjuds in så måste också alla vänner till v bjudas in (annars blir de ledsna). Om v bjuds in så får inga fiender till v bjudas in (annars blir det dålig stämning). 23

27 Vänner och fiender G = (V, E v, E f ), där V är personer/hörn, E v är mängden vänkanter, E f är mängden fiendekanter. Gästlistan L till din fest måste uppfylla följande krav: Om v bjuds in så måste också alla vänner till v bjudas in (annars blir de ledsna). Om v bjuds in så får inga fiender till v bjudas in (annars blir det dålig stämning). Fråga: Givet en bekantskapskretsgraf, vilket är det största antalet personer du kan bjuda till festen? Formulera som beslutsproblem, samt bevisa att beslutsproblemet är NP-fullständigt. 24

28 Vänner och fiender Vi inför ett mål K, och frågar oss istället: kan vi bjuda minst K personer till festen? Visa att problemet tillhör NP: Låt lösningen bestå av en mängd L av gäster. För att verifiera lösningen, gör följande: Kontrollera först att L K. Gå igenom varje vänkant (u, v) och verifiera att antingen både u och v eller ingen av dem är bjuden. Gå igenom varje fiendekant (u, v) och verifiera att högst en av u och v är bjuden. Detta går att göra på polynomisk tid. 25

29 Vänner och fiender Visa att problemet är NP-svårt. Vilket problem ska vi reducera? Oberoende mängd! Givet en instans av oberoende mängd, som är en graf G = (V, E), vill vi skapa en instans av Vänner och fiender. Låt V vara hörnen, låt E vara mängden fiendekanter, och låt den tomma mängden vara vänkanterna. Låt målet K vara detsamma. 1: function IndependentSet(V, E, K) 2: return FriendsAndEnemies(V,, E, K) Reduktionen går på konstant tid, och är alltså polynomisk med avseende på indatas längd. 26

30 Vänner och fiender Korrekthet: 1. Visa att om vi har en ja-instans av oberoende mängd så kommer vår reduktion ge en ja-instans av Vänner och fiender. Antag att det existerar en oberoende mängd L i indatagrafen. Det inte finns någon kant mellan något par av noder i L. L är då också en giltig gästlista, ty: Det finns inga vänner i nätverket, så det första kravet är trivialt uppfyllt. Eftersom den ursprungliga kantmängden är samma som mängden fiendekanter och L är en oberoende mängd så finns det inget par av personer på listan som är fiende med varandra. 27

31 Vänner och fiender 2. Visa att om vi får ut en ja-instans av Vänner och fiender från vår reduktion så måste den ursprungliga instansen av oberoende mängd vara en ja-instans. Antag att det finns en giltig gästlista L. Den uppfyller att inget par av personer på listan är fiender med varandra. L är då också en giltig oberoende mängd, eftersom mängden fiendekanter är samma som den ursprungliga kantmängden i instansen av oberoende mängd. Slutsats: problemet är NP-svårt. Eftersom det även ligger i NP är det dessutom NP-fullständigt. 28

32 Konstruktion av Vänner och fiender Betrakta återigen problemet Vänner och fiender. Antag att det finns en algoritm FriendsEnemies(V, E v, E f ) som löser beslutsproblemet. Konstruera en polynomisk turingreduktion av konstruktionsproblemet till beslutsproblemet. I konstruktionsproblemet ska man konstruera (skriva ut) en gästlista av maximal storlek. 29

33 Konstruktion av Vänner och fiender Först behöver vi kunna lösa optimeringsproblemet för att hitta det maximala möjliga antalet gäster. Vi reducerar optimeringsproblemet till beslutsproblemet genom att binärsöka över målet K från 0 till V (se föreläsning 20 för detaljer). Givet detta, hur löser vi konstruktionsproblemet? Idén är samma som i problemet Konstruktion av kappsäckslösning från övning 10: Använd beslutsproblemet för att avgöra om ett element är nödvändigt i en optimal lösning. Vi vill alltså för en viss nod v kunna testa: finns det en optimal lösning om inte innehåller v? För kappsäckskonstruktionen kunde vi bara plocka bort ett föremål för att testa om det var nödvändigt. Det fungerar inte här. Varför inte? 30

34 Konstruktion av Vänner och fiender För kappsäckskonstruktionen kunde vi bara plocka bort ett föremål för att testa om det var nödvändigt. Det fungerar inte här. Varför inte? Att plocka bort en nod ur grafen kan få stora konsekvenser för probleminstansen. Till exempel kan det maximala antalet gäster öka om man plockar bort en nod (se exempel på tavlan)... Vi måste alltså hitta en annan metod för att kolla detta. Idéer? Hint: gadget 31

35 Konstruktion av Vänner och fiender Inför en gadget bestående av tre noder: Gud, Djävulen och Judas. Gud och Djävulen är fiender, men Judas är vän med båda. Judas kan alltså aldrig vara med i en giltig vänlista. = någon som känner Judas kan aldrig vara med i en giltig vänlista. Att koppla ihop en nod v med Judas och sedan anropa beslutsproblemet är alltså ett bra sätt att kontrollera om det finns en maximal vänlista som inte innehåller v. 32

36 Konstruktion av Vänner och fiender 1: function FriendsEnemiesConstruction(V, E v, E f ) 2: K opt FriendsEnemiesOpt(V, E v, E f ) 3: V V {v G, v D, v J } 4: E v E v {(v J, v G ), (v J, v D )} 5: E f E f {(v G, v D )} 6: L V 7: for varje nod v V do 8: if FriendsEnemies(V, E v {(v, v J )}, E f ) then 9: L L {v} 10: return L Vi gör O( V + log V ) = O( V ) anrop av beslutsproblemet, och reduktionen är bortsett från detta linjär i storleken på grafen. Alltså är detta en polynomisk turingreduktion. 33

37 Konstruktion av Vänner och fiender Korrekthet Det finns en delmängd till L som är en lösning, ty detta är dels uppfyllt innan slingan, och dels efter varje iteration. L innehåller inga överflödiga element, ty for-slingan löper över alla element i V och tar bort de som vi kan klara oss utan. = L är en lösning 34

38 Nästa gång Hur kan vi hantera NP-fullständiga problem i praktiken? Approximationsalgoritmer Mina slides ligger på Canvas under Moduler/Antons övningsmaterial. 35

Övningsmästarprov 2 + några NP-reduktioner. Algoritmer, datastrukturer och komplexitet

Ö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 mer

Algoritmer, datastrukturer och komplexitet

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

Läs mer

Algoritmer, datastrukturer och komplexitet

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

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, 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 mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, 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 mer

Föreläsning 9: NP-fullständighet

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

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, 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 mer

Algoritmer, datastrukturer och komplexitet

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:

Läs mer

Fö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?

Fö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 mer

Fö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?

Fö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

Komplexitetsklasser och repetition

Komplexitetsklasser och repetition Algoritmer, datastrukturer och komplexitet, hösten 2016 Uppgifter till övning 12 Komplexitetsklasser och repetition Uppgifter på komplexitetsklasser co-np-fullständighet Ett diskret tekniskt diagnosproblem

Läs mer

Föreläsning 12+13: Approximationsalgoritmer

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

Läs mer

Algoritmer, datastrukturer och komplexitet

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

Läs mer

Algoritmer, datastrukturer och komplexitet

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

Läs mer

Föreläsning 8: Intro till Komplexitetsteori

Föreläsning 8: Intro till Komplexitetsteori Föreläsning 8: Intro till Komplexitetsteori Formalisering av rimlig tid 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

Läs mer

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. 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

Läs mer

Föreläsning 1. Introduktion. Vad är en algoritm?

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

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 1 Anton Grensjö grensjo@csc.kth.se 14 september 2015 Anton Grensjö ADK Övning 1 14 september 2015 1 / 22 Översikt Kursplanering F1: Introduktion, algoritmanalys

Läs mer

Grundläggande logik och modellteori

Grundläggande logik och modellteori Grundläggande logik och modellteori Kapitel 4: Konjunktiv och disjunktiv normalform Henrik Björklund Umeå universitet 15. september, 2014 CNF och DNF Konjunktiv normalform (CNF) Omskrivning av en formel

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 8 Anton Grensjö grensjo@csc.kth.se 10 november 2015 Anton Grensjö ADK Övning 8 10 november 2015 1 / 34 Översikt Kursplanering F21: Introduktion till komplexitet

Läs mer

PCP-satsen på kombinatoriskt manér

PCP-satsen på kombinatoriskt manér austrin@kth.se Teorigruppen Skolan för Datavetenskap och Kommunikation 2005-10-24 Agenda 1 Vad är ett bevis? Vad är ett PCP? PCP-satsen 2 Vad, hur och varför? Lite definitioner Huvudresultatet 3 Ännu mer

Läs mer

n (log n) Division Analysera skolboksalgoritmen för division (trappdivision). Använd bitkostnad.

n (log n) Division Analysera skolboksalgoritmen för division (trappdivision). Använd bitkostnad. Algoritmer och Komplexitet ht 08. Övning 1 Algoritmanalys Ordo Jämför följande par av funktioner med avseende på hur dom växer då n växer. Tala i varje fall om ifall f(n) Θ(g(n)), f(n) O(g(n)) eller f(n)

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, 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 mer

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ö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 mer

I en matchning ligger varje hörn i högst en kant. I en stig ligger varje hörn i högst två kanter.

I 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 mer

Föreläsning 5: Dynamisk programmering

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

Läs mer

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

TDDI16 Datastrukturer och algoritmer. Algoritmanalys TDDI16 Datastrukturer och algoritmer Algoritmanalys 2017-08-28 2 Översikt Skäl för att analysera algoritmer Olika fall att tänka på Medelfall Bästa Värsta Metoder för analys 2017-08-28 3 Skäl till att

Läs mer

Grundläggande logik och modellteori

Grundläggande logik och modellteori Grundläggande logik och modellteori Kapitel 6: Binära beslutsdiagram (BDD) Henrik Björklund Umeå universitet 22. september, 2014 Binära beslutsdiagram Binära beslutsdiagram (Binary decision diagrams, BDDs)

Läs mer

Dugga Datastrukturer (DAT036)

Dugga Datastrukturer (DAT036) Dugga Datastrukturer (DAT036) Duggans datum: 2012-11-21. Författare: Nils Anders Danielsson. För att en uppgift ska räknas som löst så måste en i princip helt korrekt lösning lämnas in. Enstaka mindre

Läs mer

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

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

Läs mer

Föreläsning 5 Innehåll

Föreläsning 5 Innehåll Föreläsning 5 Innehåll Algoritmer och effektivitet Att bedöma och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Datavetenskap (LTH) Föreläsning 5 VT 2019 1 / 39 Val av algoritm och datastruktur

Läs mer

Programkonstruktion och Datastrukturer

Programkonstruktion 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 mer

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

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 mer

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4

Introduktion 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 mer

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)

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

Läs mer

Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL2 och Media 1, SF1610 och 5B1118, onsdagen den 17 augusti 2011, kl

Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL2 och Media 1, SF1610 och 5B1118, onsdagen den 17 augusti 2011, kl Matematiska Institutionen KTH Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL och Media, SF60 och 5B8, onsdagen den 7 augusti 0, kl 4.00-9.00. Examinator: Olof Heden Hjälpmedel: Inga

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Föreläsningsanteckningar i Algoritmer, datastrukturer och komplexitet hösten 2015 Viggo Kann Algoritmer, datastrukturer och komplexitet, föreläsning 1 Första timmen: kursöversikt Andra timmen: algoritmanalys,

Läs mer

Föreläsning 5: Grafer Del 1

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

Läs mer

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

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

Läs mer

Tentamen Datastrukturer (DAT037)

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

Läs mer

Lösning av tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, tisdagen den 27 maj 2014, kl

Lösning av tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, tisdagen den 27 maj 2014, kl 1 Matematiska Institutionen KTH Lösning av tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, tisdagen den 27 maj 2014, kl 14.00-19.00. Examinator: Olof Heden Hjälpmedel: Inga hjälpmedel

Läs mer

Grundläggande logik och modellteori

Grundläggande logik och modellteori Grundläggande logik och modellteori Kapitel 7: SAT-lösare Henrik Björklund Umeå universitet 29. september, 2014 SAT En instans av SAT är en mängd av mängder av literaler. Exempel: {{p, q, r}, {p, q, s},

Läs mer

Föreläsning 8 Datastrukturer (DAT037)

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

Läs mer

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

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

Läs mer

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

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 mer

Tentamen Datastrukturer D DAT 035/INN960

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,

Läs mer

Tommy Färnqvist, IDA, Linköpings universitet

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

Läs mer

Tentamen TMV210 Inledande Diskret Matematik, D1/DI2

Tentamen TMV210 Inledande Diskret Matematik, D1/DI2 Tentamen TMV20 Inledande Diskret Matematik, D/DI2 208-0-27 kl. 4.00 8.00 Examinator: Peter Hegarty, Matematiska vetenskaper, Chalmers Telefonvakt: Anton Johansson, telefon: 5325 (alt. Peter Hegarty 070-5705475)

Läs mer

Tommy Färnqvist, IDA, Linköpings universitet

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

Läs mer

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036) Tentamen Datastrukturer, DAT037 (DAT036) Datum och tid för tentamen: 2017-01-11, 14:00 18:00. Ansvarig: Fredrik Lindblad. Nås på tel nr. 031-772 2038. Besöker tentamenssalarna ca 15:00 och ca 17:00. Godkända

Läs mer

Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek

Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek Föreläsning 5 Innehåll Val av algoritm och datastruktur Algoritmer och effektivitet Att bedöma och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Det räcker inte med att en algoritm är korrekt

Läs mer

Föreläsning 6: Introduktion av listor

Föreläsning 6: Introduktion av listor Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.

Läs mer

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036) Tentamen Datastrukturer, DAT037 (DAT036) Datum, tid och plats för tentamen: 2017-08-17, 8:30 12:30, M. Ansvarig: Fredrik Lindblad. Nås på tel nr. 031-772 2038. Besöker tentamenssalarna ca 9:30 och ca 11:00.

Läs mer

Algoritmer och effektivitet. Föreläsning 5 Innehåll. Analys av algoritmer. Analys av algoritmer Tidskomplexitet. Algoritmer och effektivitet

Algoritmer och effektivitet. Föreläsning 5 Innehåll. Analys av algoritmer. Analys av algoritmer Tidskomplexitet. Algoritmer och effektivitet Föreläsning 5 Innehåll Algoritmer och effektivitet Algoritmer och effektivitet Att bedöma, mäta och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Undervisningsmoment: föreläsning 5, övningsuppgifter

Läs mer

Föreläsning 7. Felrättande koder

Föreläsning 7. Felrättande koder Föreläsning 7 Felrättande koder Antag att vi vill skicka ett meddelande som består av bokstäver a,b,c,d. Vi kan koda a,b,c,d. Antag att det finns en viss sannolikhet att en bit i ett meddelande som skickas

Läs mer

Dekomposition och dynamisk programmering

Dekomposition och dynamisk programmering Algoritmer, datastrukturer och komplexitet, hösten 2016 Uppgifter till övning 3 Dekomposition och dynamisk programmering Max och min med dekomposition I vektorn v[1..n] ligger n tal. Konstruera en dekompositionsalgoritm

Läs mer

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

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

Läs mer

Föreläsning Datastrukturer (DAT036)

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

Läs mer

Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen. 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 skrivna: Oändligt

Läs mer

Bakgrund. Bakgrund. Bakgrund. Håkan Jonsson Institutionen för systemteknik Luleå tekniska universitet Luleå, Sverige

Bakgrund. Bakgrund. Bakgrund. Håkan Jonsson Institutionen för systemteknik Luleå tekniska universitet Luleå, Sverige Är varje påstående som kan formuleras matematiskt*) alltid antingen sant eller falskt? *) Inom Institutionen för systemteknik Luleå tekniska universitet Luleå, Sverige Exempel: 12 = 13 nej, falskt n! >

Läs mer

DEL I. Matematiska Institutionen KTH

DEL I. Matematiska Institutionen KTH 1 Matematiska Institutionen KTH Lösning till tentamensskrivning på kursen Diskret Matematik, moment A, för D2 och F, SF1631 och SF1630, den 25 mars 2008. DEL I 1. (3p Bestäm antalet binära ord av längd

Läs mer

Tillämpad Programmering (ID1218) :00-13:00

Tillämpad Programmering (ID1218) :00-13:00 ID1218 Johan Montelius Tillämpad Programmering (ID1218) 2014-03-13 09:00-13:00 Förnamn: Efternamn: Regler Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.

Läs mer

Lektion 8: Konstruktion av semantiska tablåer för PTL-formler

Lektion 8: Konstruktion av semantiska tablåer för PTL-formler Lektion 8: Konstruktion av semantiska tablåer för PTL-formler Till denna lektion hör uppgift 2, 6 och 0 i lärobokens avsnitt.6 (sid. 255). Lös uppgift 2 genom att konstruera en semantisk tablå. Följande

Läs mer

Föreläsning Datastrukturer (DAT037)

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)

Läs mer

Frågan om P=NP? Är P=NP? Bakgrund. "Snabb lösning"?!

Frågan om P=NP? Är P=NP? Bakgrund. Snabb lösning?! Frågan om P=NP? Är P=NP? Institutionen för system- och rymdteknik Luleå tekniska universitet Luleå, Sverige Kan varje [beräknings-] problem vars lösning kan verifieras snabbt av en dator även lösas snabbt

Läs mer

Magnus Nielsen, IDA, Linköpings universitet

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

Läs mer

Föreläsning 5: Kardinalitet. Funktioners tillväxt

Fö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 mer

MMA132: Laboration 2 Matriser i MATLAB

MMA132: Laboration 2 Matriser i MATLAB MMA132: Laboration 2 Matriser i MATLAB Introduktion I den här labben skall vi lära oss hur man använder matriser och vektorer i MATLAB. Det är rekommerad att du ser till att ha laborationshandledningen

Läs mer

Föreläsning 7 Datastrukturer (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

Läs mer

Föreläsningsanteckningar F6

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

Läs mer

DD1350 Logik för dataloger. Fö 7 Predikatlogikens semantik

DD1350 Logik för dataloger. Fö 7 Predikatlogikens semantik DD1350 Logik för dataloger Fö 7 Predikatlogikens semantik 1 Kryssprodukt av mängder Om A och B är två mängder så är deras kryssprodukt A B mängden av alla par (a,b), där a A och b B. Ex: A={1,2}, B={3,4},

Läs mer

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.

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

Läs mer

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

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, 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 mer

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Datastrukturer 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 mer

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036) Tentamen Datastrukturer (DAT036) Datum och tid för tentamen: 2012-08-24, 8:30 12:30. Ansvarig: Nils Anders Danielsson. Nås på 0700 620 602 eller anknytning 1680. Besöker tentamenssalarna ca 9:30 och ca

Läs mer

Introduktion till programmering SMD180. Föreläsning 8: Listor

Introduktion till programmering SMD180. Föreläsning 8: Listor Introduktion till programmering Föreläsning 8: Listor 1 1 Listor = generaliserade strängar Strängar = sekvenser av tecken Listor = sekvenser av vad som helst Exempel: [10, 20, 30, 40] # en lista av heltal

Läs mer

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

TENTAMEN: Algoritmer och datastrukturer. Läs detta! 1 (6) TENTAMEN: Algoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt idnummer på varje blad (så att vi

Läs mer

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036) Tentamen Datastrukturer (DAT036) Datum och tid för tentamen: 2014-04-25, 14:00 18:00. Författare: Nils Anders Danielsson. Ansvarig: Nils Anders Danielsson. Nås på 0700 620 602 eller anknytning 1680. Besöker

Läs mer

Föreläsning 6 Datastrukturer (DAT037)

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

Läs mer

i=1 c i = B och c i = a i eller c i = b i för 1 i n. Beskriv och analysera en algoritm som löser detta problem med hjälp av dynamisk programmering.

i=1 c i = B och c i = a i eller c i = b i för 1 i n. Beskriv och analysera en algoritm som löser detta problem med hjälp av dynamisk programmering. Algoritmer och Komplexitet ht 8 Övning 3+4 Giriga algoritmer och Dynamisk programmering Längsta gemensamma delsträng Strängarna ALGORITM och PLÅGORIS har den gemensamma delsträngen GORI Denlängsta gemensamma

Läs mer

Föreläsning 6 Datastrukturer (DAT037)

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

Läs mer

Eulercykel. Kinesiska brevbärarproblemet. Kinesiska brevbärarproblemet: Metod. Kinesiska brevbärarproblemet: Modell. Definition. Definition.

Eulercykel. Kinesiska brevbärarproblemet. Kinesiska brevbärarproblemet: Metod. Kinesiska brevbärarproblemet: Modell. Definition. Definition. Eulercykel Definition En Eulercykel är en cykel som använder varje båge exakt en gång. Definition En nods valens är antalet bågar som ansluter till noden. Kinesiska brevbärarproblemet En brevbärartur är

Läs mer

1 Duala problem vid linjär optimering

1 Duala problem vid linjär optimering Krister Svanberg, april 2012 1 Duala problem vid linjär optimering Detta kapitel handlar om två centrala teoretiska resultat för LP, nämligen dualitetssatsen och komplementaritetssatsen. Först måste vi

Läs mer

TAOP07/TEN1 OPTIMERINGSLÄRA GRUNDKURS för Y. Antal uppgifter: 7 Uppgifterna är inte ordnade efter svårighetsgrad.

TAOP07/TEN1 OPTIMERINGSLÄRA GRUNDKURS för Y. Antal uppgifter: 7 Uppgifterna är inte ordnade efter svårighetsgrad. Matematiska institutionen Optimeringslära TENTAMEN TAOP07/TEN1 OPTIMERINGSLÄRA GRUNDKURS för Y Datum: 27 augusti 2013 Tid: 14-19 Hjälpmedel: Inga Antal uppgifter: 7 Uppgifterna är inte ordnade efter svårighetsgrad.

Läs mer

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036) Tentamen Datastrukturer (DAT036) Datum och tid för tentamen: 2013-12-16, 14:00 18:00. Ansvarig: Nils Anders Danielsson. Nås på 0700 620 602 eller anknytning 1680. Besöker tentamenssalarna ca 15:00 och

Läs mer

Programmering II (ID1019) :00-17:00

Programmering II (ID1019) :00-17:00 ID1019 Johan Montelius Programmering II (ID1019) 2014-03-10 14:00-17:00 Förnamn: Efternamn: Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.

Läs mer

Tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, onsdagen den 20 augusti 2014, kl

Tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, onsdagen den 20 augusti 2014, kl 1 Matematiska Institutionen KTH Tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, onsdagen den 20 augusti 2014, kl 14.00-19.00. Examinator: Olof Heden Hjälpmedel: Inga hjälpmedel är tillåtna

Läs mer

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

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, 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 mer

Algebra I, 1MA004. Lektionsplanering

Algebra I, 1MA004. Lektionsplanering UPPSALA UNIVERSITET Matematiska Institutionen Dan Strängberg HT2016 Fristående, IT, KandDv, KandMa, Lärare 2016-11-02 Algebra I, 1MA004 Lektionsplanering Här anges rekommenderade uppgifter ur boken till

Läs mer

K2 Något om modeller, kompakthetssatsen

K2 Något om modeller, kompakthetssatsen KTH Matematik Bengt Ek Maj 2005 Kompletteringsmaterial till kursen 5B1928 Logik för D1: K2 Något om modeller, kompakthetssatsen Vi skall presentera ett enkelt (om man känner till sundhets- och fullständighetssatsen

Läs mer

Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.

Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer. Föreläsning 9 Innehåll Mer om rekursion söndra-och-härska-algoritmer dynamisk programmering backtracking Orientering om versionshantering med git Söndra och härska Divide and conquer teknik för att konstruera

Läs mer

1 Minkostnadsflödesproblem i nätverk

1 Minkostnadsflödesproblem i nätverk Krister Svanberg, april 2012 1 Minkostnadsflödesproblem i nätverk Ett nätverk består av en given mängd noder numrerade från 1 till m (där m är antalet noder) samt en given mängd riktade bågar mellan vissa

Läs mer

Tentamen Datastrukturer för D2 DAT 035

Tentamen Datastrukturer för D2 DAT 035 Tentamen Datastrukturer för D2 DAT 035 17 december 2005 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.) Betygsgränser:

Läs mer

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära

Läs mer

Föreläsning Datastrukturer (DAT036)

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

Läs mer

Lösningar för tenta i TMV200 Diskret matematik kl. 14:00 18:00

Lösningar för tenta i TMV200 Diskret matematik kl. 14:00 18:00 Lösningar för tenta i TMV200 Diskret matematik 2018-08-31 kl 1:00 18:00 1 Om argumentet inte är giltigt går det att hitta ett motexempel, dvs en uppsättning sanningsvärden för vilka alla hypoteserna är

Läs mer

Användarhandledning Version 1.2

Användarhandledning Version 1.2 Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...

Läs mer

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

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, 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 mer