3 Modelování jako ILP a SAT
- zvolit proměnné, aby každé řešení odpovídalo jednomu přiřazení
- přepsat podmínky „aspoň“, „nejvýše“ a „právě“ do ILP i CNF
- zapsat klasické problémy jako ILP nebo SAT
- ověřit, že model nedovoluje nesmyslná řešení
V úloze máš problém a chceš ho přeložit do jazyka řešiče. Nemusíš vymýšlet algoritmus. Stačí dobře pojmenovat proměnné a vzorně přepsat podmínky.
3.1 Ukázka: rozdáváme hlídky
Ve firmě jsou tři chodby: AB, BC, CD. Chceme co nejméně hlídek tak, aby každá chodba měla hlídku aspoň na jednom konci. To je Vertex Cover.
Pro každé místo zavedeme , kde 1 znamená, že tam hlídka je.
Řešením je se dvěma hlídkami. Každá nerovnice říká přesně jednu větu ze zadání.
3.2 ILP
Proměnné , často jen . Minimalizujeme lineární funkci za podmínek . Rozhodovací verze se ptá, zda existuje celočíselné splňující . Reálné LP je polynomiální, požadavek celých čísel z něj dělá NP-těžký problém.
| Věta | Zápis |
|---|---|
| aspoň jedno z | |
| nejvýše jedno | |
| právě jedno | |
| negace | |
| implikuje | |
| nejvýše vybraných |
Pro každou proměnnou . Negaci zapíšeme . Klauzule se stane
Klauzule je splněná, když je aspoň jeden sčítanec 1.
Indikátor říká, že vrchol má barvu .
- Každý vrchol má právě jednu barvu: .
- Hrana a barva : .
znamená, že je v množině. Každý vrchol musí být vybraný nebo mít vybraného souseda:
3.3 SAT
Formule je v CNF: klauzule spojené AND, uvnitř OR. Řešič dostane DIMACS: proměnné jsou čísla, řádek 1 -2 0 znamená .
| Věta | Klauzule |
|---|---|
| aspoň jedno z | |
| nejvýše jedno | |
| právě jedno | obojí dohromady |
| implikuje | |
| ne všechny tři |
Rozdíl proti ILP: v SAT není součet. Podmínka „nejvýše jedno“ proto potřebuje klauzuli na každou dvojici.
Proměnná pro každý vrchol a barvu.
- Aspoň jedna barva: .
- Hrana: pro každou barvu .
Podmínka „nejvýše jedna barva“ tu není potřeba. Má-li vrchol v řešení dvě barvy, jednu zahodíme a nic se nepokazí. Stejný trik používá proseminář u Schurových čísel.
Klíč je kódování podle pozic: říká, že na pozici kružnice je vrchol .
- Na každé pozici je aspoň jeden vrchol.
- Každý vrchol je aspoň na jedné pozici.
- Žádný vrchol není na dvou pozicích: .
- Na žádné pozici nejsou dva vrcholy: .
- Sousední pozice jsou spojené hranou. Pro každou nehranu a pozici : , indexy modulo .
Proměnných je a klauzulí polynomiálně mnoho.
Lze čísla obarvit barvami bez jednobarevné trojice ? Proměnná , v DIMACS .
- Aspoň jedna barva pro každé .
- Pro , a barvu : .
Pro dostane číslo 2 s barvou 2 proměnnou .
3.4 Jak model ověřit
Než model odevzdáš, odpověz si na dvě otázky:
- Každé skutečné řešení splňuje všechny podmínky? Jinak model zakazuje něco platného.
- Každé splnění podmínek je skutečné řešení? Jinak model pouští nesmysl.
3.5 Typické chyby
- Nelineární člen v ILP.
- Zapomenutá negace, když se klauzule přepisuje do součtu.
- SAT model bez podmínek „nejvýše jeden“ tam, kde jsou potřeba.
- Chybějící význam proměnných. Vždy napiš větu, co proměnná znamená.
3.6 Kvíz
3.7 Příklady na procvičení
Zapiš Set Cover jako ILP.
Řešení
říká, že množina je vybraná. Pro každý prvek : . Dále .
Zapiš Clique velikosti jako SAT.
Řešení
říká, že -tý člen kliky je vrchol , pro .
- Každý člen je nějaký vrchol: .
- Pro a dvojici , kde nebo není hrana: .
Druhá podmínka zakáže opakování vrcholu i nehrany.
Máš zkoušek, termínů, nejvýše zkoušek v termínu a konflikty mezi zkouškami. Zapiš ILP.
Řešení
říká, že zkouška je v termínu .
- Každá zkouška jednou: .
- Konflikt : pro každé .
- Kapacita: pro každé .
3.8 Tahák
- Napiš větu: „ znamená, že ...“.
- ILP: aspoň , nejvýše , právě , negace , implikace .
- SAT: aspoň = jedna klauzule, nejvýše = klauzule na dvojici, implikace .
- Pořadí a cesty: (na pozici je vrchol ).
- Výběr z více možností: indikátor .
- Kontrola: řešení ⇒ podmínky, podmínky ⇒ řešení.