Problémy třídy Pa N P, převody problémů Cvičení 1. Rozhodněte o příslušnosti následujících problémů do tříd Pa N P(N PCověříme později): a)jedanýgrafsouvislý? danýproblémjeztřídy P,řešíhonapř.algoritmyDFS,BFS. b) Jedanýgrafrovinný? danýproblémjeztřídy P,jeznámalgoritmuspracujícívčase O(n 2 ). c) Obsahuje daný graf hamiltonovskou kružnici? N P, dokonce N PC. Dokážeme převodem Hamilton. cyklu(hc) p HK. d) Je dané přirozené číslo číslem složeným? N P, dokonce do P(netriviální důkaz). e) Lze batoh o dané kapacitě zaplnit některými z daných předmětů, aby nepřekročil zadanou váhu a současněmělminimálnícenu? NP,dokonce NPC.DokážemepřevodemSubSetSum p BATOH. e) DNF-SAT. P(stačí splnit jedinou klauzuli, tedy každou závorku otestujeme, zda obsahuje kontradikci, pokud ne, je formule splnitelná). Řešení a návody Chceme-li dokázat, zda daný problém náleží do třídy P(resp. N P), musíme podle definice najít deterministický(resp. nedeterministický) TM, který rozhoduje daný problém v polynomiálním čase. Je to cesta, ale pro některé problémy komplikovaná. Zkusme proto použít analogii v algoritmech(ke každému TM rozhodujícím v polynomiálním čase najdeme algoritmus, který řeší stejný problém také v polynomiálním čase. Něco podobného jste si dokazovali na přednášce u RAM): Třída P :Podaří-lisenámnajítpolynomiálníalgoritmus,takjetodostatečnýdůkaz,žeúlohajezetřídy P. Třída NP : PopsatNTMmůžebýttakéobtížné,atakseznovuzkusímeopřítoalgoritmus,tentokrátnedeterministický. Na přednášce jste měli popis průběhu nedet. algoritmu(1.8.7): Nedeterministický algoritmus pracuje ve dvou fázích: 1. Algoritmus náhodně vygeneruje řetězec s. 2. Deterministický algoritmus(turingův stroj, program pro RAM) na základě vstupu a řetězce s dá odpověď ANO nebo NEVIM. Jaktotopomůžeprotřídu NP?Pokudbynámněkdosdělil(poradil,tipl)řešení(fáze1.),amyho dokázali polynomiálně a deterministicky ověřit(fáze 2.), tak máme vlastnost třídy N P. Navíc tuto vlastnost nemá žádná jiná třída problémů, než právě třída N P. Například ve cvičení d) by řešení vypadalo takto: Kdyby Vám někdo prozradil dělitele zadaného čísla(vygenerovat např. náhodně číslo zabere konstantní čas), tak rychle(myšleno polynomiálně a deterministicky)ověříte,zdatotočíslodělízadanébezezbytku tedymátesplněnyfáze1.a2.,atedy problémje NP. Třída NPC :Chceme-lioproblémudokázat,ženáležítřídě NPC,musímeukázat: 1. je N P (tj. máme-li řešení, ověříme v polynomiálním čase a deterministicky, že je skutečně řešením), 2. lze na tento problém polynomiálně redukovat nějaký již známý problém z N PC.
Řešení: Problém HK: Obsahuje daný graf hamiltonovskou kružnici? N P, dokonce N PC. Dokážeme převodemhc p HK. 1)HKje NP,protožeprovybranoukružnicisnadnootestujeme,zdasejednáokružnici,azda obsahuje všechny vrcholy(projdeme posloupnost uzlů a hran v kružnici a kontrolujeeme počet uzlů a incidenci). 2) Problém HK je podobný problému existence Hamiltonovskému cyklu(hc), o kterém víme, že je NPC. ZkusmetedynajítpolynomiálníredukciHCnaHK(HC p HK).Nejdříveřádně zformulujeme oba problémy: HK Vstup: Je dán neorientovaný graf G. Otázka: Existuje v tomto grafu kružnice přes všechny uzly?(hamiltonovská kružnice) HC Vstup: Je dán orientovaný graf G. Otázka: Existuje v tomto grafu cyklus(orient. kružnice) přes všechny uzly?(hamiltonovský cyklus) 2)Hamiltonovskýcyklus(HC) p Hamiltonovskákružnice(HK). G(V,E) G (V,E ) V V :=V V (druhoukopiikaždéhouzluvodlišímejako v) E E := {{u,v }, {v,v} prokaždouhranu(u,v) EvpůvodnímgrafuG} Konstrukci na příkladu ukazuje následující obrázek: Nyní ukážeme, že instance HC je splněná právě tehdy když je splněna instance HK. Chcemeukázat, žepokudmámeanoinstanciham. cyklu, tedyexistujeham. cyklus C = v 1 e 1 v 2...v n e n v 1, takexistujehamiltonovskákružnice C. Evidentnětatokružnicemápodobu C= v 1 e 1 v 2 e 1v 2...v n e n v ne n v 1 e 0v 1,obsahujevšechnyuzly V. Nyní chceme ukázat naopak, že pokud máme nějako uham. kružnici C, tak v původním grafu muselbýtham.cyklus:označmesikružnici C= v 1 e 1v 2e 1 v 2...v ne nv n e n v 1e 1 v 1.Paksousedníuzly musínutněbýtvajehokopiev,nebov aw(alepakpředv muselobýtv),protožejedinéhrany v novém grafu sjou střídavě mezi očárkovaným a neočárkovaným uzlem. Je-li tedy ham. kružnice vg,máprávěuvedenýtvaraznípakmámvypuštěnímočárkovanýchuzlůahranham. cyklusv původním grafu. Tedy HC existuje. Tento převod(vytvoření instance pro HK z HC) lze realizovat deterministicky v polynomiálním čase
(hodnoty v i jen2xzkopírujemedonovéhografu,taktéžhrany).hkjetedy NPC. Problém BATOH: 1)BATOHje NP,protožeprovybranépředmětysnadnootestujeme,zdasedobatohuvejdou (sečtemeváhy v i aporovnámesv)azdamajícenualespoň C(sečtemeceny c i aporovnáme s C). 2)ProblémBATOHjepodobnýproblémuSubSetSum,okterémvíme,žeje NPC.Zkusmetedy najít polynomiální redukci SubSetSum na BATOH. Nejdříve řádně zformulujeme oba problémy: BATOH Vstup: npředmětů,knimzadanádvěčísla: c i cenapředmětu, v i váhapředmětu, i=1,2,...,n. Dáledvěpřirozenáčísla nosnostbatohu V acena C. Otázka: Lze z těchto předmětů vybrat nějaké tak, aby se vešly do batohu(nepřekročili nosnost, tedy vi V)asoučasněmělyminimálněhodnotu C(tedy c i C)? SubSetSum Vstup: přirozenáčísla a 1,...,a m,číslo K. Otázka:Lzevybratněkteréztěchtočíseltak,abyjejichsoučetbylprávě K(tedy a i = K))? Polynomiální redukce: Musíme instanci(vstup) SubSetSum převést na instanci BATOH a splnit přitom dvě kritéria: Je-li řešitelná instance SubSetSum, musí mít řešení i navržená instance BATOHu. Současně ale pokud není řešitelná instance SubSetSum, nesmí být řešitelná ani ta BATOHu. Zkusme tedypomocí a i ačíslakdefinovatbatohnásledujícímzpůsobem: SubSetSum a 1,...,a n K BATOH c i := a i, i=1,2...,n; n=m v i := a i N:=K C:=K Existuje A {a 1,...,a m } Existuje P {(c 1,v 1 ),...,(c n,v n )} tž. a i A a i= K? tž. c i P c i Cazároveň v i P v i N? Ukážeme, že námi zvolená instance pro BATOH splňuje obě podmínky, je-li řešitelný problém SubSet- Sum. Stačí vzít stejnou podmnožinu předmětů, tedy P:= A(resp. dvě kopie A). Nyní ukážeme, že instance BATOHu je splněná právě tehdy když je splněna instance SubSetSum. Chcemeukázat,žepokudmámeANOinstanciSubSetSum,tedyexistujevýběrAtž. a i A a i= K, tak existuje výběr i pro BATOH: c i = a i = K C, c i P tedy požadavek na cenu je splněn. Ještě váha: je splněna i tato podmínka. v i P a i A v i = a i = K V, A i A
Nyní chceme ukázat naopak, že pokud máme ANO instanci BATOHu, tak pomocí redukce existuje výběr pro SubSetSum: a i = c i C= K, a i A c i P tedymáme,že a a i A i K.Tonestačí,mypotřebujemerovnost.Mámealeještěváhu: a i = v i V= K, a i A v i P tedymáme,že a a i A i K. Podmínkacenyaváhymábýtalesplněnasoučasně,tedymáme podmínku, a i K a i K, a i A a i A ale to je podmínka existence řešení pro SubSetSum. Tento převod(vytvoření instance pro BATOH ze SubSetSum) lze realizovat deterministicky v polynomiálnímčase(hodnoty a i jenzkopírujemedocen,vahakzkopírujemedocav).batohjetedy NPC. U následujících problémů nám pomůže přehled přednáškových N PCproblémů. (CNF) SAT Splnitelnost formule výrokové logiky ϕ. Vstup: Formule varphi Otázka: Existuje ohodnocení, v kterém je ϕpravdivá? 3(CNF)SAT Spl.fle,kdevkaždéklauzulijsoumax.3literály. Vstup: Formule varphi Otázka: Existuje ohodnocení, v kterém je ϕpravdivá? 3-COLOR Obarvení grafu 3 barvami. Vstup: graf G Otázka: Jde graf obarvit 3 barvami tak, aby žádné 2 sousední vrcholy neměly stejnou bravu? K-klika Nalezení největší kliky v grafu. Vstup: Graf G, přirozené číslo K Otázka: Existuje v grafu úplný pograf(klika) o alespoň K vrcholech? ILP Lineární programování.
VP Vrcholové pokrytí grafu. Vstup: Graf G, přirozené číslo K Otázka: Existuje množina velikosti najvýše K, která pokryje HRANY grafu? NEZ Nezávislá množina. Vstup: Graf G, přirozené číslo K Otázka:ExistujemnožinavrcholůNEZ, NEZ K,tž.žádnédvazNEZnejsouspojenyhranou? SubSetSum Výběr podmnožiny s daným součtem z množiny čísel. Vstup: n přirozených čísel a přirozené číslo K Otázka:Existujevýběrztěchtočíseltak,abysoučetbylK? Partition dělení kořisti(dva loupežníci) Vstup: n předmětů dané ceny Otázka: Existuje výběr z těchto předmětů tak, aby součet cen byl polovina loupeže? TSP Obchodní cestující. HK Hamiltonovská kružnice v grafu. Vstup: Graf G Otázka: Existuje v grafu kružnice přes všechny vrholy? HC hamiltonovský cyklus v grafu. Vstup: Graf G Otázka: Existuje v grafu cyklus přes všechny vrcholy? NDC Nejdelšícestavgrafu. Vstup: Graf G s ohodnocením hran reálnými čísly, reálné číslo K Otázka: Existuje v grafu cesta ceny nejvýše K? NKC Nejkratšícestavgrafu. Vstup: Graf G s ohodnocením hran reálnými čísly, reálné číslo K Otázka: Existuje v grafu cesta ceny alespoň K? Cvičení 2. Problém NDC(nejdelší cesta) vstup:grafgsohodnocenímhran(vzdálenosti) a:e R +,nezápornéčíslo K otázka:existujecestacenyalespoň K?HCnaNDC nejdelsicestajen-1, V =n 1) Máme-li cestu, snadno ověříme, zda je ceny alespoň K. 2)Hamiltonovskácesta(HC) p NDC. HC NDC a(e):=1 K:= V 1 Existuje-li v grafu HC, je řešitelný i problém NDC. Není-li řešitelný HC, není řešitelný ani NDC. Tento převod lze realizovat v polynomiálním čase. NDC je tedy N PC.
Cvičení 3. Problém NKC(nejkratší cesta) vstup:grafgsohodnocenímhran(vzdálenosti) a:e R,reálnéčíslo k otázka:existujecestacenynejvýše k?ncnankc otocimcenuhrannazaporne 1) Máme-li cestu, snadno ověříme, zda je délky nejvýše k. 2)NC p NKC. NC NKC a(e) a(e ):= a(e) K k:= K Je-livgrafuGnejdelšícestadélkyalespoňK,jevG cestadélkynejvýšek.anaopak. Tento převod lze realizovat v polynomiálním čase. NKC je tedy N PC. Cvičení 4. Problém DOM(dominantní množina) Vstup: graf G, přirozené číslo k Otázka: Existuje dominantní množina D velikosti nejvýše k? (množinavrcholůdjedominantní,pokud {d,u} E,prokaždývrchol u V\D,d D) 1) Máme-li množinu D, snadno ověříme, zda je velikosti k a zda její vrcholy jsou dominantní. 2)Vrcholovépokrytí(VP) p DOM. VP DOM K k:= K existuje P V, P K, D:=P, D =k, tž.každáhranamájeden tž.každývrcholzv /Dje vrcholvp? spojenhranousvrcholemzd Má-li VP řešení, pak má řešení i DOM.(Každé vrcholové pokrytí je současně dominantní množinou) Naopak,máme-likaždývrcholzV /DspojenhranousvrcholemzD,pakmusíkaždáhranamít jedenvrcholvp??? (CohranamezidvěmauzlymimoP,kteréjsouobaspojenisvrcholyvP?pak nemusíme mít pokrytí!)... asi to nebude dobrá redukce. Ještě promyslím. Tento převod lze realizovat v polynomiálním čase. DOM je tedy N PC. Pozn.:LzetakérealizovatpřevodemMnožinovépokrytí p DOM (http://en.wikipedia.org/wiki/dominating set) Cvičení 5. Problém NK(nejdelší kružnice) Vstup: graf G, přirozené číslo k Otázka: existuje kružnice délky alespoň k? 1) Máme-li kružnici, snadno ověříme, zda je délky alespoň k. 2)Hamiltonovskákružnice(HK) p NK. HK NK
k:= V Existuje-livgrafuHC,existujeiNKvgrafuG.Anaopak. Tentopřevodlzerealizovatvpolynomiálnímčase.NKjetedy NPC.