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

Relevanta dokument
Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

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

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

Föreläsning 12+13: Approximationsalgoritmer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

Komplexitetsklasser och repetition

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?

Algoritmer, datastrukturer och komplexitet

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?

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

Föreläsning 8: Intro till Komplexitetsteori

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

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

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.

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

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

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

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

Föreläsning 4: Giriga algoritmer. Giriga algoritmer

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

Föreläsning 1. Introduktion och sökning i graf. Vad är en algoritm?

Algoritmer, datastrukturer och komplexitet

Övningshäfte 2: Induktion och rekursion

Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 11 april, 2002

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

Föreläsningsanteckningar F6

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

Programkonstruktion och Datastrukturer

Föreläsning 5: Dynamisk programmering

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

Tentamen Datastrukturer (DAT037)

I den här uppgiften ska du undersöka förhållandet mellan parabelarean och rektangelarean.

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

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

MA2047 Algebra och diskret matematik

DEL I. Matematiska Institutionen KTH

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

PCP-satsen på kombinatoriskt manér

Föreläsning 2. Kortaste vägar i grafer.

Svar till S-uppgifter Endimensionell Analys för I och L

Lösningar till utvalda uppgifter i kapitel 5

Problemlösning Fk- åk 3 19/ Pia Eriksson

SF2715 Tillämpad kombinatorik, 6hp

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

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

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.

Optimering med bivillkor

NP-fullständighetsbevis

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

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

Föreläsning Datastrukturer (DAT037)

Om existens och entydighet av lösningar till ordinära differentialekvationer

Datastrukturer och algoritmer

Diskret Matematik A för CVI 4p (svenska)

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson

Kaliningrad) låg vid bägge sidor av floden Pregel samt på

Block 2 Algebra och Diskret Matematik A. Följder, strängar och tal. Referenser. Inledning. 1. Följder

Föreläsning 11. Giriga algoritmer

Tentamen Datastrukturer för D2 DAT 035

Grundläggande logik och modellteori

Tentamen Datastrukturer, DAT037 (DAT036)

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

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

Magnus Nielsen, IDA, Linköpings universitet

FEMSTEGSMODELLEN: ÖVNING & CHECKLISTA FÖR EN ÖPPEN OCH TILLGÄNGLIG VERKSAMHET

Föreläsning 11: Beräkningsgeometri

1. (3p) Ett RSA-krypto har parametrarna n = 77 och e = 37. Dekryptera meddelandet 3, dvs bestäm D(3). 60 = = =

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

Algebra och Diskret Matematik A (svenska)

Föreläsning 7. Felrättande koder

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

Tommy Färnqvist, IDA, Linköpings universitet

1 Duala problem vid linjär optimering

Tentamen i EDAF05 Algoritmer, datastrukturer och komplexitet

Lektionsanteckningar 11-12: Normalfördelningen

Faktorisering med hjälp av kvantberäkningar. Lars Engebretsen

Np MaB vt Låt k = 0 och rita upp de båda linjerna. Bestäm skärningspunkten mellan linjerna.

Kombinatorik. Kapitel 2. Allmänt kan sägas att inom kombinatoriken sysslar man huvudsakligen med beräkningar av

DD1320 Tillämpad datalogi. Lösning (skiss) till tenta 20 okt 2011

Föreläsning 12. Söndra och härska

Föreläsning 12. Söndra och härska

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2

Härledning av Black-Littermans formel mha allmänna linjära modellen

Tekniker för storskalig parsning: Grundbegrepp

Repetera snabbt vad du lärde dig förra veckan. Du är nu redo att kasta dig in i nästa fas, teorin om villkor.

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

Grundläggande logik och modellteori

Tentamen TMV210 Inledande Diskret Matematik, D1/DI2

Lösningar till KATT 2014

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Transkript:

Ö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å att orden i den packade texten i övningsmästarprov 1 ska vara i samma ordning som i indata. Då kan det vara möjligt att packa texten på färre rader än den giriga algoritmen kan. Textpackningsproblemet har som indata ordlängderna w1,..., wn och radlängden len. Alla tal i indata är positiva heltal. Problemet är att ta reda på det minimala antalet rader av längd len som de n orden kan rymmas på om det är tillåtet att blanda om orden. Orden ska ha mellanslag mellan sig när dom placeras ut på raderna, precis som i övningsmästarprov 1. Formulera detta minimeringsproblem som ett beslutsproblem (genom att införa ett mål) och visa att beslutsproblemet är NP-fullständigt. När du ska visa att problemet är NP-svårt är det lämpligt att reducera problemet Mängdpartitionering (givet en multimängd positiva heltal, går det att partitionera talen i två delar som har samma summa?).

