Umělá inteligence

Hledání s omezujícími podmínkami

 Cíle

  • Rozpoznat úlohy, k jejichž řešení je vhodné hledání s omezujícími podmínkami
  • Identifikovat stavové proměnné úlohy, příp. zvolit je co nejefektivnějším způsobem
  • Umět sestavit omezující podmínky a graf závislosti proměnných
  • Aplikovat metody hledání s omezujícími podmínkami, včetně vylepšení uzpůsobených konkrétní úloze

 Klíčová slova

Omezující podmínky, ohodnocení stavových proměnných, graf závislosti proměnných, konzistence podmínek, dopředná kontrola

Shrnutí kapitoly

Problémy založené na splňování podmínek (Constraint Satisfaction Problems) představují častou reprezentaci praktických problémů (třeba rozvrhovacích). Jednoduchým příkladem je Sudoku - rozvrhnout čísla tak, aby splňovala podmínky. Popis problému obsahuje:

  • proměnné s jejich doménami = povolenými hodnotami; (Sudoku: každé políčko = proměnná, domény jsou {1,2,...,9})
  • množina podmínek na těchto proměnných; (Sudoku: proměnné v každém čtverci 3x3, v každém sloupci a v každém řádku musejí mít různé hodnoty). 

Úkolem je najít ohodnocení proměnných splňující všechny podmínky, někdy se také optimalizuje hodnotící funkce (mohou existovat "lepší" a "horší" řešení). 

