De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Modelleren en Programmeren voor KI Practicumopdracht 4: SAT Solver

Verwante presentaties


Presentatie over: "Modelleren en Programmeren voor KI Practicumopdracht 4: SAT Solver"— Transcript van de presentatie:

1 Modelleren en Programmeren voor KI Practicumopdracht 4: SAT Solver
Tomas Klos

2 Het SAT probleem

3 Parvulae Logicales: Propositielogica, Hoofdstuk 6 (Semantiek), p. 62:

4 ((¬¬(p∧(q∨r))∧¬s)→¬t)
Het SAT probleem Ik geef je een propositielogische formule F, jij moet zeggen of hij vervulbaar (SATisfiable) is. Hoe kun je daar achter komen? Hoe kun je dat zien aan de waarheidstabel van F? Is er (tenminste) één rij in de waarheidstabel van F, waar een 1 staat onder het hoofdvoegteken van F? Bijvoorbeeld: is deze formule vervulbaar? ((¬¬(p∧(q∨r))∧¬s)→¬t)

5 Waarom is SAT belangrijk?

6 Waarom is SAT belangrijk?
Het SAT probleem modelleert vele praktijkproblemen Vrachtwagens routeren Treinroostering Productieplanning Zalenroostering Order picking in magazijnen Onderhoudsactiviteiten in werkplaatsen plannen Algemeen: Dit zijn allemaal (NP-)moelijke problemen Oplossingen zijn toekenningen van waarden aan variabelen

7 Aanpak (moeilijke) problemen
Modelleren als propositielogische formule SAT solver ontwerpen en programmeren Is de formule vervulbaar (SATisfiable)? Ja, vervulbaar: zo’n valuatie is een oplossing voor het probleem Nee, niet vervulbaar: er is geen oplossing Het SAT probleem is NP-compleet (d.w.z. hoogstwaarschijnlijk heel moeilijk: we weten niks wezenlijk beters dan alle mogelijkheden proberen)

8 Assignment problemen 1 2 3 Simpel voorbeeld: Graafkleuren:
Ken (precies) 1 van 2 kleuren uit {R, B} toe aan elke knoop Kanten zijn `constraints’: verbonden knopen moeten verschillende kleur krijgen (Dit is triviaal, maar denk aan het algemene geval.) Q: Hoe kunnen we dit probleem modelleren? A: We gebruiken binaire beslissingsvariabelen Constraints zijn ‘vergelijkingen’ (formules) Logische connectieven zijn de operatoren in die vergelijkingen Een oplossing is een vervullende toekenning (‘model’) 2 3 1

9 ‘Assignment probleem’ model
2 3 1 Modelleren: Welke variabelen gebruiken we? xnc = 1 desda knoop n kleur c heeft Dus: welke variabelen? x1R, x1B, x2R, x2B, x3R, x3B

10 ‘Assignment probleem’ model
Wat zijn de constraints? Elke knoop krijgt een kleur (“r of b”) Geen knoop krijgt meerdere kleuren (niet “r en b” dus) Verbonden knopen krijgen verschillende kleuren Welke constraints? x1R ∨ x1B, x2R ∨ x2B, x3R ∨ x3B, ¬x1R ∨ ¬x1B, ¬x2R ∨ ¬x2B, ¬x3R ∨ ¬x3B, ¬x1R ∨ ¬x2R, ¬x1B ∨ ¬x2B, ¬x2R ∨ ¬x3R, ¬x2B ∨ ¬x3B, ¬x3R ∨ ¬x1R, ¬x3B ∨ ¬x1B 2 3 1

11 Generaliseren In zaalroostering, bijvoorbeeld:
xvzhd = 1 desda vak v is geroosterd in zaal z tijdens uur h van dag d Voorbeeld van constraint: x KI1V13009_KBG-ATLAS_1_V ∨ x KI1V13009_KBG-ATLAS_3_V ∨ x KI1V13009_KBG-ATLAS_5_V ∨ Q: Hoe ziet een oplossing eruit? A: Een toekenning van 0 of 1 aan alle variabelen, die alle constraints vervult.

12 Sudoku Welke variabelen? Hoeveel zijn dat er?
xijk = 1 desda in rij i en kolom j getal k staat x111, x112, x113, x114, ..., X121, x122, x123, x124, ..., ... x991, x992, x993, ..., x999. Hoeveel zijn dat er? 93 = 729.

13 Sudoku constraints Elk 3x3 blok bevat elk getal: x111 ∨ x121 ∨ x131 ∨
... etc. (ook voor de andere 3x3 blokken)

14 Sudoku constraints Elk getal één keer in een blok: ¬(x111 ∧ x112)
... ¬(x112 ∧ x113) ¬(x112 ∧ x114) ¬(x331 ∧ x332) ¬(x338 ∧ x339) etc. voor de andere 3x3 blokken

15 Sudoku constraints Elk getal in elke rij: x111 ∨ x121 ∨ ... ∨ 191
etc. (voor de overige rijen, en ook voor de kolommen)

16 Sudoku constraints Dit worden 8829 disjuncties:
81 9-aire 8748 binaire De gehele formule is de conjunctie van al deze disjuncties Wat ontbreekt er nou nog? x112 ∧ x133 ∧ x159 ∧ x196 ∧ x221 ∧ ... ∧ x986

17 En nou... oplossen! Nog een keer: hoe bepaal je of een formule vervulbaar is? Onze aanpak: Lees de formule in (‘parse’) Verzamel alle variabelen Beschouw de variabelen achter elkaar: x1, x2, x3, ... maak ze achtereenvolgens True en als nodig False. Check of de formule waar of onwaar kan zijn Vind je een valuatie die de formule waar maakt? “SAT” + valuatie Vind je niet zo’n valuatie? “UNSAT”

18 Parsen? Terug naar Logica voor KI

19

20

21 Voorbeeld van een formule
Stel dat je dit inleest: (((a\/b)/\(-b\/c))/\-a) Wat is het hoofdvoegwoord? Conjunctie, met deze conjuncten (ook formules!) ((a ∨ b) ∧ (¬b ∨ c)) en ¬a Wat weet je dus over een valuatie die deze formule waar maakt (als hij bestaat?) Als a True is kan deze formule niet waar zijn! Zo gaan we het doen: kan een formule nog waar zijn, gegeven de toekenningen die ik al heb gedaan?

22 Voorbeeld van een formule
(((a\/b)/\(-b\/c))/\-a) Hoe bepaal je de waarheidswaarde?

23 Voorbeeld van een formule F
(((a\/b)/\(-b\/c))/\-a) Hoe bepaal je de waarheidswaarde? V(F) = min(V(((a ∨ b) ∧ (¬b ∨ c))), V(¬a)) De valuatiefunctie is recursief! We weten niet wát voor formules dit zijn, maar wel dát het formules zijn. Welke programmeerconcept gebruiken we dus hiervoor?

24 Interface Formule public interface Formule { // onder andere bijvoorbeeld: int MethodeA(String s); string ToString(); } Schrijf code voor deze methoden in de klassen die deze interface implementeren, bijvoorbeeld: public class Disjunctie : Formule { public MethodeA(String s) { //code voor deze methode hier. }

25 Handig, zo’n interface! Dan kun je in je Main programma dit doen:
static Valuatie Vervulbaar(Formule formule) { // bepaal of formule vervulbaar is, zonder dat je weet // welk specifiek type formule dit is! // (negatie, conjunctie, ...) }


Download ppt "Modelleren en Programmeren voor KI Practicumopdracht 4: SAT Solver"

Verwante presentaties


Ads door Google