Poslední lekce kapitoly nic nového nevykládá — sbírá úrodu. U písemky bývá metoda obvykle napsaná přímo v zadání („[Rothkopf]“ v nadpisu, “Use Muntz&Coffman's algorithm…”), takže tahák je hlavně pojistka pro případ, kdy tam není, a kostra odpovědi pro ústní („čím se řeší … a proč zrovna tím?“). Všechny řádky tabulky jsou doslova ze souhrnných slidů přednášky; detaily algoritmů už znáš z lekcí, na které tabulka odkazuje.
Přesně v pořadí polí Grahamovy notace [L5.1]:
Pro $1\,|\,pmtn, r_j\,|\,L_{max}$: jeden stroj, kritérium $L_{max}$, s preempcí a release timy → Hornův algoritmus [L5.7].
Než tabulku ukážu celou, dvě kontrolní otázky na nejčastější zkouškové „chytáky“ — jestli je trefíš, tahák už vlastně umíš.
$1\,|\,r_j, \tilde{d}_j\,|\,C_{max}$ je silně NP-hard — kombinace oken $\langle r_j, \tilde{d}_j \rangle$ umí postavit „ploty“ a zakódovat 3-PARTITION, jak jsi viděl v [L5.13]. Řadicí pravidla (dle $r_j$, dle $\tilde{d}_j$ = EDF) fungují jen na každé omezení zvlášť; dohromady zbývá Bratleyho branch & bound [L5.9] nebo ILP [L5.6b]. Výjimka dle slidu 13: pro $p_j = 1$ polynomiální algoritmus existuje.
Easy je ten s preempcí: $P\,|\,pmtn\,|\,C_{max}$ řeší McNaughton v $\mathcal{O}(n)$ [L5.4] — optimum $C^*_{max} = \max\{\max_i p_i, \sum_i p_i / R\}$ se prostě „nalije“ wrap-around plněním. Bez preempce je už $P2\,||\,C_{max}$ NP-hard (slide 38: redukce z 2-PARTITION s prahem $\frac{1}{2}\sum p_i$, viz [L1.1]) — proto exaktně Rothkopfovo DP [L5.11], aproximačně LPT [L5.12]. Preempce tu mění svět: rozbíjet úlohy na kousky je to, co dělá problém spojitě „nalévatelným“.
Tučně je vždy metoda, kterou po tobě zkouška typicky chce odsimulovat. Sloupec těžkosti drží terminologii slidů (slidy 13, 23 a 38 píší „easy“/„NP-hard“; slide 27 pro $L_{max}$ rozlišuje „polynomiální“/„NP-hard“).
| Problém ($\alpha\,|\,\beta\,|\,\gamma$) | Těžkost | Metoda | Lekce | Poznámka |
|---|---|---|---|---|
| Jeden stroj — $C_{max}$ (slide 13) | ||||
| $1\,||\,C_{max}$, $\;1\,|\,prec\,|\,C_{max}$ | easy | libovolné (topologické) pořadí | [L5.1] | vždy $C_{max} = \sum p_j$ |
| $1\,|\,r_j\,|\,C_{max}$ | easy | řazení dle neklesajícího $r_j$ | [L5.9] | nejmenší $r_j$ první |
| $1\,|\,\tilde{d}_j\,|\,C_{max}$ | easy | EDF (řazení dle neklesajícího $\tilde{d}_j$) | [L5.9] | přípustný rozvrh nemusí existovat |
| $1\,|\,r_j, \tilde{d}_j\,|\,C_{max}$ | silně NP-hard | Bratley B&B; position-based ILP | [L5.9], [L5.6b] | 3-PARTITION [L5.13]; pro $p_j = 1$ polynomiální |
| Jeden stroj — $\sum C_j$, $\sum w_j C_j$ (slide 23) | ||||
| $1\,||\,\sum C_j$, $\;1\,||\,\sum w_j C_j$ | easy | SPT / weighted SPT (neklesající $p_j / w_j$) | [L5.6a] | jen třídění |
| $1\,|\,prec\,|\,\sum w_j C_j$ | NP-hard | relative-order ILP + B&B s LP relaxací | [L5.6a], [L5.6b] | $x_{ij}$ = „$T_i$ před $T_j$“; pozor na $C_j = \sum_i p_i x_{ij}$ |
| Jeden stroj — $L_{max}$ (slide 27) | ||||
| $1\,||\,L_{max}$ | polynomiální | EDD (earliest due date first) | [L5.7] | optimalita swap argumentem |
| $1\,|\,r_j\,|\,L_{max}$ | NP-hard | — (bez preempce nic polynomiálního) | [L5.7] | preempce je tu klíč k easy |
| $1\,|\,pmtn, r_j\,|\,L_{max}$ | polynomiální | Horn (iterované EDD) | [L5.7] | preempce jen v release timech |
| $1\,|\,pmtn, r_j, d_j{=}\tilde{d}_j\,|\,L_{max}$ | polynomiální | týž Horn — říká se mu EDF | [L5.7] | $L_{max} \le 0$ ⟺ schedulovatelné |
| $1\,|\,pmtn, prec, r_j, d_j{=}\tilde{d}_j\,|\,L_{max}$ | polynomiální | Chetto-Silly-Bouchentouf → EDF | [L5.8] | $r'$ dopředně, $\tilde{d}'$ zpětně, pak nezávislé úlohy |
| Paralelní identické stroje — $C_{max}$ (slide 38) | ||||
| $P\,|\,pmtn\,|\,C_{max}$ | easy | McNaughton, $\mathcal{O}(n)$ | [L5.4] | $C^* = \max\{\max p_i, \textstyle\sum p_i / R\}$, wrap-around |
| $P\,|\,pmtn, r_j, \tilde{d}_j\,|\,-$ | easy | max flow (rozhodovací verze) | [L5.0] | intervaly z $\{r_j\} \cup \{\tilde{d}_j\}$; feasibilita = nasycený zdroj |
| $P\,||\,C_{max}$ (NP-hard už $P2\,||\,C_{max}$) | NP-hard | exaktně Rothkopf DP; aproximačně LPT | [L5.11], [L5.12] | 2-PARTITION [L1.1]; DP $\mathcal{O}(n \cdot UB^R)$; $r_{LPT} = \frac{4}{3} - \frac{1}{3R}$ |
| $P\,|\,prec\,|\,C_{max}$ | NP-hard | list scheduling | [L5.12] | faktor $r_{LS} = 2 - \frac{1}{R}$; pozor na anomálie |
| $P\,|\,pmtn, prec\,|\,C_{max}$ | NP-hard | Muntz&Coffman (level algoritmus) | [L5.10] | faktor $r_{MC} = 2 - \frac{2}{R}$; exaktní pro $P2$ a stromy |
| Project scheduling — temporální omezení (slidy 59–75) | ||||
| $PS1\,|\,temp\,|\,C_{max}$ | NP-hard | time-indexed ILP (proměnné $x_{it}$) | [L5.3] | graf TC [L5.2]; NP-těžkost z Bratleyho [L5.13]; existuje i relative-order model (slidy 68–70, mimo náš kurz lekcí) |
A obecná zbraň přes všechny řádky: cokoli z toho umíš zapsat jako ILP a poslat do branch & boundu [L5.5] — exaktně, bez polynomiální záruky. To je legitimní odpověď přesně tam, kde tabulka říká NP-hard (a lenost tam, kde říká easy).
Dvě nejhustší rodiny tabulky se dají odříkat jako posloupnost ano/ne otázek na $\beta$ — přesně tak je dobré je u ústní vyslovit.
Zápisy níže jsou skutečné zkouškové problémy z lekcí této kapitoly. Odpověz dřív, než rozklikneš.
Tím je kapitola K5 u konce. Pokračuje Slot 6: CSP a hranová konzistence — poslední nová technika před zkouškou.