2 Splňování podmínek (CSP)
- zapsat úlohu jako CSP
- spočítat hranovou konzistenci
- vybrat proměnnou a hodnotu pomocí heuristik
- vysvětlit backjumping a nogoody
2.1 Ukázka: sudoku
Každé políčko je proměnná, doména je 1 až 9 a podmínky říkají, že se v řádku, sloupci a čtverci nic neopakuje. Zapíšeš jen co musí platit a řešič dělá zbytek. To je smysl CSP.
Trojice : konečná množina proměnných, jejich domény a podmínky, tedy povolené kombinace hodnot. Řešení přiřadí každé proměnné hodnotu tak, aby platily všechny podmínky.
2.2 Hledání
Chronologický backtracking přiřazuje proměnné a při nemožnosti se vrátí k poslední. Dopředná kontrola po přiřazení vyškrtne z domén sousedů, co už nejde. Pokud se doména vyprázdní, hned se vrací.
Hrana je konzistentní, pokud každá hodnota v má podporu v . Hodnota bez podpory se smaže. Opakuje se, dokud se domény mění. Složitost je .
, podmínky a . Spočítej domény po AC.
Řešení
- : nemůže být 3 a nemůže být 1.
- : nemůže být 3 a nemůže být 1. Teď .
- Znovu : . Znovu : .
Výsledek , , . Změna domény vyvolala novou kontrolu sousedních hran.
Konzistentní síť nemusí mít řešení. Tři proměnné se dvěma barvami a nerovnostmi jsou hranově konzistentní, ale obarvit nejdou.
2.3 Heuristiky
- Proměnná: nejvíce omezená (nejmenší doména), při shodě nejčastěji zapojená. Těžká rozhodnutí neodkládej.
- Hodnota: nejméně omezující, ať má zbytek co nejvíc možností.
Zapamatuj si: proměnná se vybírá tak, aby se selhalo brzy, hodnota tak, aby se uspělo.
2.4 Skoky a učení
Backjumping se nevrací k poslední proměnné, ale k té, která konflikt skutečně způsobila. Nogood je zapamatovaná nerozšiřitelná kombinace hodnot. To je předobraz učení klauzulí v CDCL.
GAC rozšiřuje konzistenci na nebinární podmínky. Pro all-different existuje rychlá filtrace. Symetrie se rozbíjejí přidanými podmínkami.
2.5 Kvíz
2.6 Příklady na procvičení
Zapiš obarvení mapy tří sousedících zemí třemi barvami jako CSP.
Řešení
, , podmínky , , .
2.7 Tahák
- CSP .
- Filtrace: dopředná kontrola < hranová konzistence < GAC.
- Proměnná s nejmenší doménou, hodnota nejméně omezující.
- AC , nerozhoduje řešitelnost.
- Backjumping = skok ke konfliktu, nogood = naučený zákaz.