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 från tentor och muntor Anton Grensjö ADK Övning 12 10 december 2015 2 / 19
Komplexitetsklasser Repetition Repetition P: mängden av problem som kan lösas på polynomisk tid. NP: mängden av problem vars ja-instanser kan verifieras på polynomisk tid. CO-NP: mängden av problem vars nej-instanser kan verifieras på polynomisk tid. Ett problem A CO-NP om komplementproblemet till A tillhör NP. Exempel: Finns det inte någon hamiltonsk cykel? EXPTIME: mängden av problem som kan lösas i exponentiell tid. PSPACE: mängden av problem som kan lösas med tillgång till polynomiskt mycket minne (oavsett tid). Anton Grensjö ADK Övning 12 10 december 2015 3 / 19
Komplexitetsklasser co-np-fullständighet Uppgift 1: co-np-fullständighet Modell av ett tekniskt diagnosproblem: Vi har någon form av system, där komponenttillstånd, systemtillstånd och omgivningstillstånd representeras av boolska variabler. Systemet representeras av en boolsk formel ϕ. Om systemet fungerar så kommer variablerna ha värden så att ϕ är sann. En komponent c representeras av en boolsk variabel x c (sant = fungerar, falskt = trasig). Vi vet att c är trasig om: när vi sätter in alla kända variabelvärden, samt x c sann, i ϕ, så är den resulterande formeln inte satisfierbar. Visa att det är co-np-fullständigt att avgöra ifall c är trasig. Anton Grensjö ADK Övning 12 10 december 2015 4 / 19
Komplexitetsklasser co-np-fullständighet Uppgift 1: co-np-fullständighet Tillhör co-np: Vi ska visa att vi i polynomisk tid kan verifiera en nej-instans, dvs att c inte är trasig. c är inte trasig det finns en variabeltilldelning som satisfierar ϕ där x c sann. Låt en sådan variabeltilldelning vara vår lösning. Trivialt att verifiera på polynomisk tid. Anton Grensjö ADK Övning 12 10 december 2015 5 / 19
Komplexitetsklasser co-np-fullständighet Uppgift 1: co-np-fullständigt co-np-svårt: Vilket co-np-fullständigt problem ska vi reducera? Vilka co-np-fullständiga problem känner vi till? Vi reducerar CO-SAT (problemet att avgöra ifall en given boolsk formel φ inte är satisfierbar). Reduktionen: Låt φ vara en instans av CO-SAT. Givet φ, konstruera ett system med den extra komponenten c, representerad av x c, och som definieras av ϕ = φ x c. Anropa nu en algoritm som löser vårt problem, med ϕ som indata. Om x c sätts till sann blir ϕ = φ, så problemet att avgöra ifall c är trasig är precis samma som att avgöra ifall φ inte är satisfierbar. Alltså är reduktionen korrekt. Problemet är alltså co-np-fullständigt. Anton Grensjö ADK Övning 12 10 december 2015 6 / 19
Komplexitetsklasser Komplexitetsklassrelation Uppgift 2: Komplexitetsklassrelation PSPACE: Komplexitetsklassen som består av alla språk för vilka det existerar en deterministisk turingmaskin som känner igen språket i polynomiskt minne. EXPTIME: Består av alla språk för vilka det existerar en deterministisk turingmaskin som känner igen språket i exponentiell tid. Visa att PSPACE EXPTIME. Anton Grensjö ADK Övning 12 10 december 2015 7 / 19
Komplexitetsklasser Komplexitetsklassrelation Uppgift 2: Komplexitetsklassrelation Visa att PSPACE EXPTIME. Betrakta en turingmaskin som löser ett problem med polynomiskt minne. Det finns ett tal k så att antalet använda rutor på bandet är O(n k ) (n indatastorlek). Om alfabetet består av tre tecken, så är antalet möjliga kombinationer 3 O(nk). Antalet möjliga platser för läs/skrivhuvudet är O(n k ). Totala antalet konfigurationer är alltså O(n k ) 3 O(nk), exponentiellt i n. Om man kommer tillbaka till samma konfiguration igen är man i en oändlig loop, så antalet konfigurationer är en övre gräns på antal steg som behövs för att lösa problemet. Varje problem som kan lösas med polynomiskt minne kan alltså lösas på exponentiell tid. Anton Grensjö ADK Övning 12 10 december 2015 8 / 19
Uppgift 1: Sant eller falskt? Är följande påståenden sanna eller falska? För varje deluppgift ger riktigt svar 1 poäng och ett övertygande bevisat riktigt svar 2 poäng, a) Problemet att avgöra ifall ett tal med n siffror är ett primtal ligger i komplexitetsklassen co-np. Problemet ligger i co-np om komplementproblemet ligger i NP. Komplementproblemet: avgör ifall ett tal med n siffror är sammansatt (dvs kan faktoriseras i minst två faktorer större än 1). Detta problem ligger i NP, eftersom en lösning (en faktorisering av talet) kan verifieras på polynomisk tid. Hur? Svar: sant! Anton Grensjö ADK Övning 12 10 december 2015 9 / 19
Uppgift 1: Sant eller falskt? Är följande påståenden sanna eller falska? För varje deluppgift ger riktigt svar 1 poäng och ett övertygande bevisat riktigt svar 2 poäng, b) Det finns en konstant c > 1 så att n 3 O(c log n ). Kom ihåg räkneregler för exponentialfunktionen och logaritmen! n 3 = 2 log n3 = 2 3 log n = ( 2 3) log n = 8 log n Dvs om c = 8 så är n 3 = c log n = n 3 Θ(c log n ). Dvs n 3 och c log n växer lika snabbt om c = 8. c log n måste växa snabbare om c > 8. Slutsats: Om c 8 så gäller n 3 O(c log n ). Svar: sant! Anton Grensjö ADK Övning 12 10 december 2015 10 / 19
Uppgift 1: Sant eller falskt? Är följande påståenden sanna eller falska? För varje deluppgift ger riktigt svar 1 poäng och ett övertygande bevisat riktigt svar 2 poäng, c) Binära träd implementerar man vanligen genom att införa två pekare i varje post (left och right). När man implementerar ternära träd (där varje nod har tre söner) går det inte att klara sig med mindre än tre pekare i varje post. Falskt! Varje nod kan innehålla en pekare till sitt första barn, samt sitt nästa syskon. Anton Grensjö ADK Övning 12 10 december 2015 11 / 19
Uppgift 2: Klädstrecket (Algoritmkonstruktion, betyg C) Viggo har hängt n stycken handdukar av olika storlek på ett klädsträck. Varje handduk har en startkoordinat v i och en slutkoordinat h i. Viggo vill säkra handdukarna med klädnypor. Det räcker med att varje handduk hålls på plats av en klädnypa. Överlappande handdukar kan dela på samma klädnypa. Indata: n, (v 1, h 1 ), (v 2, h 2 ),..., (v n, h n ). Konstruera en algoritm som så snabbt som möjligt beräknar var på sträcket man ska sätta nyporna, för att minimera antalet nypor som krävs. Motivera korrekthet och analysera med enhetskostnad. Anton Grensjö ADK Övning 12 10 december 2015 12 / 19
Uppgift 2: Klädstrecket Vilken typ av algoritm kan vara lämplig här? Vi försöker konstruera en girig algoritm. 1 Sortera alla par, dels med avseende på vänsterkanten och dels med avseende på högerkanten. Lagra resultaten i två listor, Vsort och Hsort. Håll under sorteringen reda på var varje post i den ena listan hamnar i den andra listan. 2 Så länge listan Hsort är icke-tom: 1 Ta det första återstående paret i Hsort, säg (v, h). Detta är den handduk i listan vars högerkant ligger längst till vänster. 2 Sätt en klädnypa längst till höger på denna handduk. 3 Ta bort alla par vars vänsterkant är till vänster om h (dvs ta bort alla handdukar som vår nya nypa sätter fast). Dvs ta bort par från början av Vsort. För varje par som tas bort, ta bort motsvarande par från Hsort. Tidskomplexitet? O(n log n) Anton Grensjö ADK Övning 12 10 december 2015 13 / 19
Uppgift 2: Klädsträcket Korrekthet: Vi plockar bara bort handdukar som redan har fått en klädnypa i sig = alla handdukar kommer sitta fast när algoritmen är klar. Visa att antalet klädnypor blir optimalt: Betrakta handduken med lägst högerkoordinat. Den måste sitta fast, men var ska vi placera klädnypan? Om man sätter fast den i punkten p så kommer alla handdukar med vänsterkant mindre än p att sitta fast. För att sätta fast så många handdukar som möjligt, vill vi alltså välja p så långt till höger som möjligt. Dvs det måste vara optimalt att sätta nypan i handdukens högerkant....upprepa argumentet för de övriga handdukarna... Anton Grensjö ADK Övning 12 10 december 2015 14 / 19
Uppgift 3: Grupprepresentanter Det finns många olika grupper av personer på KTH. komplexitet, betyg C Rektorn vill ha ett smidigt sätt att snabbt föra ut information till alla personer på KTH. Därför vill han skapa en grupp av informatörer, med följande krav: Varje grupp ska vara representerad. Informatörsgruppen ska vara så liten som möjligt. Problemet är alltså att givet en uppsättning grupper (ej nödvändigtvis disjunkta!) hitta en så liten skara av representanter som möjligt. Uppgift: Formulera problemet matematiskt som ett mängdproblem och beskriv det som ett beslutsproblem. Visa att beslutsproblemet är NP-fullständigt. Anton Grensjö ADK Övning 12 10 december 2015 15 / 19
Uppgift 3: Grupprepresentanter Matematisk formulering: Låt k vara ett positivt heltal. Låt S vara mängden personer. Låt C = {C 1,..., C m } vara de m grupperna. Problemet: Existerar det en delmängd S S med högst k element så att S C i för 1 i m? Ligger problemet i NP? Låt en lösning vara mängden S. Vi kan verifiera en lösning genom att: 1 Kolla att S k. 2 Kolla att S S. 3 Kolla att S C i för 1 i m. Detta kan uppenbarligen göras på polynomisk tid. Problemet ligger alltså i NP. Anton Grensjö ADK Övning 12 10 december 2015 16 / 19
Uppgift 3: Grupprepresentanter NP-svårt? Vilket problem ska vi reducera? Hörntäckning! Givet en instans G = (V, E) till hörntäckning, låt S = V och C = E. En hörntäckning av storlek k motsvarar precis en delmängd S S av storlek k som innehåller minst ett element från varje C i. Anton Grensjö ADK Övning 12 10 december 2015 17 / 19
Fler blandade uppgifter Det finns två uppgifter till i övningsanteckningarna, som vi går igenom om vi hinner. Anton Grensjö ADK Övning 12 10 december 2015 18 / 19
Slut Sista övningen Tack för den här kursen! Jag tar väldigt gärna emot feedback angående övningarna, så prata gärna med mig, eller skicka iväg ett mejl. Lycka till på mästarprovsredovisningarna och på tentan! Anton Grensjö ADK Övning 12 10 december 2015 19 / 19