Cvičení ze Složitosti I

V zimním semestru 2014/2015 vedu cvičení k přednášce ze Složitosti I Ondřeje Čepka. Cvičení se koná každé druhé úterý od 9:00 v posluchárně S8.

Zápočet se udílí za získání alespoň 100 bodů z domácích úkolů. Úkoly prosím posílejte na adresu mj+sloz@ucw.cz.

Cvičení v sudé týdny

datum co jsme dělali
7. 10. Hladové algoritmy pro rozvrhování a protipříklady na většinu z nich. Interpretace pomocí intervalových grafů. Matroidy: hraní si s definicí; jak vypadá báze matroidu.
21. 10. Hledání stoku coby příklad algoritmu, který nemusí přečíst celý vstup. Mosty, artikulace a různé vlastnosti DFS.
4. 11. Polosouvislost orientovaných grafů. Různé algoritmy na hledání komponent silné souvislosti. Hledání nejkratšího cyklu v ohodnoceném rovinném grafu jako příklad použití planárních separátorů.
18. 11. Exkurze do Turingovy strojovny. Různé typy strojů a vztahy mezi nimi. Akceptory vs. funkce. Přijímání zastavením vs. koncovým stavem. Je v řetězci stejně nul jako jedniček? Redukce oboustranně nekonečné pásky na jednostranně nekonečnou, redukce stroje se zarážkami na stroj bez zarážek.
2. 12. Nedeterministické výpočty a orákula. Použití rozhodovací verze problému (vrcholové pokrytí, SAT) k nalezení optima. NP kontra co-NP, certifikáty (ne)prvočíselnosti.
16. 12. Redukce a různé jejich použití. Různé varianty hamiltonovských cest a kružnic. Tautologičnost v CNF a DNF. Lineární rovnice a nerovnice nad {0,1}.

Cvičení v liché týdny

datum co jsme dělali
14. 10. Hladové algoritmy pro rozvrhování a protipříklady na většinu z nich. Interpretace pomocí intervalových grafů.
Jen 7.10.: Matroidy: hraní si s definicí; jak vypadá báze matroidu.
11. 11. Hledání stoku coby příklad algoritmu, který nemusí přečíst celý vstup. Mosty, artikulace a různé vlastnosti DFS. Hledání nejkratšího cyklu v ohodnoceném rovinném grafu jako příklad použití planárních separátorů.
25. 11. Exkurze do Turingovy strojovny. Různé typy strojů a vztahy mezi nimi. Akceptory vs. funkce. Přijímání zastavením vs. koncovým stavem. Je v řetězci stejně nul jako jedniček? Redukce oboustranně nekonečné pásky na jednostranně nekonečnou. O definici algoritmu a výpočetních modelech.
9. 12. Nedeterministické výpočty a orákula. Použití rozhodovací verze problému (vrcholové pokrytí, SAT) k nalezení optima. NP kontra co-NP, certifikáty (ne)prvočíselnosti.
6. 1. Redukce a různé jejich použití. Různé varianty hamiltonovských cest a kružnic. Tautologičnost v CNF a DNF. Co je za NP?

Domácí úkoly

DatumKódBodyZadání
7. 10. chem15Mějme n chemikálií a u každé z nich určený rozsah teplot pro bezpečné skladování. Chceme si pořídit co nejméně ledniček a každou nastavit na konkrétní teplotu tak, aby každou chemikálii bylo možné bezpečně uskladnit. Navrhněte efektivní algoritmus na řešení této úlohy (nejlépe hladový).
strom20Uvažujme následující hladové algoritmy na hledání největší nezávislé množiny ve stromu:
  1. Přidám do množiny vrchol největšího stupně, odstraním ze stromu jeho sousedy, opakuji.
  2. Totéž, ale s nejmenším stupněm.
  3. Zakořením strom, prohledám do šířky a pak použiji buďto všechny sudé, nebo všechny liché vrstvy.
Pro každý algoritmus rozhodněte, zda nalezne optimální výsledek. Jak se situace změní, pokud budou mít vrcholy stromu kladné váhy a bude nás zajímat nezávislá množina s největším součtem vah?
24. 10. hous15Housenka je graf, který je tvořen cestou ("páteř") a listy připojenými k této cestě ("štětiny"). Navrhněte algoritmus, který v zadaném stromu najde co největší housenku (podgraf s největším možným počtem vrcholů). Nápověda: DFS.
zgm20Navrhněte algoritmus, který zbaví graf všech mostů přidáním nejmenšího možného počtu hran.
4. 11. ssep15Separátor stromu je vrchol, po jehož odebrání se strom na n vrcholech rozpadne na komponenty, z nichž žádná neobsahuje více než αn vrcholů (kde α je nějaká konstanta mezi 0 a 1 nezávislá na konkrétním stromu). Navrhněte lineární algoritmus, který nalezne separátor daného stromu s co nejmenším α. Dokažte, že lepší hodnoty α nejde dosáhnout.
tri20Popište efektivní algoritmus, který zjistí, zda v zadaném rovinném grafu existuje trojúhelník.
18. 11. mul10Sestrojte Turingův stroj, který vynásobí dvě dvojková čísla. Čísla jsou zapsána na vstupní pásce od nejvyššího řádu k nejnižšímu, oddělena od sebe znakem #. Výsledek zanechte na výstupní pásce, opět od nejvyššího řádu k nejnižšímu.
n215Sestrojte Turingův stroj, který na vstupu dostane posloupnost n hvězdiček a provede právě n2 kroků, než se zastaví. Můžete předpokládat, že n≥n0 pro vámi zvolené n0. (V terminologii z přednášky: funkce n2 je časově konstruovatelná.)
tsan15"Turingova saň" je dvouhlavý Turingův stroj: nad každou pracovní páskou pracují dvě nezávislé hlavy. Ukažte, jak tento stroj efektivně simulovat na klasickém Turingově stroji. Můžete předpokládat, že pokud se hlavy setkají na jednom políčku pásky, zapíší totéž.
2. 12. comp10Sestrojte nedeterministický Turingův stroj, který na vstupu dostane n hvězdiček a tento vstup přime právě tehdy, je-li n složené číslo. Časová složitost stroje nechť je O(n).
color15Mějme orákulum, které umí v konstantním čase odpovědět, zda daný graf je možné obarvit třemi barvami. Nalezněte v polynomiálním čase na stroji s tímto orákulem konkrétní obarvení.
prime20Ukažte, že prvočíselnost leží v NP (na vstupu uvažujeme dvojkový zápis čísel). Následujte nápovědu z cvičení: certifikát pro číslo n bude obsahovat generátor multiplikativní grupy modulo n, faktorizaci čísla n-1 a rekurzivně sestrojené certifikáty pro prvočísla vystupující ve faktorizaci. Zbývá doplnit detaily a zejména dokázat, že celý certifikát je polynomiálně dlouhý.
16. 12. ham15Převeďte hamiltonovskou kružnici na SAT.
spg10Uvažujme následující problém: jsou dány grafy G a H a číslo K, existuje indukovaný podgraf grafu G o K vrcholech, který je isomorfní s nějakým indukovaným podgrafem grafu H? Dokažte, že tento problém je NP-úplný.
lineq15Uvažujme následující problém: je dána soustava lineárních rovnic, jejíž koeficienty i pravé strany jsou jen nuly a jedničky, existuje vektor z nul a jedniček, který ji řeší? Dokažte, že tento problém je NP-úplný.

Odkazy

Stránku spravuje Martin Mareš