Vi inför ett mål K i indata i formuleringen av minimeringsproblemet som beslutsproblem: Indata: ordlängder w1,..., wn, radlängd len, mål K. Alla tal är positiva heltal och alla ordlängder är högst len. 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?

Först visar vi att textpackningsproblemet ligger i NP. För varje ja-instans ska en lösning kunna verifieras i polynomisk tid. Låt lösningen vara utplaceringen av orden på K rader, alltså vilka ord som ska placeras på vilken rad, till exempel representerad som en funktion f från [1..n] till [1..K]. När lösningen är formulerad som en funktion på detta sätt behöver verifieringsalgoritmen bara kolla att längden, inklusive mellanslag, inte blir större än len på någon rad. Om K n är det trivialt att det finns en lösning (med ett ord på varje rad).

Först visar vi att textpackningsproblemet ligger i NP. För varje jainstans ska en lösning kunna verifieras i polynomisk tid. Låt lösningen vara utplaceringen av orden på K rader, alltså vilka ord som ska placeras på vilken rad, till exempel representerad som en funktion f från [1..n] till [1..K]. När lösningen är formulerad som en funktion på detta sätt behöver verifieringsalgoritmen bara kolla att längden, inklusive mellanslag, inte blir större än len på någon rad. Om K n är det trivialt att det finns en lösning (med ett ord på varje rad). Tidskomplexiteten för verifieringsalgoritmen är O(n) med enhetskostnad. Om antalet bitar i talen i indata är högst m så tar en addition bitkostnaden O(m) och bitkomplexiteten för algoritmen blir O(nm) som är polynomiskt.

Vi visar nu att problemet är NP-svårt med en reduktion av mängdpartitionering. Idén är att varje tal i indata till mängdpartitioneringsproblemet ska motsvaras av ett ord med en viss längd i textpackningsproblemet, så att vi kan få in alla ord på två rader om och endast om det går att partitionera talen i två delar med samma summa. Mellan varje ord finns det ett mellanslag. För att ta hänsyn till det borde vi låta ordlängden vara ett mindre än talets storlek, men då kommer talet ett att motsvara ordlängden noll, och det är en otillåten ordlängd. För att undvika ordlängden noll tar vi och multiplicerar varje tal med samma heltalskonstant (till exempel 2, men större tal fungerar också) innan vi drar bort ett för att få ordlängden. Då motsvaras talet 1 av ordlängden 2 1 1 = 1. Radlängden ska sättas till ett mindre än summan av alla tal, eftersom det inte är något mellanslag efter sista ordet på raden.

MÄNGDPARTITIONERING({s1, s2,..., sn}) = σ 0 for i 1 to n do wi 2si 1 σ σ + si len σ 1 K 2 return TEXTPACKING({w1, w2,..., wn}, len, K)

Indata: {s1, s2, s3, sn} = {1, 2, 3, 4} {w1, w2, w3, w4} = {1, 3, 5, 7} len: 1+2+3+4-1 = 9 1 (1) 7 (4) 3 (2) 5 (3)

För att bevisa att detta är en Karpreduktion ska vi visa att varje ja-instans för mängdpartitioneringsproblemet transformeras till en ja-instans för textpackningsproblemet och att varje nej-instans för mängdpartitioneringsproblemet transformeras till en nej-instans för textpacknings- problemet. Den andra delen är ekvivalent med att visa att för varje jainstans för textpacknings- problemet som kan skapas av transformationen så är motsvarande mängdpartitioneringsinstans en ja-instans. I en uppgift på E-nivå krävs inte att dessa två bevis genomförs i detalj

Om det finns en partitionering av {s1, s2,..., sn} i A och B där summan av talen i A är lika med summan av talen i B så ska vi visa att det finns en textpackning på 2 rader av längd σ 1 där σ är summan av alla talen {s1, s2,..., sn}. Eftersom A och B har samma summa så måste σ/2 vara precis denna summa. Om vi placerar ut orden som motsvarar talen i A på första raden och orden som motsvarar talen i B på andra raden så blir båda radlängderna 2σ/2 1 = σ 1 eftersom varje ord, inräknat det efterföljande mellanslaget (dvs ordlängden plus 1), är dubbelt så långt som motsvarande tals värde och det sista ordet på raden inte har något mellanslag efter sig. Därför uppfyller textpackningen villkoret.

Anta nu istället att vi har en textpackning på två rader av längd σ 1 och visa att det finns en mängdpartitionering. Lägg till ett mellanslag efter sista ordet på varje rad. Summan av alla ordlängder på varje rad inklusive efterföljande mellanslag är nu högst σ och motsva- rande tal har då summan högst σ/2. Eftersom summan av alla tal är σ så blir det en jämn partitionering om vi låter A vara talen som motsvarar orden på första raden och B övriga.

