Einführung in die Methoden der Künstlichen Intelligenz - Goethe ...
Einführung in die Methoden der Künstlichen Intelligenz - Goethe ...
Einführung in die Methoden der Künstlichen Intelligenz - Goethe ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
6.4 Untersuchungen zum Kalkül<br />
Algorithmus Allenscher Abschluss, Variante 2<br />
E<strong>in</strong>gabe: (n × n)-Array R, mit E<strong>in</strong>trägen R[i, j] ⊆ R<br />
Algorithmus:<br />
queue := {(i, k, j) | 1 ≤ i ≤ n, 1 ≤ k ≤ n, 1 ≤ j ≤ n};<br />
while queue ≠ ∅ do<br />
Wähle und entferne Tripel (i, k, j) aus queue;<br />
R ′ := R[i, j] ∩ (R[i, k] ◦ R[k, j]);<br />
if R[i, j] ≠ R ′ then<br />
R[i, j] := R;<br />
queue := queue ∪{(i, j, m) | 1 ≤ m ≤ n} ∪ {(m, i, j) | 1 ≤ m ≤ n}<br />
endif<br />
endwhile<br />
Die Korrekheit des Algorithmus ergibt sich daraus, dass bei e<strong>in</strong>er Än<strong>der</strong>ung des Werts<br />
R[i, j] wie<strong>der</strong> alle Nachbarn, <strong>der</strong>en Wert evtl. neu berechnet werden muss, <strong>in</strong> <strong>die</strong> Queue<br />
e<strong>in</strong>gefügt werden.<br />
Die Laufzeit des Algorithmus ist im Worst-Case O(n 3 ): Am Anfang enthält <strong>die</strong> Menge<br />
queue O(n 3 ) Tripel. Jedes R[i, j] kann maximal 13 mal verän<strong>der</strong>t werden. Bei e<strong>in</strong>er Än<strong>der</strong>ung<br />
an R[i, j] werden 2 ∗ n Tripel <strong>in</strong> queue e<strong>in</strong>gefügt. Da es nur n 2 viele R[i, j] gibt,<br />
werden <strong>in</strong>sgesamt maximal 13 ∗ 2 ∗ n ∗ n 2 = O(n 3 ) Tripel zu queue h<strong>in</strong>zugefügt. Also gibt<br />
es nicht mehr als O(n 3 ) Durchläufe <strong>der</strong> while-Schleife, von denen maximal O(n 2 ) Durchläufe<br />
O(n) Laufzeit verbrauchen und <strong>die</strong> restlichen O(n) <strong>in</strong> konstanter Laufzeit laufen.<br />
Das ergibt <strong>in</strong> <strong>der</strong> Summe e<strong>in</strong>e Laufzeit von O(n 3 ).<br />
6.4.2 Korrektheit<br />
Es gilt:<br />
Satz 6.4.1. Der Allensche Kalkül ist korrekt.<br />
Beweis. Die Korrekheit muss man mittels <strong>der</strong> Semantik nachweisen. Für <strong>die</strong> aussagenlogischen<br />
Umformungen ist <strong>die</strong>s offensichtlich.<br />
• A R 1 B ∧ A R 2 B ist äquivalent zu A (R 1 ∩ R 2 ) B:<br />
Sei R 1 = {r 1 , . . . , r k }, R 2 = {r ′ 1 , . . . , r′ k ′ }. Dann ist A R 1 B ∧ A R 2 B äquivalent zu<br />
∨ {(A ri B) ∧ (A r ′ i ′ B) | 1 ≤ i ≤ k, 1 ≤ i ′ ≤ k ′ }. Wenn man nun <strong>die</strong> Eigenschaft h<strong>in</strong>zunimmt,<br />
dass alle Basisrelationen echt disjunkt s<strong>in</strong>d, so sieht man, dass <strong>die</strong> Formel<br />
äquivalent zu ∨ {(A r i B) ∧ (A r ′ i ′ B) | 1 ≤ i ≤ k, 1 ≤ i ′ ≤ k ′ , r i = r ′ i ′ } ist, was gerade<br />
genau A (R 1 ∩ R 2 ) B entspricht.<br />
• A ∅ B und 0 s<strong>in</strong>d äquivalent, da für jede Interpretation I per Def<strong>in</strong>ition I(A∅B) = 0<br />
gilt.<br />
M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13 207 Stand: 17. Januar 2013