Na rozdíl od klasického prohledávání stavového prostoru, kde je důležitá cena cesty do koncového stavu, v tomto případě na délce cesty k řešení nezáleží (většinou jsou stejné), ale rozhodující je najít řešení samotné a přitom prohledat co nejméně stavů. Soustava podmínek umožňuje často výrazně omezit prohledávanou část stavového prostoru. Omezující podmínky určují graf závislosti jednotlivých proměnných (např. u Sudoku jsou vzájemně závislé proměnné v každém čtverci, pak v každém sloupci a v každém řádku.

Příklad podmínek pro problém N dam

Rozmístěte N dam na šachovnici N x N, aby se vzájemně neohrožovaly (viz prezentace Illinois):

Proměnné:  X_{ij},1≤ i,jN

Domény: 0,1

Význam:  X_{ij} =1→ na políčku se souřadnicemi (i,j) je dáma,  X_{ij} =0 → na políčku není dáma

Podmínky:

\sum_{i,j} X_{ij} = N  Počet dam, tj. políček s  X_{ij} =1 na šachovnici musí být N

i,j,k, j ≠ k: (X_{ij}X_{ik}) ∈ {(0,0),(0,1),(1,0)}  Na žádné dvojici políček se souřadnicemi (i,j) a (i,k), tj. ležících v jednom řádku, nejsou dvě dámy, čili dvojice hodnot (1,1)

i,j,k, i ≠ k: (X_{ij}X_{kj}) ∈ {(0,0),(0,1),(1,0)}  V žádném sloupci nejsou dvě dámy

i,j,k, 1 ≤ k ≤ N−1: (X_{ij}X_{i+k,j+k}) ∈ {(0,0), (0,1), (1,0)}  Na žádné diagonále rovnoběžné s hlavní diagonálou nejsou dvě dámy

i,j,k, 1 ≤ k ≤ N−1: (X_{ij} ) ∈ {(0,0), (0,1), (1,0)}  Na žádné diagonále rovnoběžné s vedlejší diagonálou nejsou dvě dámy

Postup řešení:

Prohledávání stavového prostoru, kde každý stav je (částečné) ohodnocení proměnných. Akce (přechod mezi stavy) je ohodnocení jedné prázdné proměnné tak, že neporuší žádnou podmínku. Cílový stav = úplné přiřazení proměnných. 

Pak víme, že při n proměnných se řešení nachází vždy v hloubce prohledávacího stromu, a navíc nezáleží na pořadí přiřazení do proměnných. Lze tedy použít jednoduché prohledávání do hloubky s návratem (Backtracking search) - víme, že hloubky stromu je vždy omezená. Je to ale neinformovaná a neefektivní metoda.

Informované metody - vyšší efektivita prohledávání:

  • Nejprve ohodnocovat nejvíce omezenou proměnnou, tedy tu s nejmenším počtem zbývajících přípustných hodnot. V případě rovnosti se volí proměnná svázaná nejvíce podmínkami s doposud neohodnocenými proměnnými. 
  • Vybírat k přiřazení hodnoty, které nejspíše patří do řešení, například ty, které nejméně omezují ostatní doposud neohodnocené proměnné. Určení takových hodnot závisí na konkrétním problému.
  • Dopředná kontrola – při přiřazení hodnoty se podíváme na podmínky dalších proměnných spojené s přiřazenou proměnnou, a odstraníme jejich hodnoty, které podmínky nesplňují.
  • Konzistence podmínek – pokud se odfiltrují některé nepřípustné hodnoty z domén, lze pomocí grafu závislosti omezit i hodnoty dalších proměnných, a tím zmenšit prohledávanou část stavového prostoru. 
  • V případě grafu závislosti proměnných bez cyklů existuje rychlý algoritmus, který vždy najde řešení; dá se použít i tehdy, pokud je cyklů jen málo a přiřazením některých proměnných se dají cykly odstranit.

Ověření znalostí
  1. Vysvětlete, proč je dobrou strategií vybírat nejdříve nejvíce omezené proměnné, ale k přiřazení používat nejméně omezující hodnoty.
  2. Kolik řešení má problém barvení mapy na obrázku 6.1 v Russel & Norvig (2010)? Kolik bude řešení pro čtyři barvy? Pro dvě barvy?
  3. Uvažujte problém vytvoření křížovky, máte-li zadán její plán (rozměry, rozmístění šedých políček, která oddělují slova), a je zadán slovník možných slov. Navrhněte řešení pomocí omezujících podmínek. Co zvolíte jako proměnné jednotlivých stavů, písmena nebo slova? Proč?
  4. Naformulujte pomocí omezujících podmínek následující úlohy:
    (a) Plnění kontejneru tvaru kvádru zadanou množinou krabic - kvádrů daných rozměrů. Jak rozmístit krabice, aby se všechny vešly do kontejneru?
    (b) Rozvrhování výuky: je dána množina profesorů a místností, množina přednášek a časový interval (pracovní dny 8-20), kdy je možno učit. Každý profesor má zadánu množinu přednášek, které může učit.
    (c) Problém Hamiltonovské cesty.
  5. Uvažujte problém umístění K králů na šachovnici N x N tak, že se žádní dva neohrožují, kde K≤ N2.
    (a) Zvolte vhodně proměnné a jejich domény pro popis problém pomocí omezujících podmínek. 
    (b) Nyní zformulujte omezující podmínky - zapište je přesně matematicky pomocí vztahů mezi zvolenými proměnnými.
    (c) Uvažujte variantu, kdy máte umístit na šachovnici N x N největší možný počet králů. Vytvořte rozumnou formulaci problému a hodnotící funkci.
Úloha: problém K králů na šachovnici. Čas na odevzdání:1 týden
Vyřešte příklad 5, části a), b) ze sekce Ověření znalostí. Inspirujte se příkladem s dámami, omezující podmínky však budou zcela jiné. Max 5 bodů.
Literatura a zdroje

Základní:

  • RUSSELL, S.J., NORVIG, P. Artificial Intelligence: A Modern Approach, kap. 6.1 - 6.3.

Užitečné odkazy:

(jen po Local search, to už ne, ale užitečné je shrnutí na konci)

Prezentace MFF UK - téma "Splňování omezujících podmínek"

(jen po algoritmus AC3, ten už ne)