Det är också nödvändigt att visa att Karpreduktionen tar polynomisk tid. Reduktionen ovan tar med bitkostnad tid O(nm), där m är antalet bitar i största talet i indata, vilket är polynomiskt. Alltså är textpackningsproblemet NPfullständigt.

Bedömningskriterier Kamraträttarens namn: Den bedömda elevens namn: Rättningsprotokoll för övningsmästarprov 2 i adk18 Bedömningskriterium NP-fullständighet och NP-tillhörighet Förklarar vilka steg som behöver ingå i NPfullständighetsbevis, och vad varje steg är bra till Formulerar problemet som ett beslutsproblem Förklarar vad en lösning består av Beskriver hur man verifierar en ja-lösning eller visar NP-tillhörighet på ett annat acceptabelt sätt Motiverar att verifikationsalgoritmen (motsv.) är polynomisk Reduktionsalgoritm Beskriver reduktionen övergripande i ord och eventuellt i bild Beskriver reduktionen tillräckligt tydligt (pseudokod inte nödvändigt) Reduktionen är korrekt Tidskomplexitet för reduktionen Anger komplexitet(-sklass) för reduktionen, eller vilken som krävs för NP-reduktioner i allmänhet Motiverar tidskomplexitet (överensstämmer med algoritmen och den angivna komplexiteten) Korrekthetsresonemang Förklarar vad man behöver visa i ett korrekthetsbevis för en NP-reduktion Genomför ett korrekt resonemang som omfattar alla nödvändiga delar Helt rätt Litet fel Fel/saknas M M M M M M Kan ej bedöma Förklaring till bedömningen

Bara den som har med sig en lösning på övningsmästarprovet kan delta i resten av övningen Om ni inte har en lösning med er kan ni gå nu (ni får ta med er bedömningsinstruktionsbladet). Ni är välkomna tillbaka andra timmen on ni vill :)

Dela in er i par! Om ni jobbat ihop med lösningen får ni inte vara i samma par. Om ni är ojämnt antal blir en grupp tre. Byt lösningar inom paren Genomför kamratbedömning enskilt enligt instruktionerna (prata inte med den ni rättar när ni gör detta, även om något i lösningen är oklart) Därefter: diskutera era bedömningar med varandra (inom varje par alltså). Jag kommer dela ut närvarolistor jag vill att ni skriver på. När ni är klara: lämna in era lösningar. Behåll bedömningsprotokollen. Ta rast/gå hem.

Reduktion 3-SAT till största oberoende mängd 3-SAT: (x y z) && (!x u!v) && (!y!z u)... Oberoende mängd: finns en delmängd av hörn i en graf sådan att delmängden har storlek k och inte ett enda par av hörn i delmängden har en kant mellan sig

Reduktion 3-SAT till oberoende mängd Skapa en komponent av varje klausul (k st) Tre hörn som sitter ihop i en triangel ett hörn per literal (x, y, z) Har nu lika många komponenter som klausuler (k st) För varje hörn som motsvarar x, dra en kant till alla hörn som motsvarar!x Om det finns en oberoende mängd av storlek k så är SATinstansen satistfierbar

Reduktion 3-SAT till oberoende mängd

Reduktion Partyproblemet Vi ska ha fest och vill bjuda så många personer som möjligt Tyvärr är vi karaktärer i tv-serien Gossip Girl, och på grund av detta är det mycket drama i våra liv Vissa av våra vänner skyr varandra som pest, och vägrar gå på samma fest Andra älskar varandra mer än allt, och kommer under inga omständigheter komma om inte hela deras grupp är bjuden Kommer vi lyckas ordna en stor fest eller borde vi ge upp?

Reduktion Partyproblemet Det går inte att lösa på polynomisk tid Dvs det är NP-fullständigt Kan reducera största oberoende mängd OM vi har en algoritm A som löser beslutsproblemet (kan vi ha en fest med k personer), hur kan vi avgöra vilka som ska bjudas?

Reduktion Partyproblemet OM vi har en algoritm A som löser beslutsproblemet (kan vi ha en fest med k personer), hur kan vi avgöra vilka som ska bjudas? En gadget: Gud, djävulen och Judas. Gud och djävulen har svårt för varandra Men båda älskar Judas Kan inte bjuda någon av dem Koppla denna gadget på en gäst i taget Judas kompis med gästen Går det fortfarande att bjuda k gäster? Ta bort Judas nya kompis, och alla hennes vänner från listan. Går det inte? Då måste nya kompisen komma. Gör henne till kompis med alla som är kvar på listan. G d J

Reduktion 3-SAT till delmängdsumma