Materialien zur Vorlesung Wissensbasierte Systeme Prof. Dr. G. Brewka WS01/02 Gliederung der Vorlesung 1. Einführung: Was ist KI 2. Wissensbasierte Systeme, Problemlösen und Suche 3. Heuristische Suche, A*, Hill-Climbing, Genetische Algorithmen 4. Whlg. Aussagenlogik 5. Whlg. Prädikatenlogik 6. Answer Set Programming I: definite Programme, normale Programme 7. Answer Set Programming II: erweiterte Programme, Anwendungen 8. Default Logik 9. Anwendungen der DL: Modellbasierte Diagnose und Situationskalkül 10. STRIPS, Nichtlineares Planen 11. Graphplan 12. Probeklausur 13. Maschinelles Lernen I: Entscheidungsbäume, Versionsraumlernen 14. Maschinelles Lernern II: Induktives Logisches Programmieren 15. Data Mining Vorbemerkung: Das hier zusammengestellte Material betrifft ausschließlich den Stoff der Vorlesung, für den keine Folien verfügbar sind. Die Folien sind über den Lernserver des Instituts für Informatik zu erhalten. 1 3. Heuristische Suchverfahren versuchen, optimale oder wenigstens annähernd optimale Lösung in exponentiell großem Lösungsraum durch problemspezifische Information zu finden. I. II. Ansätze, die Lösung schrittweise konstruieren (A*, Greedy-Verfahren) Verbesserungsverfahren: starten mit zufällig gewählter vollständiger Lösung und versuchen diese zu verbessern. Zu I: Greedy Algorithmen Lösen von Optimierungsproblemen: gegeben: Gütefunktion w für Lösungen und Teillösungen optimale Lösung konstruiert durch schrittweises Erweitern einer unvollständigen Teillösung. Ausgangspunkt ist leere Lösung. Von allen Erweiterungsmöglichkeiten wird jeweils diejenige gewählt, die zu größtem (bzw. kleinstem) w-Wert führt (greedy = gefräßig, der größte Bissen wird jeweils geschluckt) Beispiele: Auftragsplanung: Gegeben: Menge A von n "Aufträgen", jeweils in einer Zeiteinheit zu bewältigen, zu jedem Auftrag i gibt es Gewinn pi und Termin di, an dem er abgeschlossen sein muss (sonst kein Gewinn). Gesucht: Menge M von Aufträgen, so dass a) M sich so sortieren lässt, dass jeder Auftrag vor seinem Abschlusstermin erledigt wird und b) der Gesamtgewinn maximal ist. Beispiel: Job 1 2 3 4 Gewinn 20 25 10 5 Lösung 3,2,4 4,2 1,2,4 Deadline 2 2 1 3 Gewinn 40 30 50 beste Lösung Greedy Algorithmus: Ordne Aufträge nach absteigenden Gewinnen: p1 ≥ p2 ≥ ...≥ pn; A := {}; for i:= 1 to n do if A {i} ist zulässige Lösung then A := A {i}; Gib A aus Bemerkung: 2 1. es ist wesentlich, dass eine Menge von Aufträgen erzeugt wird, die dann noch in Reihenfolge gebracht werden muss, nicht direkt eine Folge. 2. Aus diesem Algorithmus erhält man den kanonischen Greedy-Algorithmus, wenn man statt der Gewinne eine entsprechende Wertefunktion w verwendet. Für Korrektheitsbeweis allgemeinere Betrachtung: Sei E endliche Menge, U Menge von Teilmengen von E. (E,U) heißt Teilmengensystem, falls gilt: 1. {} U; 2. A B, B U => A U Ein Teilmengensystem heißt Matroid, wenn folgende Austauscheigenschaft gilt: X, Y U, |X| < |Y| => x Y - X: X {x} U Es gilt folgender Satz: Sei (E,U) ein Teilmengensystem. Der kanonische Greedy-Algorithmus liefert für das zugehörige Optimierungsproblem (bzgl. beliebiger Wertefunktion w: E -> R) die optimale Lösung gdw. (E,U) ein Matroid ist. Beweis: Übung Mit diesem Satz ergibt sich Korrektheit des Auftragsplanungsalgorithmus direkt aus entsprechender Matroideigenschaft: E: Menge A von Aufträgen U: Menge L(A) von Lösungen, d.h. Aufträgen, so dass Sortierung entsprechend deadline möglich ist Es gilt offensichtlich (A, L(A)) ist Teilmengensystem. Nachweis der Austauscheigenschaft: Sei b ein Element in Y-X mit größter (= spätester) deadline. Dieses Element kann zu X hinzugefügt werden, ohne Lösungseigenschaft zu verletzen. Typ II-Verfahren: Hill Climbing Starte mit beliebiger vollständiger Lösung, modifiziere sie nach bestimmten Regeln und/oder zufällig. Wenn neu erzeugte Lösung besser ist als alte, übernimm sie und mache so weiter. Erzeuge Anfangslösung l; repeat modifiziere l zu l'; if l' besser als l then l := l until längere Zeit keine Verbesserung; Gib l als akzeptable Lösung aus Problem: lokale Optima, möglicherweise keine benachbarte (= durch Modifikation herstellbare) Lösung besser als aktuelle Lösung. Kann dadurch vermindert werden, dass man Verfahren wiederholt mit neuer Zufallslösung startet, bisher beste alte Lösung wird vermerkt. 3 Beispiel: Travelling Salesman Problem (TSP) Annahme: Entfernungsmatrix symmetrisch Initialisierung: zufällig erzeugte Permutation lokale Verbesserung: wähle 2 Städte vi, vj zufällig (o.B.d.A. i < j), falls M[vi,vi+1] + M[vj,vj+1] > M[vi,vj] + M[vi+1,vj+1] so ersetze bisherige Rundreise durch v1, v2 , ... , vi , vj, vj-1,..., vi+2, vi+1, vj+1, ..., vn D.h.: vi mit vj verbunden, vi+1 mit vj+1, Teil der Rundreise zwischen vj und vi+1 andersherum. ___________ | | vi+1 vj | | vi vj+1 | _________ | ___________ | | vi+1_______ vj _____|______ vi vj+1 | _________ | Beispiel 2: Erfüllbarkeit aussagenlogischer Formeln in 3-KNF F in 3-KNF gdw F ist Konjunktion von Disjunktionen von Literalen (aussagenlogische Variablen und deren Negation). Pro Disjunktion 3 Literale (p v ¬q v r) & (¬p v q v s) & ... Gesucht: Wahrheitsbelegung I: V -> {w,f} der Variablen, so dass Formel wahr wird (F wahr gdw. alle Disjunktionen in F wahr, Disjunktion wahr gdw. mindestens ein Literal wahr, Literal L wahr gdw. L = ¬v und I(v) = f oder L = v und I(v) = w. Algorithmus: Wähle zufällig Anfangsbelegung I while es gibt I', so daß 1) I' unterscheidet sich von I im Wahrheitswert genau einer Variable und 2) I' macht mehr Disjunktionen wahr als I I := I'; if I erfüllt alle Disjunktionen then write('erfüllbar') else write('nicht erfüllbar') Überraschend gute Ergebnisse: Wahrscheinlichtkeit, daß man für Formel mit n=200 Variablen erfüllende Interpretation nicht findet, obwohl es sie gibt etwa 2,15 · 10-16. 4 Genetische Algorithmen Versuchen, natürliche Evolutionsprozesse nachzubilden. Nicht einzelene Lösung wird verbessert, sondern Population vom Lösungen. Sowohl zufällige Änderungen (Mutationen) als auch Kreuzungen (Cross-over) von Lösungen. Lösungen mit besten Bewertungen (Fitness) überleben jeweils. Algorithmus: erzeuge zufällig Anfangspopulation von Lösungen P = {a1,...,am}; repeat erzeuge bestimmte Anzahl zufälliger Mutationen der Lösungen in P; erzeuge bestimmte Anzahl zufälliger Kreuzungen von Lösungspaaren aus P; bewerte Fitness aller erhaltenen Lösungen; wähle die m fittesten Lösungen aus und weise diese P zu until keine weitere Verbesserung der Fitness gib die in der erhaltenen Population fitteste Lösung aus Kreuzung: einfach, wenn Lösungen als Bitstrings codiert sind: werden an geeigneter Stelle aufgeschnitten und neu zusammengesetzt. Manchmal weniger offensichtlich: Beispiel TSP: v = (v1,..., vn) w = (w1,..., wn) Nicht einfach Vorderteil von v mit Reststück von w kombinierbar. Idee: wähle beliebigen Ausschnitt v' von v und nimm aus w der Reihe nach die Nachfolger des letzten Elements von v', die noch nicht enthalten sind. Beispiel: v = (1 5 9 7 4 6 2 3 8) w = (7 6 2 9 5 1 3 4 8) zufällig gewählte Teilfolge: 5 9 7 4 neue Rundreise: (5 9 7 4 8 6 2 1 3) 5 4. Aussagenlogik Einführung Was ist Logik? math. Logik? das Wissenschaftsgebiet, das Folgerungsbeziehungen untersucht mit math. Mitteln, Hauptziel: Präzisierung des Folgerungsbegriffs Folgern: einige Beispiele I. Wenn es regnet, ist es naß. Es regnet _ Es ist naß. II. Es ist Sonntag oder es ist Montag. Es ist nicht Sonntag. _ Es ist Montag. III. Wenn warm ist, ist es nicht kalt. IV. Wenn es Sommer ist, ist es warm. Es ist warm. ? Es ist Sommer. ? Wenn es kalt ist, ist es nicht warm Die Fälle I und II sind klar, III und IV weniger (wir werden sehen, dass III gültig ist, IV nicht). Grundfrage: Wann kann man Sätze folgern, wann nicht? Beobachtung: Folgerungen hängen nicht von Inhalt der Sätze ab, nur von deren Form: Wenn die Sonne scheint, ist es warm. die Sonne scheint _ Es ist warm. Wir können also vom Inhalt abstrahieren (und einfach A, B, C ... schreiben -> Variablen) relevant ist nur, dass Aussagen wahr oder falsch (dargestellt als w/f, t/f oder1/0) sein können. was interessiert uns an der Form? abhängig von der Logik Aussagenlogik: nur einfache log. Verknüpfungen Prädikatenlogik: auch Quantoren (für alle, es gibt), Prädikate, Funktionen. Syntax und Semantik der Aussagenlogik Relevante Verknüpfungen (Junktoren): und, oder, wenn ... dann, nicht, genau dann ... wenn math. Symbole: &,v,->,¬,<-> Aussagen werden durch Formeln repräsentiert. Def.: logische Formeln (induktiv) gegeben: Menge V von aussagenlogischen Variablen 1. jedes Element von V ist eine (atomare) Formel, 2. wenn P,Q Formeln sind, so auch ¬P, (P&Q), (PvQ), (P->Q), (P <->Q) Klammern kann man weglassen, wenn Formeln aufgrund von Bindungsregeln eindeutig sind: Bindungsstärke (abnehmend): ¬, &, v, ->, <-> 6 Wann sind Formeln wahr oder falsch? Kann man nur beantworten, wenn man a) Bedeutung der Junktoren und b) die Wahrheitswerte der Variablen kennt a) Bedeutung der Junktoren entspricht intuitiver Bedeutung in Umgangssprache. Beschrieben durch Wahrheitstafeln: P 1 1 0 0 Q 1 0 1 0 ¬P 0 0 1 1 P&Q 1 0 0 0 PvQ 1 1 1 0 P -> Q 1 0 1 1 P <-> Q 1 0 0 1 b) man braucht Abbildung I: V -> {w,f} (Interpretation), um Formel auszuwerten. Beispiel: F = (A v B) -> (C & D) I(A) = I(C) = 1, I(B) = I(D) = 0, I wertet F zu 0 aus. Interpretationen, die eine Formel F (bzw. eine Menge von Formeln M) zu w auswerten, heißen Modelle von F (bzw. M). Folgerbarkeit: Q folgt aus F (bzw. M) heißt: immer wenn F (bzw. M) wahr ist, muß auch Q wahr sein, also: jedes Modell von F (bzw. M) ist Modell von Q. Wir schreiben F |= Q bzw. M |= Q Folgerbarkeit lässt sich (in einfachen Fällen) anhand von Wahrheitstabellen überprüfen Beispiel (siehe oben III): P 1 1 0 0 Q 1 0 1 0 ¬P 0 0 1 1 ¬Q 0 1 0 1 P -> ¬Q 0 1 1 1 Q -> ¬P 0 1 1 1 Zeilen entsprechen Interpretationen. Interpretationen in Zeile 2,3,4 sind Modelle von P -> ¬Q, diese sind auch Modelle von Q -> ¬P, also P -> ¬Q |= Q -> ¬P Beispiel 2 (siehe oben IV): P 1 1 0 0 Q 1 0 1 0 P -> Q 1 0 1 1 7 Modelle von P -> Q und Q entsprechen Zeilen 1 und 3, Zeile 3 macht aber P falsch, also folgt P nicht aus P -> Q und Q. Formeln heißen äquivalent (Symbol: , wenn jede Interpretation sie gleich auswertet. Formeln, die in allen Interpretationen wahr sind, heißen allgemeingültig (Tautologien): A v ¬A Formeln, die in allen Interpretationen falsch sind, widersprüchlich (Kontradiktionen): A & ¬A Formeln, die mindestens 1 Modell besitzen, heißen erfüllbar. Satz: Folgende Aussagen sind äquivalent: 1) P |= Q. 2) P -> Q ist Tautologie. 3) P & ¬Q ist Kontradiktion. Widerspruchsbeweise zeigen Folgerungsbeziehungen über Variante 3). Häufig verwendetes Beweisverfahren: Resolution Beobachtung: {A v B, ¬A v C} |= B v C allgemeiner: {A1 v...v Aj v...v Ak, B1 v...v Bi v...v Bm} |= A1 v...v [Aj v]...v Ak v B1 v...v [Bi v]...v Bm, falls Aj = ¬Bi (geklammerte Teile entfallen) Terminologie: Ein Literal ist eine atomare Formel oder eine negierte atomare Formel. Eine Formel ist in konjunktiver Normalform (KNF), wenn sie eine Konjunktion von Disjunktionen von Literalen ist. Disjunktionen von Literalen heißen auch Klauseln. Statt Konjunktionen von Klauseln verwendet man äquivalent Klauselmengen. Die aus keinem Disjunktionsglied bestehende leere Klausel [] ist äquivalent zu 0. Satz: Jede Formel kann in eine äquivalente Formel in KNF überführt werden. Resolutionsverfahren: 1. negiere zu überprüfende Formel F und füge sie zu Prämissen P hinzu, 2. überführe P {¬F} in KNF, 3. wende die Resolutionsregel an und versuche, die leere Klausel [] abzuleiten. Satz: F ist folgerbar aus M gdw. auf diese Weise die leere Klausel hergeleitet werden kann. Zur Überführung in KNF: 1. löse -> und <-> auf verwendete Äquivalenzen: P -> Q ¬P v Q P <-> Q (P&Q) v (¬P&¬Q) de Morgansche Regeln: ¬(P v Q) (¬P & ¬Q) ¬(P & Q) (¬P v ¬Q) z.B. (a & b) v c ==> (a v c) & (b v c) 2. bringe Negationszeichen vor Variablen 3. multipliziere aus 8 Bsp: AvB A -> C ¬C -> ¬B ableitbar C? AvB AvB A -> C ¬A v C (2) ¬C -> ¬B C v ¬B (3) ¬C ¬C ¬B ¬A A [] (1) (4) (5) (6) (7) (8) Resolvente aus 3,4 Resolvente aus 2,4 Resolvente aus 1,5 Resolvente aus 6,7 9 C also ableitbar. 5. Prädikatenlogik Syntax und Semantik Bestimmte Schlüsse werden von der Aussagenlogik nicht erfasst: Alle Informatiker sind schlau. Peters Vater ist Informatiker. Peters Vater ist schlau. Aus Sicht der Aussagenlogik sind die Prämissen dieses Schlusses einfach 2 unterschiedliche Sätze. Erst wenn die Struktur dieser Sätze mitberücksichtigt wird, lässt sich der Zusammenhang zwischen Prämissen und Konklusion in diesem Beispiel erfassen. Die Prädikatenlogik berücksichtigt deshalb neben den aussagenlogischen Junktoren auch folgende strukturelle Aspekte: 1) Sätze können aus Prädikaten (schlau), Funktionen (Vater) und Objektbezeichnern (Peter) aufgebaut sein. 2) Sätze können Quantoren enthalten ("für alle ... gilt ..., es gibt ein ... für das gilt" ) Für die Definition der Formeln muß zunächst festgelegt werden, welche Variablen, welche Prädikatensymbole und welche Funktionssymbole verwendet werden sollen. Bei letzteren ist zusätzlich jeweils die Stelligkeit (Anzahl der Argumente) anzugeben. Konstanten können als nullstellige Funktionssymbole aufgefaßt werden. Die Definition erfolgt nun in 2 Schritten. Zunächst werden Terme definiert (Terme bezeichnen immer ein bestimmtes Objekt) Def.: Terme (induktiv) 1) eine Variable ist ein Term, 2) wenn f ein n-stelliges Funktionssymbol ist, t1,...,tn Terme, so ist f(t1,...,tn) ein Term. Beispiele: x, y, Peter, Vater(Peter),... Def.: Formeln (induktiv) 1) wenn P ein n-stelliges Prädikatensymbol ist, t1,...,tn Terme, so ist P(t1,...,tn) eine Formel, 2) wenn P und Q Formeln sind, so auch ¬P, (P&Q), (PvQ), (P->Q), (P <->Q), 3) falls x Variable ist und F Formel, so sind auch x F und x F Formeln. Die nach 1) erzeugten Formeln heißen atomar. Literale sind atomare oder negierte atomare Formeln. Ein Vorkommen einer Variable x heißt gebunden in F, falls dieses Vorkommen in einer Teilformel von F der Form x G und x G liegt. Andernfalls heißt das Vorkommen frei. Eine Formel heißt bereinigt, wenn freie und gebundene Variablen sowie durch verschiedene Quantoren gebundene Variablen verschieden sind. Durch Umbenennen von Variablen kann man Formeln immer bereinigen. Beispiel: P(x, y) v x Q(x). Das erste Vorkommen von x ist frei, das zweite gebunden. Wie werden Formeln ausgewertet? 10 in Aussagenlogik: atomare Sätze mit wahr oder falsch belegen. jetzt: Menge festlegen, über die etwas ausgesagt wird, Funktions- und Prädikatensymbole zu Funktionen und Prädikaten auf dieser Menge interpretieren. Def.: (Struktur) Eine Struktur ist ein Paar A = (UA, IA). Dabei ist UA eine beliebige nichtleere Menge (Universum, Domain, Individuenbereich). IA ist eine Abbildung, für die gilt: 1. jedem k-stelligen Prädikatensymbol P im Definitionsbereich von IA wird ein k-stelliges Prädikat über UA zugeordnet. 2. jedem k-stelligen Funktionssymbol f im Definitionsbereich von IA wird eine k-stellige Funktion über UA zugeordnet. 3. jeder Variablen x im Definitionsbereich von IA wird ein Element von UA zugeordnet. Wir schreiben PA statt IA(P), fA statt IA(f) und xA statt IA(x). Sei F eine Formel, A eine Struktur. A heißt zu F passend, wenn alle in F vorkommenden Funktions- und Prädikatensymbole sowie alle freien Variablen im Definitionsbereich von IA liegen. Def.: (Semantik der Prädikatenlogik) Sei F eine Formel, A eine zu F passende Struktur. Der Wert eines Terms t in A, A(t), ist induktiv wie folgt definiert: 1. Falls t = x für Variable x, so ist A(t) = xA 2. Falls t = f(t1,...,tk), so ist A(t) = fA(A(t1),...,A(tk)) Der Wahrheitswert einer Formel F unter A, A(F), ist induktiv wie folgt definiert: 1. Falls F = P(t1,...,tk), so ist A(F) = 1 wenn (A(t1),...,A(tk)) in PA, 0 sonst. 2. Falls F = ¬G, so ist A(F) = 1 wenn A(G) = 0, 0 sonst 3. Falls F = (G H), so ist A(F) = 1 wenn A(G) = 1 und A(H) = 1, 0 sonst. 4. Falls F = (G vH), so ist A(F) = 1 wenn A(G) = 1 oder A(H) = 1, 0 sonst. 5. Falls F = x G, so ist A(F) = 1 wenn für alle d in UA gilt A[x/d] (G) = 1, 0 sonst. 6. Falls F = x G, so ist A(F) = 1 wenn für ein d in UA gilt A[x/d] (G) = 1, 0 sonst. Hierbei ist A[x/d] die Struktur, die mit A identisch ist bis auf den Wert von x. Es gilt xA[x/d] = d. Falls A(F) = 1, heißt A Modell von F. F heißt (allgemein)gültig, falls jede passende Struktur F zu 1 auswertet. Begriffe sind entsprechend auch für Mengen von Formeln definiert. Wieder gilt: F gültig gdw ¬F unerfüllbar. Die Begriffe Folgerung, Äquivalenz, Erfüllbarkeit sind definiert wie in der Aussagenlogik. Beispiel: F = x y P(x,y) 11 Struktur A1: Universum: {Peter, Claudia, Klaus} P(x,y) soll bedeuten: x liebt y. F also: Jeder liebt jemanden. Peter liebt Claudia, Claudia liebt Klaus, Klaus liebt Peter Also: PA1 = {(Peter,Claudia), (Claudia, Klaus), (Klaus, Peter)} A1(F) = 1 gdw 1. A1[x/Peter](y P(x,y)) = 1 und 2. A1[x/Claudia](y P(x,y)) = 1 und 3. A1[x/Klaus](y P(x,y)) = 1 1. gibt es d, so daß A1[x/Peter,y/d]P(x,y)) = 1 ? Ja: d = Claudia, denn (Peter, Claudia) in PA1. 2., 3. ebenso für d = Klaus bzw. d = Peter. Damit A1(F) = 1. F also erfüllbar. Struktur A2: Universum: natürliche Zahlen P(x,y) soll bedeuten: x größer als y. F also: Jede natürliche Zahl ist größer als eine andere. PA2 = {(n,m) | n > m} A2(F) = 0 gdw es gibt d, so daß A1[x/d](y P(x,y)) = 0 für d = 0 gilt: es gibt kein d' mit (d,d') in PA2. Also A1[x/d](y P(x,y)) = 0 und damit A2(F) = 0. F ist also nicht allgemeingültig. Bemerkung: Aussagenlogik ist ein Spezialfall der Prädikatenlogik: alle Prädikatensymbole null-stellig. Variablen und Terme erübrigen sich dann. Häufig verwendete Erweiterung: Prädikatenlogik mit Identität: = als 2-stelliges Prädikatensymbol zugelassen. Standardinterpretation in allen Strukturen A: =(t1,t2) bzw. (t1 = t2) ist wahr gdw t1A = t2A. Beispiel: Gesucht eine erfüllbare Formel F der Prädikatenlogik mit Identität, so dass für jedes Modell von F gilt: die Kardinalität des Individuenbereichs ist nicht größer als 2. x y z ((x = y) v (x = z) v (y = z)) gesucht: Formel, die besagt 1) daß P antisymmetrische Relation ist. x y (P(x,y) -> ¬P(y,x)) oder x y ¬(P(x,y) P(y,x)) 12 2) daß f injektive Funktion ist. x y (f(x) = f(y) -> x = y) 3) daß f surjektive Funktion ist. x y (f(y) = x) Satz: Die Prädikatenlogik ist nicht entscheidbar Es gibt also keinen Algorithmus, der bei Eingabe einer Prämissenmenge P und einer Formel F "ja" liefert, falls P |= F, und "nein" sonst. Es gibt aber vollständige Beweisverfahren (siehe 3.2), diese terminieren aber möglicherweise nicht. Resolution Auch für die Prädikatenlogik lassen sich Widerspruchsbeweise mit Resolution führen (Resolution ist widerlegungsvollständig für die Prädikatenlogik). Allerdings gibt es verschiedene Komplikationen: 1) die Umformung in KNF wird komplizierter, da Quantoren berücksichtigt werden müssen 2) Literale mit Variablen müssen manchmal instantiiert werden, damit sie gleich werden (Unifikation) Für die Umformung in KNF werden folgende Äquivalenzen ausgenutzt: Satz: Seien F und G Formeln. Es gilt: 1. ¬x F x ¬F ¬x F x ¬F 2. (x F x G) x (F G) (x F v x G) x (F v G) 3. Falls x in G nicht frei vorkommt: (x F G) x (F G) (x F v G) x (F v G) (x F G) x (F G) (x F v G) x (F v G) Mit diesen Äquivalenzen lassen sich alle Quantoren vor die Formel bringen (evtl. sind Variablenumbenennungen nötig). Formeln dieser Art sind in Pränexform (PNF). Satz: Für jede Formel F gibt es eine äquivalente Formel in Pränexform. Bew.: Induktion über Formelaufbau. Induktionsanfang: F atomar => F in PNF Induktionsschritt: 1. F = ¬F1. G1= Q1y1Q2y2...QnynG' PNF von F1 (existiert nach Induktionsvoraussetzung). Dann gilt F = -Q1y1-Q2y2...-Qnyn¬G', wobei - den All- in Existenzquantor verwandelt und umgekehrt. 2. F = (F1 op F2) mit op in {v, ). Seien G1 = Q11y11Q12y12...Q1ny1nG1' und G2 = Q21y21Q22y22...Q2my2mG2' zu F1 bzw. F2 äquivalente Formeln in PNF. Weiter gelte, daß 13 die gebundenen Variablen in G1 und G2 disjunkt sind (kann durch Umbenennen erreicht werden). Dann ist F äquivalent zu Q11y11Q12y12...Q1ny1n Q21y21Q22y22...Q2my2m(G1' op G2'). 3. F = QxF1, Q in {, }. Q1y1Q2y2...QnynF1' sei PNF von F1. Durch Umbenennen kann x verschieden gemacht werden von allen yi. Dann ist F äquivalent zu QxQ1y1Q2y2...QnynF1' Bemerkung: in Beweis steckt Algorithmus zur Umformung. Beispiel: ¬xR(x) v (P(a) xQ(a,x)) x¬R(x) v x(P(a) Q(a,x)) x¬R(x) v y(P(a) Q(a,y)) xy(¬R(x) v (P(a) Q(a,y))) Was nun noch stört, sind die Quantoren, mit denen Formeln beginnen. Diese können durch Skolemisierung eliminiert werden. Skolemisieren entspricht der Einführung von neuen Namen für Objekte. Def.: Skolemform Sei F= Q1y1Q2y2...QnynF1 eine bereinigte Formel in PNF. Die Skolemform von F entsteht aus F durch 1) Ersetzen jeder existenzquantifizierten Variable x in F1 durch einen Funktionsterm f(y1,...yk). Dabei ist f ein neues, nicht in F vorkommendes Funktionssymbol. Die Stelligkeit von f ist die Anzahl der in F links vom Existenzquantor von x vorkommenden Allquantoren. Die Argumente sind die Variablen dieser Allquantoren, von links nach rechts. 2) Streichen aller Existenzquantoren. Beispiel: xyz(S(y,x) P(z,x)) x(S(suc(x),x) P(pre(x),x)) neue 1-stellige Funktionssymbole suc, pre Skolemform Satz: Sei F in bereinigter PNF. F ist erfüllbar gdw die Skolemform von F erfüllbar ist. Achtung: Skolemisierung ist keine Äquivalenzumformung!! Kann aber wegen Erfüllbareitsgleichheit für Widerspruchsbeweise verwendet werden. Zusammenfassung der Umformungsschritte: Gegeben: Formel F 1. Gegebenenfalls Bereinigen von F 2. Binden freier Variablen durch Voranstellen von Existenzquantoren (erfüllbarkeitsgleich) 3. Herstellen der bereinigten PNF (dabei evtl. Variablenumbenennungen) 4. Herstellen der Skolemform 5. Umformen der Matrix in KNF, Weglassen der Allquantoren 14 Unifikation Gegeben seien die Klauseln (1) ¬Informatiker(x) v Schlau(x) (2) Informatiker(Peter) Die Literale ¬Informatiker(x) und Informatiker(Peter) sind nicht resolvierbar, aber aus Formel (1) läßt sich eine Instanz erzeugen, so daß Resolution möglich ist. Wenn wir die aus (1) folgerbare Formel (1') ¬Informatiker(Peter) v Schlau(Peter) verwenden, dann könnnen wir resolvieren und erhalten Schlau(Peter). Wir mußten also die zu resolvierenden Literale "gleich machen" (unifizieren), um Resolution anwenden zu können. Def.: (Substitution, Unifikator) Eine Substitution sub = [x1/t1, ..., xk/tk] ist eine Abbildung von Variablen xi auf Terme ti. Sei A ein Ausdruck (Term oder Formel). A sub bezeichnet den Ausdruck, der entsteht, indem jedes Vorkommen von xi in A durch ti ersetzt wird. sub heißt Unifikator einer Menge von Literalen L = {L1,..., Ln}, falls L1 sub = ... = Ln sub. sub heißt allgemeinster Unifikator (most general unifier, mgu) von L falls für jeden Unifikator sub' von L gilt: sub' = sub sub'' für eine geeignete Substitution sub''. Unifikationssatz: (Robinson) Jede unifizierbare Menge von Literalen besitzt einen allgemeinsten Unifikator. Unifikationsalgorithmus (behandelt Unifikation auch von mehr als 2 Literalen): Eingabe: nicht-leere Literalmenge L sub := [] while |L sub| > 1 do begin durchsuche Literale in L sub von links nach rechts bis zur ersten Position, an der sich zwei Literale unterscheiden; if keines der sich unterscheidenden Zeichen ist Variable then stoppe mit "fail" else begin Sei x die Variable und t der Term, der im anderen Literal beginnt; if x kommt in t vor then stoppe mit "fail" (occur check) else sub := sub [x/t] (Hintereinanderausführung der Substitutionen) end; end; gib mgu sub aus; Beispiel: P(a, f(x,b)), P(y, f(g(y),z)) sub = [y/a] P(a, f(x,b)), P(a, f(g(a), z)) sub = [y/a] [x/g(a)] 15 P(a, f(g(a),b)), P(a, f(g(a),z)) sub = [y/a] [x/g(a)] [z/b] P(a, f(g(a),b)), P(a, f(g(a),b)) in diesem Fall: [y/a] [x/g(a)] [z/b] = [y/a, x/g(a), z/b] (parallele Substitution) im allgemeinen Fall müssen spätere Substitutionen beim "Parallelisieren" auf vorherige angewendet werden: [y/f(x,b)] [x/g(a)] = [y/f(g(a),b), x/g(a)] ≠ [y/f(x,b), x/g(a)] Das Resolutionsverfahren für die Prädikatenlogik erzeugt, wie das für Aussagenlogik, Widerspruchsbeweise, d.h. die zu überprüfende Formel wird negiert und zusammen mit den Prämissen in Klausenform überführt. Beim Resolvieren ergeben sich 2 Unterschiede: 1. Resolution kann angewendet werden, wenn die entsprechenden komplementären Literale abgesehen vom Negationszeichen unifizierbar sind. Es wird jeweils der mgu verwendet. 2. Falls die Anzahl der Literale in der entstehenden Resolvente durch Substitution verringert werden kann, so kann diese Substitution durchgeführt werden (Faktorisierung) Bsp. zu 2: aus der Resolvente P(x,a) v P(b,y) kann man P(x,a) v P(b,y) [x/b, y/a] = P(b,a) erzeugen. Satz: Das Resolutionsverfahren für die Prädikatenlogik ist widerlegungsvollständig, d.h.: [] kann aus der Klauselform von P{¬F} mit Resolution abgeleitet werden gdw P |= F. Resolutionsbeispiel Normale Vögel fliegen. Pinguine fliegen nicht. Strausse fliegen nicht. Pinguine und Strausse sind Vögel Tweety ist ein Pinguin oder ein Strauss. Tweety ist nicht normal. x Vogel(x) & Normal(x) -> Fliegt(x) ¬Vogel(x) v ¬Normal(x) v Fliegt(x) (1) x Strauss(x) -> ¬Fliegt(x) x Pinguin(x) -> ¬Fliegt(x) x Pinguin(x) -> Vogel(x) x Strauss(x) -> Vogel(x) Strauss(Tweety) v Pinguin(Tweety) neg. Ziel: Normal(Tweety) ¬Strauss(x) v ¬Fliegt(x) ¬Pinguin(x) v ¬Fliegt(x) ¬Pinguin(x) v Vogel(x) ¬Strauss(x) v Vogel(x) Strauss(Tweety) v Pinguin(Tweety) Normal(Tweety) (2) (3) (4) (5) (6) (7) 6,4 8,5 6,2 Strauss(Tweety) v Vogel(Tweety) Vogel(Tweety) Pinguin(Tweety) v ¬Fliegt(Tweety) (8) (9) (10) 16 10,3 9,1 11,12 13,7 ¬Fliegt(Tweety) ¬Normal(Tweety) v Fliegt(Tweety) ¬Normal(Tweety) [] Wir haben also bewiesen, dass Tweety nicht normal ist. 17 (11) (12) (13) 6. Answer Set Programming (Antwortmengenprogrammierung) Neues Programmierparadigma: Wurzeln in Logikprogrammierung und Wissensrepräsentation 1. Ein definites Logikprogramm ist eine endliche Menge von Regeln der Form A B1,...,Bn wobei A und Bi Atome (hier zunächst aussagenlogisch, freie Variablen später) A heißt Kopf (head), B1,...,Bn Körper (body) der Regel. Falls n = 0 lässt man weg und nennt die Regel auch Fakt. logisch gesehen: Regeln sind definite Klauseln (Hornklauseln mit genau 1 positiven Literal) Anfragen: ?-A "ist A ableitbar?" negierte Anfragen logisch gesehen negative Klauseln Prozedurale Interpretation durch SLD-Resolution: grundsätzlich 1 rein negative Klausel (Zielklausel) mit einer nicht-negativen (= definiten) Klausel resolviert. Es entstehen dabei nur negative Klauseln. A ableitbar, wenn aus P zusammen mit ¬A die leere Klausel abgeleitet werden kann. entspricht klassischer Folgerbarkeit, Regeln aufgefasst als Implikationen. Beispiel: A B, C BC C A v ¬B v ¬C B v ¬C C ?- A ?- B,C ?- C [] ¬A ¬B v ¬C ¬C [] Modelltheoretische Semantik: Modelle repräsentiert durch Menge der wahren Atome (die Komplementmenge sind die Atome, die zu F ausgewertet werden). Ein Modell einer Menge von Regeln ist eine Menge von Atomen, die unter den Regeln abgeschlossen ist: wenn Körper einer Regel R in M, dann auch Kopf von R in M. (entspricht genau klassischen Modellen der den Regeln entsprechenden Implikationen) man betrachtet nur das Modell, in dem am wenigsten Atome wahr sind. M1 ≤ M2 gdw M1 M2. Kleinstes Modell Mmin existiert. A folgerbar aus P gdw. A wahr in Mmin. kleinstes Modell = kleinste Menge M von Atomen, die unter den Regeln abgeschlossen ist Kann schrittweise berechnet werden: 18 New := {}; Repeat M := New; New:= {A | A B1,...,Bn in P, B1,...,Bn in M} Until M = New; output M Prozedurale Interpretation durch SLD-Resolution und Semantik stimmen überein! 2. Ein normales Logikprogramm ist eine endliche Menge von Regeln der Form A B1,...,Bn, not C1, ..., not Cm wobei A, Bi, Cj Atome sind. Zu beachten: not ist nicht! klassische Negation: not C heißt: C ist nicht beweisbar oder ¬C ist konsistent!! Prozedurale Interpretation: Überprüfen eines negativen Zielliterals not Ci (not statt ¬ zeigt an, dass Negation nichtklassisch ist) durch Starten eines SLD-Beweises für Ci. Schlägt der Beweis in endlicher Zeit fehl, dann ist not Ci ableitbar, sonst nicht (negation as finite failure). SLDNF (SLD+Negation as Failure)-Verfahren terminiert nicht immer Beispiel: a not b b not a Endlosschleife: Überprüfen von b liefert Teilziel not a, Beweis für a wird gestartet, liefert Teilziel not b, Beweis für b wird gestartet, ... Bedeutung des Programms? Modelltheoretische Semantik: Problem: kein kleinstes Modell: (Modell wieder: unter Regeln abgeschlossene Menge M von Atomen, wobei eine Regel jetzt anwendbar ist, wenn ihre nichtnegierten Vorbedingungen in M, die negierten nicht in M) a not b, c b not a, c c not d 3 minimale Modelle: M1 = {a,c}, M2 = {b,c}, M3 = {d} Nicht jedes minimale Modell intendiert: M3 unerwünscht, da d nicht hergeleitet werden kann (jedes wahre Atom sollte aus einer Regel ableitbar sein, deren Vorbedingung auch wahr ist). Also: nur bestimmte minimale Modelle M erwünscht. Welche? Solche, in denen jedes wahre Atom A eine bzgl. M gültige Herleitung hat: A M impliziert A aus Regeln herleitbar, deren not-Literale nicht wahr sind in M. 19 Stabile Modelle: intuitive Idee: wir raten M und prüfen, ob aus den Regeln, deren not-Literale „zu M passen“ die Atome in M hergeleitet werden können. Def.: Sei M eine Menge von Atomen, P ein Programm. Das bzgl. M reduzierte Programm PM ergibt sich aus P durch 1. Streichen aller Regeln mit (not Ci) im Körper und Ci M. 2. Streichen aller not-Literale aus allen anderen Regeln. Das reduzierte Programm ist definit, hat also ein kleinstes Modell. M heißt stabil gdw. M kleinstes Modell von PM ist. obiges Beispiel: PM1: ac c kleinstes Modell: {a,c} = M1 PM2: bc c kleinstes Modell: {b,c} = M2 PM3: ac bc kleinstes Modell: {} ≠ M3 Also 2 stabile Modelle, M1 und M2. Ein Atom ist folgerbar, wenn es in allen stabilen Modellen enthalten ist. 3. Ein erweitertes Logikprogramm ist eine endliche Menge von Regeln der Form A B1,...,Bn, not C1, ..., not Cm wobei A, Bi und Cj Literale sind. ¬: starke, klassische Negation: ¬A wahr, wenn ¬A ableitbar not: schwache, default Negation, not A wahr, wenn A nicht ableitbar ist Einfache Erweiterung der stabilen Modelle zu answer sets (Antwortmengen): Def.: Sei S eine Menge von Literalen, P ein Programm. Das um S reduzierte Programm PS ergibt sich aus P durch 1. Streichen aller Regeln mit (not Ci) im Körper und Ci S. 2. Streichen aller not-Literale aus allen anderen Regeln. Sei R eine Menge von Regeln ohne not. Cn(R) ist die kleinste Menge von Literalen, die 1) abgeschlossen unter den Regeln und 2) logisch abgeschlossen ist (falls A und ¬A vorkommen => Menge aller Literale). S ist Antwortmenge (answer set) gdw. S = Cn(PS) 20 P{¬a}: P: a not ¬a ¬a not a p not p, a P{a}: a ¬a pa P{a,p}: a pa PROGRAMMTYP SEMANTIK ERLÄUTERUNG definit kleinstes Modell normal stabile Modelle erweitert answer sets kleinste Menge M von Atomen abgeschlossen unter P Menge M von Atomen M = kleinstes Modell von PM Menge S von Literalen S = Cn(PS) Programme mit Variablen: interpretiert als kompakte Darstellung der Menge aller Grundinstanzen (entstehen durch Ersetzen aller Variablen durch variablenfreie Terme) ¬dumm(X) informatiker(X) statt ¬dumm(hans) informatiker(hans) ¬dumm(peter) informatiker(peter) ¬dumm(moni) informatiker(moni) ... Es existieren höchst effiziente Implementierungen, z.B smodels (TU Helsinki) 4. Anwendungen: Grundidee der ASP: answer sets (bzw. stabile Modelle) beschreiben Lösungen (nicht Beweise einzelner goals) häufig verwendete Methode: generate & test: generiere mögliche Lösungen, eliminiere unerwünschte Beobachtung: fügt man Q not Q zu Programm, in dem Q sonst nicht vorkommt, so gibt es keinen answer set! Verwendet man Q not Q, B1,...,Bn, not C1, ..., not Cm so werden alle answer sets eliminiert, die B1,...,Bn,enthalten und alle Ci nicht enthalten. Dafür schreiben wir auch B1,...,Bn, not C1, ..., not Cm Beispiel 1: Färbeproblem gegeben: Graph G = (V,E), V = {v1, ..., vn}, E {{x,y} | x, y V, x y} 3 Farben r,g,b gesucht: Färbung der Knoten, so dass Knoten an einer Kante nie dieselbe Farbe haben 21 Beschreibung Graph: knoten(v1), ..., knoten(vn), kante(vi,vj), ... generate: farbe(X, r) knoten(X), not farbe(X,b), not farbe(X,g) farbe(X, b) knoten(X), not farbe(X,r), not farbe(X,g) farbe(X, g) knoten(X), not farbe(X,r), not farbe(X,b) test: kante(X,Y), farbe(X,Z), farbe(Y, Z) Jedes stabile Modell beinhaltet Lösung des Färbeproblems. Beobachtung: Verwendung von not statt ¬ ist essentiell! Beispiel 2: Erfüllbarkeit aussagenlogischer Formeln in Klauselform generate: für jedes Atom A: A not ¬A ¬A not A test: für jede Klausel A1 v … v An v ¬B1 v ... v ¬Bm not A1, …, not An, B1,..., Bm Answer sets von P entsprechen genau den Modellen der Klauselmenge. Bsp.: test-Klauseln in P: generate-Klauseln in P: p v ¬q ¬p v ¬q pvq not p, q p, q not p, not q p ¬p q ¬q not ¬p not p not ¬q not q einziger answer set: S={p, ¬q}, PS = p, q p ¬q Beispiel 3. Planen in der Blockswelt gegeben Tisch, Blöcke (repräsentiert als Integers), Zeitpunkte (Integers) Roboter kann Blöcke bewegen: move(B,L,I) bewegt Block B zum Zeitpunkt I auf Lokation L time(0) time(1) 22 ... time(k) % k ist maximale Planlänge location(B) block(B) location(table) Effekt von move: move(B,L,T) on(B,L,T+1) Inertia: on(B,L,T), not ¬on(B,L,T+1), T < k on(B,L,T+1) Eindeutige Lokation: on(B,L,T), location(L1), L L1 ¬on(B,L1,T) generate: move(B,L,T) ¬move(B1,L1,T) not ¬move(B,L,T), block(B), location(L), time(T), T < k move(B,L,T), block(B1), B B1, location(L1) test: nur 1 Block kann auf einem anderen stehen: on(B1,B,T), on(B2,B,T), B1 B2, block(B) nur freie Blöcke können bewegt werden: move(B,L,T), on(B1,B,T) Anfangszustand: Zielzustand: 1 2 3 2 1 3 4 block(1) block(2) block(3) block(4) block(5) block(6) 5 6 on(1,2,0) on(2,table,0) on(3,4,0) on(4,table,0) on(5,6,0) on(6,table,0) 23 6 5 4 not on(3,2,k) not on(2,1,k) not on(1,table,k) not on(6,5,k) not on(5,4,k) not on(4,table,k) Teil eines answer set für k=5 move(1,table,0), move(2,1,1), move(3,2,2), move(5,4,3), move(6,5,4) Anmerkung: klassische Logik ist monoton: T |= F impliziert T T’ |= F normale Logikprogramme sind nichtmonoton. Aus q not p ist q ableitbar, aus q not p p ist q nicht mehr ableitbar. 24 9. Anwendungen nichtmonotoner Logiken 9.1. Modellbasierte Diagnose Diagnose: Identifikation eines vorliegenden Fehlers (Krankheit) auf der Basis von Beobachtungen (Symptomen) und Hintergrundwissen über das System 2 Arten von Diagnosesystemen abduktiv vs. konsistenzbasiert Typ I: abduktive Diagnose Gegeben: Information über 1) Wirkung von Fehlern H (Implikationen) 2) beobachtete Symptome S (Atome) 3) nicht aufgetretene Symptome N (negierte Literale) Gesucht: Erklärung für S, d.h. minimale Menge von Fehlern F, so dass F H N konsistent und F H |= S. Deduktion: Ableiten von implizitem Wissen Alle A sind B c ist ein A c ist ein B Abduktion: Finden von Erklärungen für Beobachtungen Alle A sind B c ist ein B c ist ein A Induktion: Ableiten allgemeiner Regel aus bisherigen Beobachtungen c ist ein A (c1 ist ein A, ..., cn ist ein A) c ist ein B (c1 ist ein B, ..., cn ist ein B) Alle A sind B Beispiel: H: Masern -> Fieber & Ausschlag Migräne -> Kopfschmerzen & Übelkeit Grippe -> Kopfschmerzen & Gliederschmerzen & Fieber N: O: leer Fieber Fieber, Ausschlag Kopfschmerzen Kopfschmerzen, Fieber N: O: Übelkeit Kopfschmerzen => 1 Erklärung: Grippe Kopfschmerzen, Ausschlag => 1 Erklärung: Grippe & Masern => 2 Erklärungen: Masern, Grippe => 1 Erklärung: Masern => 2 Erklärungen: Migräne, Grippe => 1 Erklärung: Grippe 25 Typ II: konsistenzbasierte Diagnose: Gegeben: Menge K von Komponenten sowie Information über 1) Wirrkung der Komponenten im fehlerfreien Fall (Modell M) 2) Beobachtungen O Gesucht: minimale Menge K’ von Komponenten, so dass die Annahme der Korrektheit aller Komponenten in K\K’ konsistent mit M O ist kann durch Default Theorie beschrieben werden: K’ ist Diagnose gdw. es eine Extension E der Default Theorie (D, W) mit W = M O und D = {true: OK(x) / OK(x) | x in K} gibt, die OK(k) für alle k in K’ enthält. Beispiel: Halbaddierer x y C1 C2 C3 C4 Ü z Typen der Komponenten: AND(C1), OR(C2), NOT(C3), AND(C4) Topologie: x = input1(C1) = input1(C2) y = input2(C1) = input2(C2) Ü = output(C1) = input(C3) output(C3) = input1(C4) output(C2) = input2(C4) z = output(C4) Normalverhalten: AND(x) OK(x) OR(x) OK(x) NOT(x) OK(x) -> [output(x) = 1 <-> (input1(x) = 1 input2(x) = 1)] -> [output(x) = 1 <-> (input1(x) = 1 input2(x) = 1)] -> [output(x) = 1 <-> input(x) = 1] Korrektheitsdefaults: true: OK(x)/OK(x) für x aus C1, ..., C4 Beobachtungen: x = 1, y = 1, z = 1 26 Wir kriegen 4 Extensionen (jeweils eine Komponente kaputt) OK(C1), OK(C2), OK(C3) OK(C1), OK(C2), OK(C4) OK(C1), OK(C3), OK(C4) OK(C2), OK(C3), OK(C4) => OK(C4) => OK(C3) => OK(C2) => OK(C1) Bemerkung: theoretisch ist es möglich, dass alle 4 Komponenten kaputt sind, aber unwahrscheinlich: hier werden nur minimale Diagnosen erzeugt (bzgl. Teilmengenrel.) weitere Beobachtung: output(C3) = 1 entweder C1 oder C3 kaputt OK(C1), OK(C2), OK(C4) => OK(C3) OK(C2), OK(C3), OK(C4) => OK(C1) alternative Beobachtung: output(C3) = 0 C4 kaputt OK(C1), OK(C2), OK(C3) => OK(C4) Bemerkung: neue Beobachtungen verringern immer die Zahl der möglichen Diagnosen (neue Diagnosen Obermengen der alten) Oft Zusatzwissen über Zuverlässigkeit bestimmter Bauteile. Lässt sich durch iterative Bildung von Extensionen abbilden: (D1, ..., Dn-1, W) D1 enthält OK-Defaults für zuverlässigste Komponenten, D2 für nächst zuverlässige usw. rekursive Definition der Extensionen: E Extension von (D1, ..., Dn, W) gdw n = 1 und E Extension von (D1,W) oder n > 1 und es gibt Extension E’ von (D1, ..., Dn-1, W) so dass E Extension von (Dn, E’) Annahme: NOT-Komponenten weniger fehleranfällig als andere Default-Theorie (D1, D2, W) mit D1 = {:OK(C3)/OK(C3)} D2 = {:OK(C1)/OK(C1), :OK(C2)/OK(C2), :OK(C4)/OK(C4)} W=MO Es entstehen nur noch Extensionen mit OK(C3). Notwendigkeit der Modellierung von Fehlerverhalten: Folie 27 9.2. Modellierung von Handlungen Situationskalkül. McCarthy, Hayes, 1963, 1969 Situationen: Fluents: Aktionen: Schnappschüsse von Weltzuständen, entsprechen Folgen von Aktionen zeitabhängige Eigenschaften führen von Situation zu Nachfolgesituation Holds(f,s) Result(a,s) Atomare Formel: Fluent f ist wahr in Situation s Term: Situation nach Ausführen von Aktion a in s Blockwelt: 1) Holds(On(C,Table),S0) 2) Holds(On(B,C),S0) 3) Holds(On(A,B),S0) 4) Holds(On(D,Table),S0) 5) Holds(Clear(A),S0) 6) Holds(Clear(D),S0) 7) Holds(Clear(Table),S0) Move(x,y): bewege x auf y 8) Holds(Clear(x),s) & Holds(Clear(y),s) & x≠y & x≠Table -> Holds(On(x,y),Result(Move(x,y),s)) 9) Holds(Clear(x),s) & Holds(Clear(y),s) & Holds(On(x,z),s) & x≠y & y≠z -> Holds(Clear(z),Result(Move(x,y),s)) |= Holds(On(A,D),Result(Move(A,D),S0)) |= Holds(Clear(B),Result(Move(A,D),S0)) unique names assumption!! aber nicht: |= Holds(On(B,C),Result(Move(A,D),S0)) Persistenz von Eigenschaften Hinzufügen von Frame-Axiomen: Holds(On(v,w),s) & x≠v -> Holds(On(v,w),Result(Move(x,y),s)) Holds(Clear(x),s) & x≠z -> Holds(Clear(x), Result(Move(y,z),s)) 2 neue Axiome. Na und? Colour(x,c) Paint(x,c) x hat Farbe c male x mit Farbe c an 28 Holds(Colour(x,c), Result(Paint(x,c),s) keine Vorbedingungen Annahme: alle Blöcke und Tisch zunächst rot: Holds(Coulour(x,Red),S0) Neue Frame Axiome nötig: Move hat keinen Effekt auf Farbe, Paint färbt nur 1 Objekt Holds(Colour(x,c),s) -> Holds(Colour(x,c),Result(Move(y,z),s)) Holds(Colour(x,c1),s) & x≠y -> Holds(Colour(x,c1),Result(Paint(y,c2),s)) Neue Frame Axiome auch für andere Fluents: Holds(On(v,w),s) -> Holds(On(v,w),Result(Paint(z,c),s)) Holds(Clear(x),s) -> Holds(Clear(x), Result(Paint(y,c),s)) n Fluents und m Aktionen: O(n·m) Frame Axiome Frame Problem: wie kann man Effekte von Aktionen repräsentieren, ohne sämtliche Frame Axiome explizit hinschreiben zu müssen? Lösungsidee: verwende statt der Frame Axiome eine Default-Regel, die besagt, dass Eigenschaften sich normalerweise nicht ändern: Holds(f,s) : Holds(f, Result(a,s)) Holds(f, Result(a,s)) Klappt in vielen Beispielen, z.B. haben wir jetzt: Holds(On(B,C),Result(Move(A,D),S0)) in der Extension von (D,W) mit D enthält obige Default-Regel W = {1), ..., 9)} aber es gibt auch Beispiele, in denen es nicht klappt: Yale Shooting Problem: 1) 2) 3) S1 = Result(LOAD,S0) S2 = Result(WAIT,S1) S3 = Result(SHOOT,S2) 4) Holds(ALIVE,S0) 5) 6) s Holds(LOADED, Result(LOAD,s)) s Holds(LOADED,s) => ¬Holds(ALIVE, Result(SHOOT, s)) s ¬Holds(LOADED, Result(SHOOT, s)) 8) [¬]Holds(f, s): [¬]Holds(f, Result(e, s)) / [¬]Holds(f, Result(e, s)) Intendierte Extension: 29 S0 S1 S2 S3 ALIVE ALIVE LOADED ALIVE LOADED ¬ALIVE ¬LOADED Persistenzdefault entsprechend dem Zeitverlauf anwenden Nicht intendierte Extension: S0 S1 S2 S3 ALIVE ALIVE LOADED ALIVE ¬LOADED ALIVE ¬LOADED Persistenzdefault für ALIVE bis S3 anwenden, dann aus ALIVE mit 8) und 6) UNLOADED in S2 ableiten Gewehr entlädt sich auf mysteriöse Weise!! So einfach geht es also nicht. Komplexere Modellierungen nötig, insbesondere mit expliziter Behandlung von Kausalität. Immer noch aktives Gebiet der KI. Falls noch Zeit: Reiter: successor state axioms: Idee: für jedes Fluent f angeben, wann genau es in einem Zustand Result(a,s) gilt: 2 Bestandteile: a) wenn f in s gilt und a keine Aktion ist, die f beendet b) wenn a Aktion ist, die f wahr macht Holds(LOADED,Result(a,s)) <-> a = LOAD v Holds(LOADED,s) & a ≠ SHOOT Holds(ALIVE,Result(a,s)) <-> Holds(ALIVE,s) & [a ≠ SHOOT v ¬Holds(LOADED,s)] beide Formeln ersetzen 5-8 Bemerkung: da Reiter nicht über Fluents quantifizieren muss (wie im Persistenzdefault), braucht er das Holds-Prädikat nicht: z.B. LOADED(s) statt Holds(LOADED,s). Gilt ALIVE(S3)? ALIVE(Result(SHOOT,S2)) <-> ALIVE(S2) & [SHOOT ≠ SHOOT v ¬LOADED(S2)] <-> ~ & ¬LOADED(Result(WAIT,S1)) <-> ~ & [¬LOADED(S1) v WAIT = SHOOT] & WAIT ≠ LOAD <-> ~ & ¬LOADED(Result(LOAD,S0)) <-> ~ & [¬LOADED(S0) v LOAD = SHOOT] & LOAD ≠ LOAD <-> ~ & ¬LOADED(S0) & false <-> false Durch Äquivalenzumformung Anfrage schrittweise zurückgeführt auf Anfrage, die sich nur noch auf S0 bezieht (Regression). 30 11. Graphplan Fast Planning Through Planning Graph Synthesis, AIJ 90, 1997 Avrim Blum, Merrick Furst verwendet für nichtlineares Planen Plangraphen -> erzeugt in polynomialer Zeit, erhebliche Einschränkung des Suchraums Plan weist jeder Aktion Zeitpunkt zu, mehrere Aktionen können denselben Zeitpunkt haben (parallele Pläne): Ausführung kann in beliebiger Reihenfolge geschehen. verwendet STRIPS-Repräsentation für Aktionen und Zustände. Beispiel Raketendomäne, S. 3. Ein STRIPS-Operator besteht aus: 1. einem Operatornamen, 2. einer Liste typisierter Parameter, 3. den Vorbedingungen, d.h. einer Konjunktion von Atomen 4. den positiven und negativen Effekten, d.h. einer Liste von Atomen, die wahr werden, sowie einer Liste von Atomen, die falsch werden. Aktionen sind Grundinstanzen von Operatoren spezielle Aktionen pro Atom a: no-op(a) (sorgt dafür, daß Atom a weitergilt). Ein Zustand ist eine Menge von Grundatomen. Ein Planungsproblem besteht aus 1. einer Menge von STRIPS-Operatoren 2. eine Menge von typisierten Objekten 3. ein Anfangszustand 4. eine Menge von Zielbedingungen (Atomen) gesucht: gültiger Plan P, d.h. Menge von Aktionen mit Ausführungszeit (1,2,3 etc.), so daß 1) P führt A zur Zeit 1 nur aus, falls alle Vorbedingungen von A Anfangsbedingungen sind; 2) P führt A zur Zeit i+1 nur aus, falls alle Vorbedingungen von A in der Add-Liste von Aktionen sind, die zum Zeitpunkt i ausgeführt wurden, 3) keine Interferenz zwischen Aktionen (mehr dazu später) 4) P macht alle Zielbedingungen wahr. Plangraph enthält alle Aktionen und Atome, die möglicherweise ausgeführt bzw. wahr werden können. Berücksichtigt nicht Interaktionen. Ein Plangraph ist ein gerichteter Level-Graph (Kanten aus einem Level führen jeweils nur zum nächsten Level) mit 2 Arten von Knoten (Aktionen und Propositionen) 3 Arten von Kanten (add, delete, precondition) so dass gilt: 31 1) Es folgt jeweils Aktions-Level Akti auf Propositions-Level Propi und Propositions-Level Propi+1 auf Aktions-Level Akti. 2) Eine Aktion in Akti besitzt eine (eingehende) Kante von ihren Vorbedingungen in Propi, sowie eine Kante zu den Elementen ihrer add und delete-Listen in Propi+1. 3) A kommt in Akti vor, wenn all ihre Vorbedingungen in Propi vorkommen und sich dort nicht ausschließen, und dann kommen auch alle Nachbedingungen von A in Propi+1 vor. Prop1, Akt1, Prop2, Akt2, ... Beispiel S.5 Bemerkungen: Wegen no-ops bleiben einmal hergestellte Atome erhalten in allen folgenden Levels. Die Berechnung des Plangraphen ist polynomial. Wenn gültiger Plan P mit t Schritten existiert, so ist P Untergraph des bis Propt+1 expandierten Plangraphen. Also: expandiere Plangraphen, versuche gültigen Plan zu finden. Falls gefunden -> fertig, falls nicht gefunden, expandiere weiter etc. Ausschlußbedingungen zwischen Knoten im Plangraphen. Intuitiv: Aktionen schließen sich aus, wenn es keinen gültigen Plan gibt, der sie enthält. Propositionen schließen sich aus, wenn es keinen gültigen Plan gibt, der sie erzeugt. einfache Regeln, um Ausschlußbedingungen zu propagieren. Aktionen: Interferenz: A1 und A2 schließen sich aus, wenn A1 (bzw. A2) eine Vorbedingung oder einen Add-Effekt von A2 (bzw. A1) löscht. Inkompatible Vorbedingungen: A1 und A2 schließen sich aus in Akti, wenn A1 eine Vorbedingung a benötigt, A2 eine Vorbedingung b, und a und b schließen sich aus in Propi. Propos.: p und q schließen sich aus in Propi, wenn jede Aktion in Akti-1 mit add-Kante zu p jede Aktion in Akti-1 mit add-Kante q ausschließt. Graphplan-Algorithmus (korrekt und vollständig): i := 1; Prop1 := Anfangszustand; while kein Plan gefunden [und letzter Level nicht identisch mit vorletztem] do begin erweitere Plangraph um Akti und Propi+1 ; prüfte, ob es gültigen Plan der Länge i gibt; i := i + 1 end; if Plan gefunden then gib Plan aus else ‚kein Plan existiert’ 1. Erweiterung um Action-Level Akti: a) b) Füge Aktion A in Akti ein, wenn alle Vorbedingungen von A in Propi enthalten und nicht als sich ausschließend markiert sind. Füge alle no-op Aktionen und precondition links ein. 32 c) generiere für jede Aktion A in Akti Liste aller Aktionen, die A ausschließt. 2. Erweiterung um Propositions-Level Propi+1: a) b) Füge alle Atome aus Nachbedingungen der Aktionen in Akti ein, zusammen mit entsprechenden Add- und Delete-Links. Markiere p, q in Propi+1 als sich ausschließend, wenn alle Aktionen, die p generieren, und alle, die q generieren, sich ausschließen. 3. Plansuche Gegeben Menge G von Zielen in t, suche sich nicht ausschließende Menge von Aktionen in t1, die alle Ziele in G wahrmachen. Deren Vorbedingungen sind Ziele in t-1, usw. Graphplan merkt sich nicht erfüllbare Zielmengen in Hashtabelle. erhebliche Performanzsteigerung gegenüber den besten partial order Plannern. Faktoren: wechselseitiger Ausschluß, Betrachtung "paralleler" Pläne, Merken unerreichbarer Zielmengen, keine Instanziierung während Suche. Weiterer Vorteil: Terminierung bei unlösbaren Problemen: es muß einen Propositions-Level geben, so daß alle weiteren identisch sind, d.h. dieselben Propositionen und Ausschluß-Beziehungen haben wie der vorherige Prop-Level. Wenn Plan nicht bis dahin gefunden, so gibt es keinen. Beispiel: shoot(x: animal): pre: loaded add: dead(x), unloaded del: alive(x), loaded load: pre: unloaded add: loaded del: unloaded init: alive(r), alive(t), unloaded goal: dead(r), dead(t) 33 a(r) • a(r) • a(r) • a(r) • a(r) d(r) • d(r) • d(r) sh(r) ld load • sh(r) ld load • sh(r) ld load • ld load unl • unl • unl • unl • unl a(t) • a(t) • a(t) • a(t) • a(t) d(t) • d(t) • d(t) sh(t) Pr1 Ak1 Pr2 Ak2 sh(t) Pr3 Ak3 sh(t) Pr4 Ak4 Pr5 Goals zum ersten Mal erfüllt in Pr3. Aber: d(r) und d(t) auf Level 3 schließen sich aus, denn sh(r) und sh(t) interferieren: eine löscht Vorbedingung der anderen. Keine Möglichkeit, goals zu erreichen: weiter expandiert. Goals erfüllt in Pr4. Aber: d(r) und d(t) auf Level 4 schließen sich aus, denn alle folgenden Paare interferieren: sh(r), sh(t) (interferieren immer) no-op(d(r)), sh(t) (Vorbedingungen schließen sich aus auf Pr3) no-op(d(t)), sh(r) (Vorbedingungen schließen sich aus auf Pr3) no-op(d(t)), no-op(d(r)) (Vorbedingungen schließen sich aus auf Pr3) Keine Möglichkeit, goals zu erreichen: weiter expandiert. Goals erfüllt in Pr5. Jetzt sind goals zu erreichen, etwa durch folgende Aktionsfolge: t1 load t2 sh(t) t3 load no-op(d(t)) t4 sh(r) no-op(d(t)) 34