20.03.2014 Aufrufe

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 ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

3 Aussagenlogik<br />

Zunächst muss man sich verdeutlichen, welche Bed<strong>in</strong>gungen zur Lösung erfor<strong>der</strong>lich s<strong>in</strong>d: Pro<br />

Zeile und pro Spalte muss e<strong>in</strong>e Dame stehen und es darf ke<strong>in</strong>e bedrohenden Paare von Damen<br />

geben. In Haskell programmiert ergibt das:<br />

nDamen n =<br />

(proZeileE<strong>in</strong>eDame n)<br />

++ (proSpalteE<strong>in</strong>eDame n)<br />

++ (bedrohendePaare n)<br />

Der E<strong>in</strong>fachheit halber ko<strong>die</strong>ren wir <strong>die</strong> n × n Fel<strong>der</strong> durch Zahlen von 1 bis n 2 , verwenden<br />

dafür aber e<strong>in</strong>e Funktion, <strong>die</strong> uns Koord<strong>in</strong>aten (im Bereich (1, 1) bis (n, n) direkt umrechnet:<br />

koord<strong>in</strong>ateZuZahl (x,y) n =<br />

(x-1)*n+y<br />

Die Bed<strong>in</strong>gungen, dass e<strong>in</strong>e Dame pro Zeile bzw. pro Spalte vorkommt, lassen sich leicht als Klauselmengen<br />

Programmieren: Z.B. wird <strong>die</strong>s für Zeile i zugesichert, <strong>in</strong>dem alle Fel<strong>der</strong> <strong>in</strong> Zeile i <strong>in</strong><br />

e<strong>in</strong>er Klausel vere<strong>in</strong>t werden, damit ist e<strong>in</strong>es <strong>die</strong>ser Fel<strong>der</strong> sicher belegt. In Haskell kann man das<br />

leicht mit List Comprehensions programmieren:<br />

proZeileE<strong>in</strong>eDame n = [[koord<strong>in</strong>ateZuZahl (i,j) n | j

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!