510 likes | 649 Views
Øvingsforelesning 12. Redusering av problemer, P, NP, NPC og eksempler av disse Børge Rødsjø rodsjo@stud.ntnu.no. Dagens tema. Redusering av problemer Problemklasser P, NP og NPC Eksempler på NPC-problemer Teoriøving 11: Grådighet Prakisøving 11: Pengeveksling
E N D
Øvingsforelesning 12 Redusering av problemer, P, NP, NPC og eksempler av disse Børge Rødsjø rodsjo@stud.ntnu.no
Dagens tema • Redusering av problemer • Problemklasser • P, NP og NPC • Eksempler på NPC-problemer • Teoriøving 11: Grådighet • Prakisøving 11: Pengeveksling • Praksisøving 12: Tvilling-DNA Øvingsforelesning 12 - Børge Rødsjø
Nytt ukjent problem • Du kommer over et nytt problem du ønsker å løse • Hvordan skal man gå frem for å finne en løsning av problemet? • Løs problemet med en kjent algoritme • Hvis ingen kjent algoritme finnes; se om problemet likner et problem man har algoritme for • Bevis at det ikke finnes noen løsning av problemet (i polynomisk tid, O(nk), der k konstant) Øvingsforelesning 12 - Børge Rødsjø
Løse problemet med kjent algoritme • Hvis det nye problemet kan løses med en kjent algoritme, er problemet enkelt/trivielt • Men vær oppmerksom på hvilke krav de ulike algoritmene har for input Øvingsforelesning 12 - Børge Rødsjø
Redusere problemet • Vi ønsker å gjøre om det nye problemet vårt til et problem som vi har en kjent algoritme for • Ønsker å redusere ukjent problem til kjent problem i polynomisk tid • Løser så det enkle problemet, og vi har et svar på det vanskelige ukjente problemet Øvingsforelesning 12 - Børge Rødsjø
Reduksjon med kjent algoritme Transformerer det nye vanskelige problemet A (IA), ned til en algoritme som løser et kjent problem B (IB), løser problemet B (OB), og vi har fått en løsning til vårt problem A (OA) Øvingsforelesning 12 - Børge Rødsjø
Reduksjon A B kjent problem ukjent problem ≤ A B Hvis ukjent problem A kan reduseres effektivt og enkelt til kjent problem B, kan vi bare løse B, og det ukjente problemet A vil være minst like enkelt som B Øvingsforelesning 12 - Børge Rødsjø
Bevise at ukjent problem er vanskelig • Vi klarer ikke å finne noen reduksjon til en kjent algoritme, så vi prøve å bevise at det ikke eksisterer en løsning for vårt nye ukjente problem Øvingsforelesning 12 - Børge Rødsjø
Bevise at ukjent problem er vanskelig • Fra før har vi noen problemer som vi vet er umulige å løse • Hvis vi reduserer et slikt problem til vårt ukjente problem, har vi vist at vårt problem er minst like vanskelig som det kjente problemet • Fordi hvis vi kunne løse vårt ukjente problem, kunne vi bare redusert det umulige problemet til vårt, og dermed løst det umulige problemet, men det problemet er umulig å løse, så vi har en selvmotsigelse, altså er vårt problem også umulig å løse Øvingsforelesning 12 - Børge Rødsjø
Reduksjon A B ukjent problem kjent problem ≤ A B Vi vet at A er vanskelig å løse, reduserer så A til vårt ukjente problem B, har da vist at vårt problem B er minst like vanskelig som A Øvingsforelesning 12 - Børge Rødsjø
Eller slik som Hetland ville sagt det... Vi vet Chuck Norris er farlig, men hvis Chuck Norris er redd for nerden, har vi vist at nerden er minst like farlig som Chuck Norris Øvingsforelesning 12 - Børge Rødsjø
Avgjørelsesproblemer • Vi skal ta for oss avgjørelsesproblemer, som er nært beslektet med optimaliseringsproblemer • Avgjørelsesproblemer: Problemer der svaret er enten ja eller nei • Optimaliseringsproblem: Finne det optimale svaret av flere mulige svar, finne max eller min Øvingsforelesning 12 - Børge Rødsjø
Avgjørelsesproblemer Øvingsforelesning 12 - Børge Rødsjø
Avgjørelsesproblemer • SHORTEST-PATH (Optimaliseringsproblem) • Finne korteste vei fra u til v i en urettet, uvektet graf • PATH (Relatert avgjørelsesproblem) • Finne ut om det finnes vei fra u til v med max. k kanter Øvingsforelesning 12 - Børge Rødsjø
Avgjørelsesproblemer • Optimaliseringsproblemer har ofte et tilhørende avgjørelsesproblem • Anta at vi kan løse SHORTEST-PATH kjapt • Vi kan da sammenlikne svaret med parameteren k til PATH, og vi vet da at vi også har løst PATH kjapt • M.a.o., hvis et optimaliseringsproblem er lett, er det tilhørede avgjørelsesproblemet minst like lett Øvingsforelesning 12 - Børge Rødsjø
Problemklassen P • Problemklassene P, NP, og NPC inneholder avgjørelsesproblemer • P = {mengden av avgjørelsesproblemer som kan løses i polynomisk tid} • Polynomisk tid: O(nk), der k=konstant og n=størrelsen til input Øvingsforelesning 12 - Børge Rødsjø
Vise at ukjent problem er i P A B kjent problem i P ukjent problem ≤ A B Hvis ukjent problem A kan reduseres effektivt og enkelt til kjent problem B (B er i mengden P), kan vi bare løse B, og det ukjente problemet A vil være minst like enkelt som B Øvingsforelesning 12 - Børge Rødsjø
Problemklassen NP • NP står for nonderministic polynomial time • NP = {mengden av avgjørelsesproblemer der en løsning kan verifiseres i polynomisk tid} • Dvs. at hvis vi tipper på en løsning til problemet, kan det sjekkes i polynomisk tid om denne løsningen er korrekt(gjelder når løsningen faktisk er korrekt) Øvingsforelesning 12 - Børge Rødsjø
Vise at ukjent problem er i NP • Enten: Finn en algoritme som verifiserer løsningen på problemet i polynomisk tid. • Eller: Vis at problemet er i P • Siden P er en undermengde av NP (kommer snart til dette) Øvingsforelesning 12 - Børge Rødsjø
Redusere NP til verstinger i NP NP Alt i kan reduseres til.. verstinger i NP ≤ NP NP De vanskeligste probleme i NP Alle problemer i NP kan reduseres/omskrivers til de vanskeligste problemene i NP Øvingsforelesning 12 - Børge Rødsjø
Problemklassen NPC • Vi gir verstingene i NP et navn: NPC • NPC står for NP-Complete • NPC = {mengden av de vanskeligste avgjørelsesproblemer i NP} Øvingsforelesning 12 - Børge Rødsjø
Redusere NP til NPC NP Alt i kan reduseres til.. alt i NPC ≤ NP NPC Hvis man har løst ett av NPC-problemene i polynomisk tid, har man løst alle problemer i NP i polynomisk tid (fordi problemene kan reduseres til hverandre) Øvingsforelesning 12 - Børge Rødsjø
NPC • Ingen har klart å løse noen problemer i NPC enda, i polynomisk tid • Så hvis vi vil bevise at vårt nye ukjente problem er umulig å løse, er det bare å redusere et NPC-problem til vårt problem • Da er vårt problem minst like vanskelig som et NPC-problem Øvingsforelesning 12 - Børge Rødsjø
Bevise at ukjent problem A er vanskelig NPC A ukjent problem ≤ NPC A Hvis man effektivt kan redusere et NPC-problem til vårt ukjente problem A, har vi vist at A må være minst like vanskelig som NPC-problemet Øvingsforelesning 12 - Børge Rødsjø
NP-hard • NP-hard = NPC + {mengden av NPC-problemer som ikke ligger i NP} • Så løsningen til et NP-hard problem trenger ikke nødvendigvis å kunne verifiseres i polynomisk tid • Alle NPC-problemer kan reduseres til NP-hard problemer • NP-hard problemer trenger ikke å være avgjørelsesproblemer Øvingsforelesning 12 - Børge Rødsjø
Redusere NP til NP-hard NPC Alt i kan reduseres til.. alt i NP-hard ≤ NPC NP-hard Et NP-hard problem er minst like vanskelig som et NPC-problem, hvis reduseringen er i polynomisk tid Øvingsforelesning 12 - Børge Rødsjø
Bevise at ukjent problem A er NP-hard NP-hard ukjent problem A ≤ NP-hard A Hvis man effektivt kan redusere et NP-hard problem til vårt ukjente problem A, har vi vist at A må være minst like vanskelig som NP-hard problemet Øvingsforelesning 12 - Børge Rødsjø
Slik tror vi det er... Øvingsforelesning 12 - Børge Rødsjø
...eller er det slik? Øvingsforelesning 12 - Børge Rødsjø
P = NP? • Ingen har klart å bevise at hverken P = NP, eller at P ≠ NP • Clay Mathematics Institute har utlovt 1 million US dollar til den som klarer å bevise noe slikt • Sansynligvis det vanskeligste og viktigste problemet i teoretisk informatikk Øvingsforelesning 12 - Børge Rødsjø
Fullstendig venndiagram • Slik kan det være hvis P ≠ NP Øvingsforelesning 12 - Børge Rødsjø
Over til noe mer konkret... Øvingsforelesning 12 - Børge Rødsjø
Bevise at vårt problem er vanskelig • For å vise at vårt problem er vanskelig, er det derfor lurt å kunne noen NPC-problemer, så vi kan redusere en av dem til vårt problem • Skal nå gå igjennom en god del NPC-problemer Øvingsforelesning 12 - Børge Rødsjø
Hvordan NPC- problemer reduseres til hverandre: Øvingsforelesning 12 - Børge Rødsjø
NPC-problemer • SAT (Satisfiability) • 3-CNF-SAT • CURCUIT-SAT (Er bevist at er i NPC) • SUBSET-SUM • CLIQUE • VERTEX-COVER • HAM-CYCLE • TSP (Travelling Salesman Problem) • GRAPH K-COLORABILITY Øvingsforelesning 12 - Børge Rødsjø
SAT • Gitt et boolsk uttrykk sammensatt med AND, OR, NOT, variabler og paranteser, finnes det en tilordning til variablene (TRUE/FALSE) slik at hele uttrykket blir TRUE? • Eks. • ((x1 OR x2) AND (NOT x2 AND x3)) OR x4 • Finn tilordning til x1, x2, x3, og x4 med true/false, i polynomisk tid, slik at uttrykket blir true Øvingsforelesning 12 - Børge Rødsjø
CIRCUIT-SAT • Det første problemet som ble vist at er NP-komplett • Helt likt SAT, bare en ”eldre” versjon med logiske gater (AND, OR, NOT) og koblinger mellom gatene • Alle andre NPC-problemer er reduseringer fra dette problemet Øvingsforelesning 12 - Børge Rødsjø
3-CNF-SAT • Likt som SAT, men her må uttrykket være på konjunktiv normalform, og alle ledd har 3 variabler • Eks. • (X or not Y or not Z) and (not X or Y or Z) and (X or Y or Z) • Finn tilordning til x, y og z med true/false, i polynomisk tid, slik at uttrykket blir true Øvingsforelesning 12 - Børge Rødsjø
SUBSET-SUM • Vi har en sekvens av tall, og vil finne ut om noen av disse tallene kan legges sammen og få en viss sum • Eks: • Tall-rekke = {8, 16, 4, 4, 1, 3} • Finner vi summen 18 her? • Nei. • Finner vi summen 19 her? • Ja, f.eks. 8+4+4+3
CLIQUE • En klikk er en samling noder i en graf som utgjør en komplett subgraf. • Finnes det en klikk i denne grafen, med minst k noder? • Eks: • Hvis k=3 • Ja, nodene 1, 2 og 5. • Hvis k = 4 • Nei, det finnes ikke.
VERTEX-COVER • Kan vi finne en samling av maksimalt k noder, som gjør at alle kantene i grafen er nabo med minst én av disse nodene? • Eks: • Hvis k=3 • Ja, f.eks. Nodene 4, 5 og 2. • Hvis k=2 • Nei.
HAM-CYCLE • Finnes det en Hamilton sykel i grafen? • Eks. Øvingsforelesning 12 - Børge Rødsjø
HAM-CYCLE • Finnes det en Hamilton sykel i grafen? • Eks. • Ja Øvingsforelesning 12 - Børge Rødsjø
TSP (Travelling Salesman Problem) • Gitt en urettet graf med noder og vektede kanter, finn billigste sykel som besøker alle nodene én og bare én gang • Eks. • den korteste veien gjennom de 15 største byene i Tyskland Øvingsforelesning 12 - Børge Rødsjø
TSP (Travelling Salesman Problem) • TSP er faktisk NP-hard • Dvs. at alle problemer i NPC kan reduseres til TSP Øvingsforelesning 12 - Børge Rødsjø
GRAPH K-COLORABILITY • Gitt k forskjellige farger, kan vi fargelegge nodene i en graf slik at ingen naboer har samme farge? • Eks: • k = 3 • Ja, det kan den. Se bilde. • k = 2 • Nei, det kan den ikke. • Obs! k=2 kan sjekkes i polynomisk tid!
Og her er resten av NPC Øvingsforelesning 12 - Børge Rødsjø
Teoriøving 11: Grådighet • Oppgave 4 • Optimal parantessetting • Bruk parantesdybden for et flyttall som frekvens • Kjør Huffman-koding • Gjennomgang? Øvingsforelesning 12 - Børge Rødsjø
Pengeveksling • Se Algdat-eksamen januar 1996, oppg. 3 • Grådig algoritme: • Plukk så mange man kan av den største mynten, så mange man kan av den nest største mynten, osv.. • Dynamisk algoritme: • Optimal substruktur: Den optimale måten å ta ut n kroner, hvis man har mynter 2, 3, 7: 1 + Min( mynter[n-2], mynter[n-3], mynter[n-7] )
Pengeveksling • Når kan man bruke den grådige algoritmen, og når må man bruke den dynamiske? • Den grådige fungerer hvis hver mynt går opp i alle mynter som er større enn seg. • Iterer gjennom myntsettet, og sjekk hele veien: coin[i+1] % coin[i] == 0 • Det finnes andre, bedre måter å sjekke for greedy choice property, men de er mer kompliserte.