Beispiele

Beispiel: Dr. House Diagnose

F1:F_1: Max wird mit hohem Fieber und ausgeprägten Gliederschmerzen in das Spital eingeliefert. Dr. House diskutiert die Diagnose mit einer Kollegin.

Variablen erstellen:

FF Patient hat (hohes) Fieber

SS Patient hat Gliederschmerzen

GG Patient hat eine Grippe

EE Patient hat eine Erkältung

Gültige Formeln erstellen:

(Wir gehen davon aus, dass die Ärzte Implikation und nicht Äquivalenz meinen)

F1:=FSF2:=F(GE)F3:=¬S¬GF4:=(FS)GF5:=¬(GE) \begin{array}{l}F_{1}:=F \wedge S \\F_{2}:=F \supset(G \vee E) \\F_{3}:=\neg S \supset \neg G \\F_{4}:=(F \wedge S) \supset G \\F_{5}:=\neg(G \wedge E)\end{array} 

Wir suchen eine Interpretation / Wahrheitsbelegung bei der alle Formeln wahr sind:

  1. Mittels Wahrheitstafel
    FSGEF1F⊃(G∨E)¬S⊃¬G(F∧S)⊃G¬(G∧E)110010101110111101111011111111111110\begin{array}{cccc|ccccc}F & S & G & E & F_{1} & F \supset(G \vee E) & \neg S \supset \neg G & (F \wedge S) \supset G & \neg(G \wedge E) \\\hline 1 & 1 & 0 & 0 & 1 & 0 & 1 & 0 & 1 \\1 & 1 & 0 & 1 & 1 & 1 & 1 & 0 & 1 \\1 & 1 & 1 & 0 & 1 & 1 & 1 & 1 & 1 \\1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 0\end{array}F1111​S1111​G0011​E0101​F1​1111​F⊃(G∨E)0111​¬S⊃¬G1111​(F∧S)⊃G0011​¬(G∧E)1110​​
  1. (Algebraische) Umwandlung in DNF und Vereinfachung

    Liefert dann FSG¬EF \wedge S \wedge G \wedge \neg E

  1. (Algebraische) Umwandlung in KNF und SAT-Solver nützen
    F∧SundefinedF1∧(¬F∨G∨E)undefinedF2∧(S∨¬G)undefinedF3∧(¬F∨¬S∨G)undefinedF4∧(¬G∨¬E)undefinedF5\underbrace{F \wedge S}_{F_{1}} \wedge \underbrace{(\neg F \vee G \vee E)}_{F_{2}} \wedge \underbrace{(S \vee \neg G)}_{F_{3}} \wedge \underbrace{(\neg F \vee \neg S \vee G)}_{F_{4}} \wedge \underbrace{(\neg G \vee \neg E)}_{F_{5}}F1​F∧S​​∧F2​(¬F∨G∨E)​​∧F3​(S∨¬G)​​∧F4​(¬F∨¬S∨G)​​∧F5​(¬G∨¬E)​​

    Um zu überprüfen ob es andere Lösungen gibt, erstellen wir zusätzlich noch F6F_6

    F6=¬(FSG¬E)=¬F¬S¬GE F_{6}=\neg(F \wedge S \wedge G \wedge \neg E)=\neg F \vee \neg S \vee \neg G \vee E 

    SAT-Solver liefert dann das Ergebnis „unerfüllbar“ - es gibt keine weiteren Lösungen.

Unsere Formel ist erfüllt wenn I(G)=1,I(E)=0I(G) =1, \space I(E) = 0

Diagnose: Grippe

Beispiel: Gone Maggie gone

Problem: Homer will mit einem Boot, seiner Tochter Maggie, dem Hund Knecht Ruprecht zur anderen Fluss-Seite.

Das Boot kann nur gleichzeitig 2 Objekte tragen.

Nicht von Homer alleine gelassen werden dürfen:

  • Maggie und Gift
  • Maggie und Hund (Knecht Ruprecht)

Variablen erstellen:

Es gibt diese und die andere Fluss-Seite.

Wenn eines dieser Variablen true ist dann:

Mi Maggie Ki Knecht Ruprecht Gi Gift Hi Homer } \left.\begin{array}{ll}M_{i} & \ldots \text { Maggie } \\K_{i} & \ldots \text { Knecht Ruprecht } \\G_{i} & \ldots \text { Gift } \\H_{i} & \ldots \text { Homer }\end{array}\right\}  zum Zeitpunkt ii auf der anderen Fluss-Seite

Wenn alle hier sind (alle false):

AlleHier(i):=¬Mi¬Ki¬Gi¬Hi \text {AlleHier}(i):=\neg M_{i} \wedge \neg K_{i} \wedge \neg G_{i} \wedge \neg H_{i} 

Wenn alle dort sind (alle true):

AlleDort(i):=MiKiGiHi \text {AlleDort}(i):=M_{i} \wedge K_{i} \wedge G_{i} \wedge H_{i} 

Homer muss immer bei Maggie sein, wenn sie bei Hund oder Gift ist

Sicher(i):=((MiKi)(MiGi))(MiHi) \text {Sicher}(i):=\left(\left(M_{i} \equiv K_{i}\right) \vee\left(M_{i} \equiv G_{i}\right)\right) \supset\left(M_{i} \equiv H_{i}\right) 

