| 3. říjen 2008 |  Řešené příklady:- Různé varianty hledání nejkratší cesty v ohodnocených grafech s nezápornými hranami
pro M=Θ(N2) [Ο(M)], M=Θ(N1+ε) [Ο(M)], M=Θ(N) [Ο(N log N)],
pro acyklický graf [Ο(M+N)] a pro ohodnocení hran malými celými čísly 1..k
[Ο(M+KN), Ο(log K * (M + N)].
 - Třídění skoro setříděné posloupnosti. Nejprve je každý prvek nejvýš o k pozic
mimo svojí pozici v setříděné posloupnosti a k známe [Ο(N log k)], poté k neznáme
[Ο(N log k)] a nakonec hledáme algoritmus se složitostí Ο(N log (počet inverzí / N)).
 - Na rozmyšlenou bylo najít co nejlepší řešení následujícího problému: Dostanete N čísel
a1 až aN a musíte umět odpovídat na dotazy "pro dané i a j najděte mezi čísly
ai až aj nejmenší". Zmínili jsme triviální řešení s Ο(1) předzpracováním + Ο(N)
na dotaz a další triviální řešení s Ο(N2) předzpracováním + Ο(1) na dotaz.
| 10. říjen 2008 |  Řešené příklady:- Minule zadaný příklad jsme vyřešili s Ο(N log N) předzpracováním a Ο(1) na dotaz,
a také s Ο(N) předzpracováním a Ο(log N) dotazem.
 - Máte dvě setříděná pole délek N≥M. Vaším cílem je najít medián posloupnosti,
která vznikne sjednocením prvků těchto polí [Ο(log N)].
 - Pro slovo délky N najděte jeho nejdelší podslovo (souvislá podposloupnost),
které je palindromické [Ο(N)].
 - Pro řetězec délky N najděte co nejdelší opakující se podslovo (tato podslova
se mohou překrývat) [Ο(N log N) v průměru].
 - Na rozmyšlenou: pro slovo délky N najít jeho lexikograficky minimální rotaci.
| 17. říjen 2008 | Kvůli neúčasti cvičícího bude cvičení spojené s cvičením, které vede Honza Hubička.
Toto cvičení se koná ve stejný čas v S9.
 |  | 24. října 2008 |  Řešené příklady:- Pro dané slovo zjistěte, zda je rovno nějaké svojí netriviální rotaci [Ο(N)].
 - Pro slovo délky N najděte jeho minimální lexikografickou rotaci [Ο(N)].
 - Dostanete zakázané slovo délky P, dále text délky N a vaším úkolem je z tohoto textu smazat všechny výskyty zakázaného slova [Ο(N)].
 - Stejně jako v poslední úloze, ale zakázaných slov máte několik, přičemž P je součet jejich délek. Pozor, tato úloha není jen triviální rozšíření předchozí! [Ο(AN) kde A je počet písmen abecedy]
 - Dostanete N slov o celkovém počtu P písmen. Vaším úkolem je tato slova setřídit v čase Ο(P+A), kde A je počet písmen abecedy.
| 31. října 2008 |  Řešené příklady:- Hradlové sítě s NANDy umí vytvořit všechny boolovské funkce.
 - Vytvořte XOR na co nejméně NANDů [jdou 4].
 - Spočtěte OR pro N vstupů [log N vrstev] a dokažte, že
to rychleji nejde.
 - Zopakujte si sčítačku na 2log N vrstev z přednášky.
 - Vymyslete násobičku [Ο(log2 N) vrstev].
 - Zkuste vymyslet (normální, ne pro hradlovou síť) algoritmus
pro násobení dvou N-bitových čísel v čase lepším než Ο(N2).
| 7. listopadu 2008 |  Řešené příklady:- Máte následující protokol: A dostane náhodně obarvenou "šachovnici".
Musí změnit barvu právě jednoho políčka a poslat šachovnici B, se
kterým může mít předem domluvený protokol. Vaším cílem je tímto
způsobem přenést co nejvíc bitů informace od A k B [jde víc než 2].
 - Máte čísla x1, ..., xn. Vaším úkolem je spočítat hodnoty
zi = x1 x2 ... xi-1 xi+1 ... xn v pořadí z1, z2, ..., zn.
Buď šetřte čas i paměť [Ο(N) čas, Ο(√N) paměť]
nebo hlavně paměť [Ο(N log N) čas, Ο(log N) paměť].
 - Vymyslete hradlovou síť, která bude počítat zbytek binárně zadaného
čísla po dělení 3 (a rozmyslete, co se změní pro zbytek po dělení 5).
| 14. listopadu 2008 |  Řešené příklady:- Vymyslete komparátorovou síť pro nalezení minimálního prvku.
 - Sestrojte komparátorovou síť, která do setříděné posloupnosti
zatřídí daný prvek.
 - Pro danou permutaci sestrojte komparátorovou síť, která ji
setřídí. Použijte Ο(log N) vrstev a Ο(N) komarátorů.
 - Dokažte, že pokud hradlová síť setřídí správně všechny posloupnosti
nul a jedniček, tak setřídí správně každý vstup.
| 21. listopadu 2008 |  Řešené příklady:- Pro nějaké korektní rozmístění disků na Hanojských věžích rozhodněte,
v kolika nejméně krocích je dokážete přemístit na libovolný kolík.
 - Vymyslete nějaký druh merge v komparátorové síti, nejlépe s Ο(log N)
vrstvami. Pomocí něj navrhněte třídění v Ο(log2 N) vrstvách.
 - Určete složitost FF na grafu s jednotkovými kapacitami.
 - Vyřešte problém maximálního párování v bipartitním grafu
pomocí toků v síti.
 - Dostanete šachovnici se zakázanými políčky. Vaším úkolem je umístit
na ni co nejvíc dominových kostek (2x1), aby se nepřekrývaly.
 - Dostanete opět šachovnici se zakázanými políčky. Vaším úkolem
je umístit na ni co nejvíce věží, aby se neohrožovaly.
| 5. prosince 2009 |  Řešené příklady:- Určete složitost Dinicova algoritmu v obecném případě [Ο(N2M)].
 - Určete složitost Dinicova algoritmu pro grafy s jednotkovými kapacitami [Ο(NM)].
 - Určete složitost Dinicova algoritmu pro grafy s jednotkovými kapacitami, které
mají vstupní nebo výstupní stupeň každého vrcholu roven jedné [Ο(√NM)].
 - Vyřešte problém vrcholového pokrytí v biparnitním grafu [jeho velikost
je přesně rovna velikosti maximálního párování, ukažte navíc, jak lze
z maximálního párování získat vrcholové pokrytí, a ukažte, že jeho doplňek
je nezávislá množina].
| 12. prosince 2009 | Zabývali jsme se příkladem na minimální řez. Poté jsme zadefinovali
transformace DFT a IDFT a ukázali její význam jako počítání hodnot daného
polynomu v bodech (ω0,ω1,...,ωn-1).
 Řešené příklady:- Máte N projektů, za vyřešení každého dostanete sumu ci. Dále máte M zdrojů,
každý vás stojí rj. Na každý projekt i potřebujete nějakou podmnožinu zdrojů
si1,...,sik. Pokud zakoupíte nějaký zdroj, tak ho můžete použít ve všech
projektech. Rozhodněte, jaké projekty vybrat a jaké zdroje zakoupit, abyste pro
vybrané projekty měli všechny zdroje a abyste maximalizovali zist, tj. sumu
zisků vybraných projektů - sumu cen vybraných zdrojů.
 - Spočítejte DFT obraz vektorů (ωjk)j=0..n-1 pro libovolné k [(δj,n-k)j=0..n-1].
 - Násobení polynomů a čísel pomocí DFT, zatím bez určení časové složitosti.
| 19. prosince 2009 | Bavili jsme se o algoritmu FFT a IFFT a ukazovali rekurzivní implementaci
a implementaci bez rekurze s obracením bitů.
 Řešené příklady:- Vynásobte dva polynomy stupně N v čase Ο(N log N).
 - Vynásobte dvě čísla o N bitech v čase Ο(N log2 N),
v čase Ο(N log N (loglog N)2),
v čase Ο(N log N loglog N (logloglog N)2),
a na RAMu v čase Ο(N log N).
 - Spočtěte DFT obraz vektorů (cos(2πjk/n))j=0..n-1 pro k < n/2 [(δj,k/2+δj,n-k/2)j=0..n-1].
 - Spočtěte DFT obraz vektorů (sin(2πjk/n))j=0..n-1 pro k < n/2 [(iδj,k/2-iδj,n-k/2)j=0..n-1].
 - DFT obraz reálného vektoru je antisymetrický (yk = konjugace yn-k).
 - DFT obraz antisymetrického vektoru je reálný.
 - "Upravte" DFT pomocí dvou předchozích případů, aby fungovala z Rn do Rn.
| 9. ledna 2009 | Promysleli jsme si definici P a NP přes Turingovy stroje, dále ekvivalentní
definici NP přes certifikáty, zadefinovali jsme redukování a NP-těžké
a NP-úplné problémy.
 Řešené příklady:- Kachlíčkování je NP-úplný problém.
 - Převeďte kachlíčkování na SAT.
 - Převeďte SAT na 3-SAT a 3,3-SAT.
 - Ukažte, že E3,E3-SAT má vždy řešení.
 - Převeďte nezávislou množinu na kliku a na vrcholové pokrytí.
 - Rozmyslete si, že dvojbarevnost, 2-SAT, Horn-SAT, a (nezávislá množina, klika, vrchlové pokrytí)
v bipartitním grafu jdou řešit v P.
 
  |   
  |   
  |   
  |   
  |   
  |   
  |   
  |   
  |   
  |   
  |