Co po nás chtějí u zkoušky — odškrtávací checklist
Než se pustíš do zkouškových témat: tahle minikapitola tě naučí slovník, kterým je psaný celý zbytek webu — co je graf, strom, kostra, párování a co znamená „celočíselné lineární programování" (ILP). Sama se u zkoušky neptá, ale bez ní nebudeš rozumět zadáním ostatních slotů. Když na něco narazíš jinde, vracej se sem podle odkazů.
Dostaneš slovní úlohu („rozsaď svatební hosty tak, aby…") a tvým úkolem je přepsat ji do matematiky: zavést proměnné, napsat účelovou funkci (co minimalizovat/maximalizovat) a omezení (nerovnice). Nic se nepočítá do čísla — odevzdáváš jen model. Kapitola tě naučí typické „překladatelské triky": jak do nerovnic dostat logiku (když–pak, nebo, a), fixní náklady nebo volbu z více možností pomocí 0/1 proměnných a tzv. big-M.
Máš mapu (graf) s ohodnocenými spoji a hledáš nejlevnější trasu z bodu A do bodu B. Kapitola učí klasické algoritmy (Dijkstra, Bellman-Ford) — jak je ručně „odkrokovat" na papíře krok po kroku — a hlavně jak na nejkratší cestu chytře převést i úlohu, která tak na první pohled nevypadá (násobení pravděpodobností, plánování v čase apod.). Pozor je na záporné hrany a záporné cykly.
Tady se nepočítá, ale dokazuje a argumentuje: proč nějaký algoritmus dává správný výsledek, proč je problém „těžký" (NP), nebo co přesně zaručuje aproximační algoritmus (řešení nanejvýš r-krát horší než optimum). Slot 3 chce souvislý důkaz nebo úvahu sepsanou vlastními slovy — kapitola tě provede těmi, co padají nejčastěji (korektnost Dijkstry/Bellman-Forda, těžkost TSP, Christofides 3/2).
Představ si potrubní síť: kolik vody protlačíš ze zdroje do spotřebiče, když má každá trubka omezenou kapacitu? To je maximální tok. Kapitola učí algoritmus Ford-Fulkerson (jak ho odkrokovat hledáním „augmentujících cest"), klíčovou dualitu max-tok = min-řez a hlavně jak na tok převést úlohy, které s vodou nesouvisí (přiřazování lidí k úkolům, párování, zaokrouhlování tabulek).
Máš úkoly (tasks) a stroje (procesory) a chceš je naplánovat v čase tak, aby něco vyšlo co nejlépe — typicky aby bylo vše hotové co nejdřív ($C_{max}$). Kapitola nejdřív naučí značení $\alpha|\beta|\gamma$, kterým se rozvrhovací problémy stručně pojmenovávají (stroje | podmínky | kritérium), a pak sadu konkrétních algoritmů — ke každému typu úlohy ten správný. Tahák „problém → algoritmus" je v poslední lekci.
Hlavolam typu sudoku: máš proměnné, každá s množinou možných hodnot („doménou"), a omezení mezi nimi (např. „tyhle dvě se musí lišit"). Než začneš zkoušet kombinace, vyplatí se domény pročistit — vyhodit hodnoty, které evidentně nemůžou vyjít, protože pro ně u souseda neexistuje žádný partner. Přesně to dělá algoritmus AC-3 (řetězová reakce škrtů řízená frontou hran) a Slot 6 chce jeho ruční odkrokování. AC-3 řešení nehledá — jen zmenší domény; to je celé.
Batoh s omezenou nosností a věci, každá s nějakou cenou a vahou — co vzít, aby měl náklad největší hodnotu a nepřetížil se? Klasická úloha řešená dynamickým programováním (postupné vyplňování tabulky a zpětné dohledání, co se vzalo). Doplňková kapitola — ve zkoušce se objevuje spíš okrajově, ale technika tabulkového DP se hodí i jinde.