Wenn eines dieser Variablen true ist, dann:

MHi Maggie KHi Knecht Ruprecht GHi Gift HHi Homer } \left.\begin{array}{ll}MH_{i} & \ldots \text { Maggie } \\KH_{i} & \ldots \text { Knecht Ruprecht } \\GH_{i} & \ldots \text { Gift } \\HH_{i} & \ldots \text { Homer }\end{array}\right\}  fährt Homer zwischen [i1;i][i-1;i] zur anderen Seite

Pro Zeitpunkt nur eine Überfahrt erlaubt (nur eine Var. darf true sein):

U¨berfahrt(i):=(MHi¬KHi¬GHi¬HHi)(¬MHiKHi¬GHi¬HHi)(¬MHi¬KHiGHi¬HHi)(¬MHi¬KHi¬GHiHHi) \begin{array}{l}\text {Überfahrt}(i):= \\\left(\mathrm{MH}_{i} \wedge \neg \mathrm{KH}_{i} \wedge \neg \mathrm{GH}_{i} \wedge \neg \mathrm{HH}_{i}\right) \vee\left(\neg \mathrm{MH}_{i} \wedge \mathrm{KH}_{i} \wedge \neg \mathrm{GH}_{i} \wedge \neg \mathrm{HH}_{i}\right) \vee \\\left(\neg \mathrm{MH}_{i} \wedge \neg \mathrm{KH}_{i} \wedge \mathrm{GH}_{i} \wedge \neg \mathrm{HH}_{i}\right) \vee\left(\neg \mathrm{MH}_{i} \wedge \neg \mathrm{KH}_{i} \wedge \neg \mathrm{GH}_{i} \wedge \mathrm{HH}_{i}\right)\end{array} 

Erlaubte Unterschiede zwischen Zeitpunkten ii und i1i-1 :

( Frame Problem )

 DefU¨berfahrt(i):=(MHi((Mi1≢Mi)(Ki1Ki)(Gi1Gi)(Hi1≢Hi)(HiMi)))(KHi((Mi1Mi)(Ki1≢Ki)(Gi1Gi)(Hi1≢Hi)(HiKi)))(GHi((Mi1Mi)(Ki1Ki)(Gi1≢Gi)(Hi1≢Hi)(HiGi)))(HHi((Mi1Mi)(Ki1Ki)(Gi1Gi)(Hi1Hi)) \begin{array}{l}\text { DefÜberfahrt}(i):= \\\quad\left(M H_{i} \supset\left(\left(M_{i-1} \not \equiv M_{i}\right) \wedge\left(K_{i-1} \equiv K_{i}\right) \wedge\left(G_{i-1} \equiv G_{i}\right) \wedge\left(H_{i-1} \not \equiv H_{i}\right) \wedge\left(H_{i} \equiv M_{i}\right)\right)\right) \\\wedge\left(K H_{i} \supset\left(\left(M_{i-1} \equiv M_{i}\right) \wedge\left(K_{i-1} \not \equiv K_{i}\right) \wedge\left(G_{i-1} \equiv G_{i}\right) \wedge\left(H_{i-1} \not \equiv H_{i}\right) \wedge\left(H_{i} \equiv K_{i}\right)\right)\right) \\\wedge\left(G H_{i} \supset\left(\left(M_{i-1} \equiv M_{i}\right) \wedge\left(K_{i-1} \equiv K_{i}\right) \wedge\left(G_{i-1} \not \equiv G_{i}\right) \wedge\left(H_{i-1} \not \equiv H_{i}\right) \wedge\left(H_{i} \equiv G_{i}\right)\right)\right) \\\wedge\left(H H_{i} \supset\left(\left(M_{i-1} \equiv M_{i}\right) \wedge\left(K_{i-1} \equiv K_{i}\right) \wedge\left(G_{i-1} \equiv G_{i}\right) \wedge\left(H_{i-1} \neq H_{i}\right)\right)\right.\end{array} 


Daraus folgt die Gesamtformel:

Nach n Überfahrten sollen alle auf der anderen Seite sein.

Gesamtformel (n):= AlleHier (0) AlleDort (n)i=0n Sicher (i)i=1nU¨berfahrt (i)i=1n DefU¨berfahrt (i) \begin{aligned}\text {Gesamtformel }(n):=& \text { AlleHier }(0) \wedge \text { AlleDort }(n) \wedge \bigwedge_{i=0}^{n} \text { Sicher }(i) \\& \wedge \bigwedge_{i=1}^{n} \text { Überfahrt }(i) \wedge \bigwedge_{i=1}^{n} \text { DefÜberfahrt }(i)\end{aligned} 

Vorgang:

  1. Die benötigte Zahl n der Überfahrten erraten oder iterativ erhöhen
  1. SAT Solver nützen

Lösung: n=7n= 7

(MH1)=I(HH2)=I(GH3)=I(MH4)=I(KH5)=I(HH6)=I(MH7)=1 \left(M H_{1}\right)=I\left(H H_{2}\right)=I\left(G H_{3}\right)=I\left(M H_{4}\right)=I\left(K H_{5}\right)=I\left(H H_{6}\right)=I\left(M H_{7}\right)=1