schachbeispiel © 2000 prof. dr. rainer manthey deduktive datenbanken 1 schachregeln in datalog...
TRANSCRIPT
![Page 1: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/1.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 11
SchachbeispielSchachregeln in Datalog
Deduktive DatenbankenDeduktive DatenbankenDeduktive DatenbankenDeduktive Datenbanken
WS 2000/01 WS 2000/01
Schachregeln in Datalog modelliert Schachregeln in Datalog modelliert Schachregeln in Datalog modelliert Schachregeln in Datalog modelliert
![Page 2: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/2.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 22
Schachbeispiel"Schachspielen in Datalog"?
• in diesem zweiten Einschub: ausführliche Diskussion eines weiteren Modellierungs- beispiels einer "realen" Anwendung unter Verwendung von Datalog und DDB
• Wieso sind die Regeln des Schachspiels ein (deduktives) DB-Thema ?
• Schach ist seit langem ein aktives Anwendungsgebiet verschiedenster Informatik-Techniken• vorwiegend populär geworden: Schachspielprogramme ("Deep Blue")• Forschungsthema u.a. in der KI, Spieltheorie und Algorithmik• zentrale Rolle spielen Datenbanken mit
• Partien (z.B. von Großmeistern auf internationalen Turnieren)• Stellungen (mit Fortsetzungsmöglichkeiten), insbesondere Eröffnungen und Endspiele (z.B. alle 5-Steiner: ca. 2 Giga-Byte!)
• Schachdatenbanken erheblichen Umfangs (z.B. 1,6 Mill. Partien) kommer- ziell über Internet oder auf CD-ROMs verfügbar
• bisher: "Schach-DB" als reine Faktensammlungen (oft komprimiert) mit speziellen Schnittstellen; selten Verwendung eines DBMS; nie regelbasierte Techniken
![Page 3: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/3.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 33
SchachbeispielRegeln in Schach-DB: Ideen und Spekulationen
• am naheliegendsten: Spielregeln als DB-Regeln• normativ: zulässige Zugfolgen (dynamische IB) und Stellungen (statische IB)• deduktiv: Definitionen von Schach-Begriffen (z.B. matt, remis, gedeckt, gefesselt) und der legalen Zugmöglichkeiten• aktiv: Lehr- und Trainingssysteme, Überprüfung "dynamischer" Spiel- regeln (Remisreklamation nach 50 Zügen, Bauernumwandlung)
• weitere Einsatzmöglichkeiten deduktiver Regeln:• Bewertung und Analyse von Stellungen• Herleiten von Stellungen aus Zugfolgen• Empfehlungen für aussichtsreiche Folgezüge (Strategien)
• ebenfalls aussichtsreich: "Data Mining" in Schach-DB (zur Gewinnung strategischen Wissens: Assoziationsregeln)
• all diese Möglichkeiten: bisher (meines Wissens) praktisch nicht genutzt
• folgende Beispielmodellierung diente als Grundlage für entsprechende Fallstudie (einschlägige Diplomarbeit Uni Bonn 1999)
![Page 4: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/4.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 44
SchachbeispielSchachbrett mit Koordinatensystem
8
7
6
5
4
3
2
1
a b c d e f g h
Y
X
Feld mit Koordinaten (d,4)
reihe(a).reihe(b).. . .reihe(h).
reihe(a).reihe(b).. . .reihe(h).
zeile(1).zeile(2).. . .zeile(8).
zeile(1).zeile(2).. . .zeile(8).
feld (X,Y) reihe(X), zeile(Y).
feld (X,Y) reihe(X), zeile(Y).
![Page 5: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/5.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 55
SchachbeispielDatalog-Erweiterung um geklammerte Terme
• Koordinatenpaarangabe für Felder motiviert geringfügige Erweiterung von Datalog:
Zulassen von geklammerten (u.U. auch geschachtelten) Termen aufParameterposition in Literalen
• damit möglich: Auffassen von Feldkoordinaten als Einzelterme:
z.B.: p(X, (X, Y, (a, b)))z.B.: p(X, (X, Y, (a, b)))
feld( (X,Y) ) reihe(X), zeile(Y).feld( (X,Y) ) reihe(X), zeile(Y).
• erweitertes Matching ("Unifikation") von Variablen gegen Klammerterme bzw. von Klammertermen untereinander:
feld(F) feld( (X, 3) )
feld( (a,3) )
feld(F) feld( (X, 3) )
feld( (a,3) )F = (a,3) X = a
![Page 6: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/6.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 66
SchachbeispielTopologie des Schachbretts
8
7
6
5
4
3
2
1
a b c d e f g h
Y
X
zunächst:
aufbauend auf Grund- relationen
reihezeilefeld
Modellierung von Nach- barschaftsbeziehungen zwischen Feldern
"Topologie" des Schachbretts
![Page 7: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/7.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 77
SchachbeispielTopologie des Schachbretts (2)
rechts_von(a,b).rechts_von(b,c).. . .rechts_von(g,h).
links_von(X1,X2) rechts_von(X2,X1).
rechts_von(a,b).rechts_von(b,c).. . .rechts_von(g,h).
links_von(X1,X2) rechts_von(X2,X1).
über(1,2).über(2,3).. . .über(7,8).
unter(Y1,Y2) über(Y2,Y1).
über(1,2).über(2,3).. . .über(7,8).
unter(Y1,Y2) über(Y2,Y1).
vertikal ((X,Y1), (X,Y2), oben) reihe(X), über(Y1,Y2).
vertikal ((X,Y1), (X,Y2), unten) reihe(X), unter(Y1,Y2).
vertikal ((X,Y1), (X,Y2), oben) reihe(X), über(Y1,Y2).
vertikal ((X,Y1), (X,Y2), unten) reihe(X), unter(Y1,Y2).
analog: horizontal (3. Parameter: rechts, links)
![Page 8: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/8.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 88
SchachbeispielTopologie des Schachbretts (3)
• Verallgemeinerung von vertikal/horizontal:
rechtwinklig (Feld1, Feld2, Richtung) vertikal(Feld1, Feld2, Richtung).
rechtwinklig(Feld1, Feld2, Richtung) horizontal(Feld1, Feld2, Richtung).
rechtwinklig (Feld1, Feld2, Richtung) vertikal(Feld1, Feld2, Richtung).
rechtwinklig(Feld1, Feld2, Richtung) horizontal(Feld1, Feld2, Richtung).
• diagonale Nachbarschaft:
diagonal( Feld1, Feld2, (Hor, Ver)) vertikal( Feld1, Feld3, Ver),horizontal( Feld3, Feld2, Hor).
diagonal( Feld1, Feld2, (Hor, Ver)) vertikal( Feld1, Feld3, Ver),horizontal( Feld3, Feld2, Hor).
![Page 9: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/9.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 99
SchachbeispielTopologie des Schachbretts (4)
• Zusammenfassung von 'diagonal' und 'rechtwinklig':
benachbart (Feld1, Feld2) diagonal(Feld1, Feld2, _).
benachbart(Feld1, Feld2) rechtwinklig(Feld1, Feld2, _).
benachbart (Feld1, Feld2) diagonal(Feld1, Feld2, _).
benachbart(Feld1, Feld2) rechtwinklig(Feld1, Feld2, _).
• indirekte Versionen aller Nachbarschaftsrelationen durch transitiven Abschluß:
rechts_von* (X,Y) rechts_von(X,Y).rechts_von*(X,Y) rechts_von(X,Z), rechts_von*(Z,Y).
rechts_von* (X,Y) rechts_von(X,Y).rechts_von*(X,Y) rechts_von(X,Z), rechts_von*(Z,Y).
(analog: links_von*, über*, unter*)
vertikal* (X,Y,R) vertikal(X,Y,R).vertikal*(X,Y,R) vertikal(X,Z,R), vertikal*(Z,Y,R).
vertikal* (X,Y,R) vertikal(X,Y,R).vertikal*(X,Y,R) vertikal(X,Z,R), vertikal*(Z,Y,R).
(analog: horizontal*, rechtwinklig*, diagonal*, benachbart*)
![Page 10: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/10.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1010
SchachbeispielFiguren und Farben
farbe (w). weißfarbe(s). schwarz
farbe (w). weißfarbe(s). schwarz
gegner (s,w).gegner(w,s).
gegner (s,w).gegner(w,s).
stein (k). Königstein(d). Damestein(t). Turmstein(l). Läuferstein(s). Springerstein(b). Bauer
stein (k). Königstein(d). Damestein(t). Turmstein(l). Läuferstein(s). Springerstein(b). Bauer
8
7
6
5
4
3
2
1
a b c d e f g h
![Page 11: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/11.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1111
SchachbeispielPositionen von Figuren auf dem Brett
8
7
6
5
4
3
2
1
a b c d e f g h
position (k, s, (c,8)).position(d, s, (b,5)).position(b, s, (g,7)).
position(k, w, (f,1)).position(l, w, (e,2)).position(b, w, (c,3)).
position (k, s, (c,8)).position(d, s, (b,5)).position(b, s, (g,7)).
position(k, w, (f,1)).position(l, w, (e,2)).position(b, w, (c,3)).
Beschreibung einer aktuellenSpielstellung durch Fakten:
besetzt_von(Feld, Farbe) position(_, Farbe, Feld).
besetzt (Feld) besetzt_von( Feld, _).
frei (Feld) feld(Feld), not besetzt(Feld).
besetzt_von(Feld, Farbe) position(_, Farbe, Feld).
besetzt (Feld) besetzt_von( Feld, _).
frei (Feld) feld(Feld), not besetzt(Feld).
im_spiel (Stein, Farbe) position(Stein, Farbe,_).
geschlagen (S, F) stein(S), farbe(F),not im_spiel(S, F).
im_spiel (Stein, Farbe) position(Stein, Farbe,_).
geschlagen (S, F) stein(S), farbe(F),not im_spiel(S, F).
![Page 12: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/12.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1212
SchachbeispielKorrekte Positionierung von Figuren
• Bereits mit diesen einfachen Begriffen zum Beschreiben von Schachbrett und Spielkonstellationen sind viele inkorrekte Zustände konstruierbar, die durch geeignete Integritätsbedingungen verhindert werden müssen.
• Ein und dasselbe Feld darf nicht mit zwei verschiedenen Figuren besetzt sein:
• Eine Figur kann nicht gleichzeitig auf zwei verschiedenen Feldern stehen:
constraint not doppelt_belegt with doppelt_belegt
position(Figur1, Farbe1, Feld),position(Stein2, Farbe2, Feld),(Stein1,Farbe1) (Stein2,Farbe2) !
constraint not doppelt_belegt with doppelt_belegt
position(Figur1, Farbe1, Feld),position(Stein2, Farbe2, Feld),(Stein1,Farbe1) (Stein2,Farbe2) !
constraint not doppelt_positioniert with doppelt_positioniert
position(Stein, Farbe, Feld1),position(Stein, Farbe, Feld2),Feld1 Feld2 !
constraint not doppelt_positioniert with doppelt_positioniert
position(Stein, Farbe, Feld1),position(Stein, Farbe, Feld2),Feld1 Feld2 !
??
??
![Page 13: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/13.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1313
SchachbeispielFeinere Figurenmodellierung
constraint not doppelt_positioniert with doppelt_positioniert
position(Stein, Farbe, Feld1),position(Stein, Farbe, Feld2),Feld1 Feld2 !
constraint not doppelt_positioniert with doppelt_positioniert
position(Stein, Farbe, Feld1),position(Stein, Farbe, Feld2),Feld1 Feld2 !
. . . formalisiert leidernicht, was gemeint war !!
• Grund: Es gibt von den meisten Steinen mehrere Exemplare, die mit der bisherigen Modellierung nicht unterschieden werden können!
• Ausweg: "Feinere" Unterscheidung von Stein-Exemplaren etwa durch zusätzliche Angabe der Reihe, in der der Stein am Spielbeginn stand, z.B.:
z.B.: position(b, w, (a,2)). ist völlig in Ordnung position(b, w, (b,2)).
z.B.: position(b, w, (a,2)). ist völlig in Ordnung position(b, w, (b,2)).
position(l, w, f , (c,4) ).position(l, w, c, (h,6) ).
position(l, w, f , (c,4) ).position(l, w, c, (h,6) ).
a b c d e f g h
![Page 14: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/14.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1414
SchachbeispielFiguren statt Steine
• Um gleichzeitigen Zugriff auf alle Aspekte eines Stein-Exemplars zu gewährleisten:wieder Verwendung von strukturierten Termen zur Modellierung, z.B.:
• zur besseren Unterscheidung: neuer Begriff 'Figur' für 'Exemplar eines Steins':
• zum Unterscheiden von Figuren ohne Komponentenschreibweise: "Typprädikate"
(s, w, b)(s, w, b) weißer Springer, der auf (b, 1) beginnt("Damenspringer")
figur ((s, w, b))figur ((s, w, b))
Stein Farbe Reihe
bauer ((b, F, R)) farbe(F), reihe(R).
bauer ((b, F, R)) farbe(F), reihe(R).
analog: springer/1, läufer/1, . . . weiss/1, schwarz/1, gegnerisch/2 . . . farbe_von/2
![Page 15: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/15.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1515
SchachbeispielWeitere Integritätsaspekte
• Um zu verhindern, daß zu viele Figuren ins Spiel kommen, muß auch der "Vorrat" an Figuren entsprechend explizit angepaßt werden:
figur( (b, w, a) ). figur( (t, w, a) ).figur( (b, w, b) ). figur( (t, w, h) ).. . .
figur( (b, w, a) ). figur( (t, w, a) ).figur( (b, w, b) ). figur( (t, w, h) ).. . .
• Entsprechend muß die Syntax für Positionsvergabe angepaßt und durch Typ- Constraints kontrolliert werden:
position(k, s, (f, 5)). = = = > position( (k, s, e), (f, 5) ).position(k, s, (f, 5)). = = = > position( (k, s, e), (f, 5) ).
constraint not fehlbelegung with fehlbelegung
position(Figur, _), not figur(Figur) ; fehlbelegung
position(_, Feld), not feld(Feld) !
constraint not fehlbelegung with fehlbelegung
position(Figur, _), not figur(Figur) ; fehlbelegung
position(_, Feld), not feld(Feld) !
![Page 16: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/16.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1616
SchachbeispielIntegrität bei Schachpositionen (3)
• Alle Figuren dürfen auf dem Schachbrett fehlen, nur die beiden Könige müssen in jeder Schachstellung auf dem Brett stehen:
constraint beide_könige_im_spiel with beide_könige_im_spiel
im_spiel(k, w),im_spiel(k, s) !
constraint beide_könige_im_spiel with beide_könige_im_spiel
im_spiel(k, w),im_spiel(k, s) !
• Sonderregelung erforderlich für den Fall, daß ein Bauer zur gegnerischen Grundlinie vorstößt und "umgewandelt" werden kann (in eine höherwertige Figur, z.B. eine zusätzliche Dame): Wie kennzeichnet man solche Extra- figuren in der dritten Komponente eines figur-Terms?
• ganz sicher: noch diverse weitere Integritätsbedingungen zum Modellieren zulässiger Schachpositionen erforderlich
![Page 17: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/17.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1717
SchachbeispielStellungsanalyse durch DB-Prädikate: Motivation
8
7
6
5
4
3
2
1
a b c d e f g h
gefesselt
im_schach
bedroht_durch
gedeckt_von
![Page 18: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/18.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1818
SchachbeispielBesetzbare und erreichbare Felder
Vorgehensweise beim Modellieren von Zugmöglichkeiten.
a) pro Figur: 1) Felder, die die Figur auf einem leeren Schachbrett erreichen kann
erreichbar 2) Felder, die diese spezielle Figur in der aktuellen Stellung besetzen kann
besetzbar_1b) für alle Figuren generell: erreichbare Felder, die aktuell tatsächlich besetzt werden können
besetzbar
gefesselt
erreichbar
blockiert
besetzbar
![Page 19: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/19.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1919
SchachbeispielBesetzbare Felder
gefesselt blockiertfür alle Figuren gleichermassen:
Eine Figur kann auf ein für sie imPrinzip besetzbares Feld (besetzbar_1) nur dann ziehen, wenn
° sie selbst nicht gefesselt ist, ° das Feld nicht von einer eigenen Figur blockiert wird.
(Blockierende gegnerische Figuren können hingegen geschlagen werden.)
schlagbar besetzbar (Figur, Feld1, Feld2) besetzbar_1(Figur, Feld1, Feld2),farbe_von(Figur, Farbe),not besetzt_von(Feld2, Farbe),not gefesselt(Figur, Feld1).
besetzbar (Figur, Feld1, Feld2) besetzbar_1(Figur, Feld1, Feld2),farbe_von(Figur, Farbe),not besetzt_von(Feld2, Farbe),not gefesselt(Figur, Feld1).
(noch zu definieren)
![Page 20: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/20.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 2020
SchachbeispielZugmöglichkeiten des Läufers
erreichbar (Figur, Feld1, Feld2) läufer (Figur),diagonal*(Feld1, Feld2, Richtung).
erreichbar (Figur, Feld1, Feld2) läufer (Figur),diagonal*(Feld1, Feld2, Richtung).
von nach
Läufer können diagonalbeliebig weit ziehen.
![Page 21: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/21.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 2121
SchachbeispielZugmöglichkeiten des Läufers (2)
besetzbar_1 (Figur, Feld1, Feld2) läufer(Figur),erreichbar(Figur, Feld1, Feld2), not verdeckt(l, Feld1, Feld2).
besetzbar_1 (Figur, Feld1, Feld2) läufer(Figur),erreichbar(Figur, Feld1, Feld2), not verdeckt(l, Feld1, Feld2).
verdeckt (l, F1, F2) diagonal*(F1, F3, Richtung),besetzt(F3),diagonal*(F3, F2, Richtung).
verdeckt (l, F1, F2) diagonal*(F1, F3, Richtung),besetzt(F3),diagonal*(F3, F2, Richtung).
egal, ob durch eigeneoder fremde Figur
(besetztes Feld selbst ist nicht verdeckt!)
![Page 22: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/22.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 2222
SchachbeispielZugmöglichkeiten des Turms
erreichbar (Figur, Feld1, Feld2) turm (Figur), rechtwinklig*(Feld1, Feld2, Richtung).
erreichbar (Figur, Feld1, Feld2) turm (Figur), rechtwinklig*(Feld1, Feld2, Richtung).
Türme ziehen rechtwinklig,(analog zum diagonalen Ziehen der Läufer)
![Page 23: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/23.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 2323
SchachbeispielZugmöglichkeiten des Turms (2)
besetzbar_1 (Figur, Feld1, Feld2) turm (Figur),erreichbar(Figur, Feld1, Feld2), not verdeckt(t, Feld1, Feld2).
besetzbar_1 (Figur, Feld1, Feld2) turm (Figur),erreichbar(Figur, Feld1, Feld2), not verdeckt(t, Feld1, Feld2).
verdeckt (t, F1, F2) rechtwinklig*(F1, F3, Richtung), besetzt(F3), rechtwinklig*(F3, F2, Richtung).
verdeckt (t, F1, F2) rechtwinklig*(F1, F3, Richtung), besetzt(F3), rechtwinklig*(F3, F2, Richtung).
![Page 24: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/24.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 2424
SchachbeispielZugmöglichkeiten der Dame
erreichbar (Figur, Feld1, Feld2) dame(Figur),erreichbar((t, _, _) , Feld1, Feld2).
erreichbar(Figur, Feld1, Feld2) dame(Figur), erreichbar((l, _, _), Feld1, Feld2).
erreichbar (Figur, Feld1, Feld2) dame(Figur),erreichbar((t, _, _) , Feld1, Feld2).
erreichbar(Figur, Feld1, Feld2) dame(Figur), erreichbar((l, _, _), Feld1, Feld2).
Damen ziehen rechtwinklig wie Türme oder diagonal wie ein Läufer
![Page 25: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/25.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 2525
SchachbeispielZugmöglichkeiten der Dame (2)
auch Besetzbarkeit speziellfür Damen über Turm und Läufer herleitbar
besetzbar_1 (Figur, Feld1, Feld2) dame(Figur),besetzbar_1((t, _, _) , Feld1, Feld2).
besetzbar_1(Figur, Feld1, Feld2) dame(Figur), besetzbar_1((l, _, _), Feld1, Feld2).
besetzbar_1 (Figur, Feld1, Feld2) dame(Figur),besetzbar_1((t, _, _) , Feld1, Feld2).
besetzbar_1(Figur, Feld1, Feld2) dame(Figur), besetzbar_1((l, _, _), Feld1, Feld2).
![Page 26: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/26.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 2626
SchachbeispielZugmöglichkeiten des Springers
erreichbar (Figur, Feld1, Feld2) springer(Figur),vertikal(Feld1, Feld3, V),vertikal(Feld3, Feld4, V),horizontal(Feld4, Feld2, _).
erreichbar (Figur, Feld1, Feld2) springer(Figur),vertikal(Feld1, Feld3, V),vertikal(Feld3, Feld4, V),horizontal(Feld4, Feld2, _).
erreichbar(Figur, Feld1, Feld2) springer(Figur),horizontal(Feld1, Feld3, H),horizontal(Feld3, Feld4, H),vertikal(Feld4, Feld2, _).
erreichbar(Figur, Feld1, Feld2) springer(Figur),horizontal(Feld1, Feld3, H),horizontal(Feld3, Feld4, H),vertikal(Feld4, Feld2, _).
rote Pfeile blaue Pfeile
gleiche Richtung beliebige Richtung
Springerzüge bereiten geradeAnfängern leicht Schwierigkeiten:
"Rösselsprung"
![Page 27: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/27.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 2727
SchachbeispielZugmöglichkeiten des Springers (2)
Springer können durch eigeneoder gegnerische Figuren nicht"aufgehalten" werden
("überspringen" sie).
besetzbar_1 (Figur, Feld1, Feld2) springer(Figur), erreichbar(Figur, Feld1, Feld2).
besetzbar_1 (Figur, Feld1, Feld2) springer(Figur), erreichbar(Figur, Feld1, Feld2).
![Page 28: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/28.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 2828
SchachbeispielZugmöglichkeiten des Bauern
erreichbar (Figur, Feld1, Feld2) bauer(Figur), farbe_von(Figur, Farbe)richtung_von(Farbe, Richtung),vertikal(Feld1, Feld2, Richtung).
erreichbar (Figur, Feld1, Feld2) bauer(Figur), farbe_von(Figur, Farbe)richtung_von(Farbe, Richtung),vertikal(Feld1, Feld2, Richtung).
• Bauern bleiben in "ihren" Reihen• gehen pro Zug eine Zeile "vorwärts"
Grundprinzip der Bauernzüge denkbar einfach:
Weiss spielt stets von unten nach oben,schwarz in umgekehrter Richtung:
richtung_von (w, oben).richtung_von(s, unten).
richtung_von (w, oben).richtung_von(s, unten).
![Page 29: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/29.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 2929
SchachbeispielZugmöglichkeiten des Bauern (2)
erreichbar (Figur, (X,2), (X,4)) bauer(Figur), weiss(Figur),reihe(X).
erreichbar(Figur, (X,7), (X,5)) bauer(Figur), schwarz(Figur),reihe(X).
erreichbar (Figur, (X,2), (X,4)) bauer(Figur), weiss(Figur),reihe(X).
erreichbar(Figur, (X,7), (X,5)) bauer(Figur), schwarz(Figur),reihe(X).
Ausnahme: im ersten Zug (aus der Ausgangs- position) ist ein Doppelschritt erlaubt
8
7
6
5
4
3
2
1
![Page 30: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/30.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 3030
SchachbeispielZugmöglichkeiten des Bauern (3)
besetzbar_1(Figur, (X,7), (X,5)) bauer(Figur), schwarz(Figur),reihe(X),not besetzt((X,6)),not besetzt_von((X,5), w).
besetzbar_1(Figur, (X,7), (X,5)) bauer(Figur), schwarz(Figur),reihe(X),not besetzt((X,6)),not besetzt_von((X,5), w).
für Besetzbarkeit:• Zwischenfeld bei Doppelschritt
darf nicht blockiert sein• Zielfeld darf zudem nicht vom Gegner besetzt sein (kein Schlagen in gerader Linie!!)
8
7
6
5
4
3
2
1
besetzbar_1 (Figur, (X,2), (X,4)) bauer(Figur), weiss(Figur),reihe(X),not besetzt((X,3)),not besetzt_von((X,4), s).
besetzbar_1 (Figur, (X,2), (X,4)) bauer(Figur), weiss(Figur),reihe(X),not besetzt((X,3)),not besetzt_von((X,4), s).
![Page 31: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/31.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 3131
SchachbeispielZugmöglichkeiten des Bauern (4)
Bauern können ihr direktesNachbarfeld in Laufrichtungnur dann auch besetzen, wenn es nicht durch einegegnerische Figur besetzt ist. (kein Schlagen möglich!!)
besetzbar_1 (Figur, Feld1, Feld2) bauer(Figur), farbe(Figur, Farbe),richtung_von(Farbe, Richtung),vertikal(Feld1, Feld2, Richtung),gegner(Farbe, Farbe1),not besetzt_von(Feld2, Farbe1).
besetzbar_1 (Figur, Feld1, Feld2) bauer(Figur), farbe(Figur, Farbe),richtung_von(Farbe, Richtung),vertikal(Feld1, Feld2, Richtung),gegner(Farbe, Farbe1),not besetzt_von(Feld2, Farbe1).
![Page 32: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/32.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 3232
SchachbeispielZugmöglichkeiten des Bauern (5)
aber: vom Gegner besetztes Diagonal- feld kann (mit Schlagen) betreten werden
besetzbar_1 (Figur, Feld1, Feld2) bauer(Figur),
farbe(Figur, Farbe),richtung_von(Farbe, Richtung)
diagonal(Feld1, Feld2, (_, Richtung)),gegner(Farbe, Farbe1),
besetzt_von(Feld2, Farbe1).
besetzbar_1 (Figur, Feld1, Feld2) bauer(Figur),
farbe(Figur, Farbe),richtung_von(Farbe, Richtung)
diagonal(Feld1, Feld2, (_, Richtung)),gegner(Farbe, Farbe1),
besetzt_von(Feld2, Farbe1).
![Page 33: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/33.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 3333
SchachbeispielZugmöglichkeiten des Bauern (6)
Zusammenfassung der möglichen Bauernzüge:
besetzbar_1 (Figur, (X,2), (X,4)) bauer(Figur), weiss(Figur),reihe(X),not besetzt((X,3)),not besetzt_von((X,4), s).
besetzbar_1 (Figur, (X,2), (X,4)) bauer(Figur), weiss(Figur),reihe(X),not besetzt((X,3)),not besetzt_von((X,4), s).
Einfachschritt
Doppelschritt
diagonales Schlagen
besetzbar_1 (Figur, Feld1, Feld2) bauer(Figur),
farbe(Figur, Farbe),richtung_von(Farbe, Richtung)
diagonal(Feld1, Feld2, (_, Richtung)),gegner(Farbe, Farbe1),
besetzt_von(Feld2, Farbe1).
besetzbar_1 (Figur, Feld1, Feld2) bauer(Figur),
farbe(Figur, Farbe),richtung_von(Farbe, Richtung)
diagonal(Feld1, Feld2, (_, Richtung)),gegner(Farbe, Farbe1),
besetzt_von(Feld2, Farbe1).
besetzbar_1 (Figur, Feld1, Feld2) bauer(Figur), farbe(Figur, Farbe),richtung_von(Farbe, Richtung),vertikal(Feld1, Feld2, Richtung),gegner(Farbe, Farbe1),not besetzt_von(Feld2, Farbe1).
besetzbar_1 (Figur, Feld1, Feld2) bauer(Figur), farbe(Figur, Farbe),richtung_von(Farbe, Richtung),vertikal(Feld1, Feld2, Richtung),gegner(Farbe, Farbe1),not besetzt_von(Feld2, Farbe1).
(analog für schwarze Bauern)
![Page 34: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/34.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 3434
SchachbeispielZugmöglichkeiten des Königs
Könige können (im Prinzip) jedes direkte Nachbarfeld erreichen
erreichbar (Figur, Feld1, Feld2) könig (Figur), benachbart(Feld1, Feld2).
erreichbar (Figur, Feld1, Feld2) könig (Figur), benachbart(Feld1, Feld2).
1. Ausnahme für Besetzbarkeit:
Könige dürfen nie ein vom Gegner bedrohtes Feld betreten!
(Jede andere Figur hingegen darf "sich opfern"!)
![Page 35: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/35.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 3535
SchachbeispielZugmöglichkeiten des Königs (2)
2. Ausnahme für Könige: Ein angegriffener König darf ein Nachbarfeld nicht betreten,wenn er dort (vom selben Angreifer) nach dem Wegziehenimmer noch bedroht wäre.
besetzbar_1 (Figur1, Feld1, Feld3) könig(Figur1), erreichbar(Figur1, Feld1, Feld3),farbe_von(Figur1, Farbe1),not bedroht(Farbe1, Feld3), not potentiell_bedroht(Figur1, Feld1, Farbe1, Feld3).
besetzbar_1 (Figur1, Feld1, Feld3) könig(Figur1), erreichbar(Figur1, Feld1, Feld3),farbe_von(Figur1, Farbe1),not bedroht(Farbe1, Feld3), not potentiell_bedroht(Figur1, Feld1, Farbe1, Feld3).
( Vorsicht: aktuell ist das fragliche Feld 3 nicht vom Turm bedroht! )
12 3
Ausnahme 1Ausnahme 2 (noch zu definieren)
![Page 36: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/36.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 3636
SchachbeispielPotentiell bedrohte Felder
12 3
potentiell_bedroht(Figur1, Feld1, Farbe1, Feld3) bedroht_von(Figur2, Feld2, Farbe1, Feld1),stein_von(Figur2, Stein),verdeckt(Stein, Feld2, Feld3).
potentiell_bedroht(Figur1, Feld1, Farbe1, Feld3) bedroht_von(Figur2, Feld2, Farbe1, Feld1),stein_von(Figur2, Stein),verdeckt(Stein, Feld2, Feld3).
"Potentielle Bedrohung" von Figuren, die auf der Sichtlinie eines Angreifers einfach nur weiterrücken:
(nur für Läufer, Türme und Damen definiert)
![Page 37: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/37.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 3737
SchachbeispielBedrohung von Feldern durch Figuren
• im Prinzip: Figuren bedrohen jedes von ihrer aktuellen Position aus besetzbare Feld.
• Begriff 'Bedrohung' ist hier potentiell zu verstehen:Wenn auf dem bedrohten Feld eine gegnerische Figur stände, könnte diebedrohende Figur sie schlagen - bedrohte Felder können aber auch leer sein.
• einzige Ausnahme: Bauern können nur diagonale Nachbarfelder (in Laufrichtung) zum Schlagen besetzen (und damit bedrohen)
• Projektion auf bedrohte Felder:
bedroht_von (Figur1, Feld1, Farbe2, Feld2) position(Figur1, Feld1), not bauer(Figur1),farbe_von(Figur1, Farbe1), gegner(Farbe1, Farbe2),besetzbar(Figur1, Feld1, Feld2).
bedroht_von(Figur1, Feld1, Farbe2, Feld2) position(Figur1, Feld1), bauer(Figur1),farbe_von(Figur1, Farbe1), gegner(Farbe1, Farbe2),richtung(Farbe1, Richtung),diagonal(Figur1, Figur2, (_, Richtung)).
bedroht_von (Figur1, Feld1, Farbe2, Feld2) position(Figur1, Feld1), not bauer(Figur1),farbe_von(Figur1, Farbe1), gegner(Farbe1, Farbe2),besetzbar(Figur1, Feld1, Feld2).
bedroht_von(Figur1, Feld1, Farbe2, Feld2) position(Figur1, Feld1), bauer(Figur1),farbe_von(Figur1, Farbe1), gegner(Farbe1, Farbe2),richtung(Farbe1, Richtung),diagonal(Figur1, Figur2, (_, Richtung)).
bedroht (Farbe, Feld) bedroht_von(_, _, Farbe, Feld). bedroht (Farbe, Feld) bedroht_von(_, _, Farbe, Feld).
![Page 38: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/38.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 3838
SchachbeispielGedeckte Figuren
Auch beim (scheinbar inversen) Begriff 'gedeckt_von' muß wieder die Sonderrolle der Bauern berücksichtigt werden:
besetzbar, abernicht gedeckt
gedeckt, weil L dort geschlagen werden könnte
Es reicht nicht aus, das Feld,das gedeckt werden soll, mit der deckenden Figur besetzenzu können.
Man muß dort auch schlagen dürfen!
![Page 39: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/39.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 3939
SchachbeispielGedeckte Figuren (2)
gedeckt_von (Figur1, Feld1, Farbe2, Feld2) position(Figur1, Feld1), not bauer(Figur1),not gefesselt(Figur1, Feld1),farbe_von(Figur1, Farbe1), gegner(Farbe1, Farbe2),besetzbar_1(Figur1, Feld1, Feld2).
gedeckt_von(Figur1, Feld1, Farbe2, Feld2) position(Figur1, Feld1), bauer(Figur1),not gefesselt(Figur1, Feld1),farbe_von(Figur1, Farbe1), gegner(Farbe1, Farbe2),diagonal(Figur1, Figur2, _).
gedeckt_von (Figur1, Feld1, Farbe2, Feld2) position(Figur1, Feld1), not bauer(Figur1),not gefesselt(Figur1, Feld1),farbe_von(Figur1, Farbe1), gegner(Farbe1, Farbe2),besetzbar_1(Figur1, Feld1, Feld2).
gedeckt_von(Figur1, Feld1, Farbe2, Feld2) position(Figur1, Feld1), bauer(Figur1),not gefesselt(Figur1, Feld1),farbe_von(Figur1, Farbe1), gegner(Farbe1, Farbe2),diagonal(Figur1, Figur2, _).
• "Problem": Auf dem zu deckenden Feld kann (muß nicht) eine eigene Figur stehen. Das Feld ist damit nicht 'besetzbar', sondern nur 'besetzbar_1'.
• Verhinderung der Fesselung der deckenden Figur muß dafür aber explizit garantiert werden, wenn man 'besetzbar_1' verwendet.
gedeckt( Farbe, Feld) gedeckt_von(_, _, Farbe, Feld).gedeckt( Farbe, Feld) gedeckt_von(_, _, Farbe, Feld).
![Page 40: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/40.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 4040
SchachbeispielSchach und Matt: Übersicht
Schach
einfachesSchach
Doppelschach
König nicht beweglich
König beweglich
König beweglich
König nicht beweglich
Angreiferschlagbar
Schachabblockbar
sonst MATTMATT
MATTMATT
Schachabwendbar
Schachabwendbar
![Page 41: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/41.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 4141
SchachbeispielMatt
matt (Spieler) im_doppelschach(Spieler),not beweglich( (k, Spieler, e) ).
matt(Spieler) im_schach(Spieler, Feld, Figur1, Feld1),not im_doppelschach(Spieler),not beweglich( (k, Spieler, e) ),gegner(Spieler, Gegner), not bedroht(Gegner, Feld),not abblockbar(Figur1, Feld1, Spieler, Feld)
matt (Spieler) im_doppelschach(Spieler),not beweglich( (k, Spieler, e) ).
matt(Spieler) im_schach(Spieler, Feld, Figur1, Feld1),not im_doppelschach(Spieler),not beweglich( (k, Spieler, e) ),gegner(Spieler, Gegner), not bedroht(Gegner, Feld),not abblockbar(Figur1, Feld1, Spieler, Feld)
beweglich (Figur) position(Figur, Feld),besetzbar(Figur, Feld, _ ).
beweglich (Figur) position(Figur, Feld),besetzbar(Figur, Feld, _ ).
kann auf irgendein Feldabziehen
einfachesSchach
![Page 42: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/42.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 4242
SchachbeispielAbblocken von Angriffen
Angriffe von Läufern, Türmen und Damen können u.U. durch "Dazwischenziehen"eigener Figuren abgeblockt werden:
1
3 2
Welche Felder liegen "zwischen" Angreifer und Angegriffenem ?
zwischen(Figur1, Feld1, Feld2, Feld3) turm(Figur1), rechtwinklig*(Feld1, Feld2, Richtung),rechtwinklig*(Feld1, Feld3, Richtung),rechtwinklig*(Feld3, Feld2, Richtung).
zwischen(Figur1, Feld1, Feld2, Feld3) turm(Figur1), rechtwinklig*(Feld1, Feld2, Richtung),rechtwinklig*(Feld1, Feld3, Richtung),rechtwinklig*(Feld3, Feld2, Richtung).
(analog für Läufer und Dame zu definieren)
![Page 43: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/43.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 4343
SchachbeispielAbblocken von Angriffen (2)
1
3
2
damit definierbar:
abblockbar(Figur1, Feld1, Spieler, Feld) position(Figur2, Feld2),farbe_von(Figur2, Spieler),besetzbar(Figur2, Feld2, Feld3),zwischen(Figur1, Feld1, Feld, Feld3).
abblockbar(Figur1, Feld1, Spieler, Feld) position(Figur2, Feld2),farbe_von(Figur2, Spieler),besetzbar(Figur2, Feld2, Feld3),zwischen(Figur1, Feld1, Feld, Feld3).
![Page 44: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/44.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 4444
SchachbeispielSchach
8
7
6
5
4
3
2
1
a b c d e f g h
Ein Spieler steht im Schach,wenn sein König von irgendeinergegnerischen Figur bedroht wird!
im_schach (Farbe, Feld, Figur1, Feld1) position( (k, Farbe, e), Feld),bedroht_von(Figur1, Feld1, Farbe, Feld).
im_schach (Farbe, Feld, Figur1, Feld1) position( (k, Farbe, e), Feld),bedroht_von(Figur1, Feld1, Farbe, Feld).
hier: Feld = (c, 8)
Feld1 = (e, 6)
![Page 45: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/45.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 4545
SchachbeispielDoppelschach
Ein Spieler steht im Doppelschach,wenn sein König von zweigegnerischen Figuren gleichzeitigbedroht wird!
im_doppelschach (Farbe) im_schach(Farbe, Feld, Figur1, Feld1),im_schach(Farbe, Feld, Figur2, Feld2),Figur1 Figur2.
im_doppelschach (Farbe) im_schach(Farbe, Feld, Figur1, Feld1),im_schach(Farbe, Feld, Figur2, Feld2),Figur1 Figur2.
(Schlagen eines Angreifers oder Abblocken eines Angriffs hilft dann nicht mehr !)
![Page 46: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/46.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 4646
SchachbeispielFesselung von Figuren
"Altlast" (d.h. immer noch nicht definiert): Wann ist eine Figur auf einem Feld gefesselt?
gefesselt
• Abziehen der gefesselten Figur würde direkt zum Schach des eigenen Königs führen.• Nur Läufer, Türme und Damen können gegnerische Figuren fesseln.
gefesselt (Figur, Feld) position(Figur, Feld), farbe_von(Figur, Farbe), position((k, Farbe, e), Feld1), position(Figur2, Feld2), gegnerisch(Figur, Figur2), zwischen(Figur2, Feld2, Feld1, Feld).
gefesselt (Figur, Feld) position(Figur, Feld), farbe_von(Figur, Farbe), position((k, Farbe, e), Feld1), position(Figur2, Feld2), gegnerisch(Figur, Figur2), zwischen(Figur2, Feld2, Feld1, Feld).
1
2
![Page 47: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/47.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 4747
SchachbeispielAbhängigkeitsgraph
• im folgenden: Auszug des Abhängigkeitsgraphen dieser Anwendung(Beschränkung auf alle wesentlichen Abhängigkeiten)
• Abhängigkeiten von Basisrelationen: weitgehend ausgelassen
matt
im_doppelschach
im_schach
bedroht_von
bedroht abblockbarbeweglich
not
not
not
not
![Page 48: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/48.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 4848
SchachbeispielAbhängigkeitsgraph (2)
bedroht_von abblockbarbeweglich
bedroht
gedeckt_von
gedeckt
besetzbar
besetzbar_1
gefesselterreichbarbesetzt_von
besetzt
verdeckt
Basisrelationen und topologische Relationen
not
not
not
not not
notnot
not
![Page 49: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/49.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 4949
SchachbeispielStratifikationsproblem
• Nicht auf den ersten Blick zu erkennen: Regelmenge ist nicht stratifizierbar !!
bedroht_vonbedroht
besetzbar
not
• Grund für diesen Zyklus: Könige können Nachbarfeld nur besetzen, wenn es nicht (von einer gegnerischen Figur) bedroht ist
besetzbar_1 (Figur1, Feld1, Feld3) könig(Figur1), farbe_von(Figur1, Farbe1),bedroht_von(Figur2, Feld2, Farbe1, Feld1),erreichbar(Figur1, Feld1, Feld3),not erreichbar(Figur2, Feld2, Feld3),not bedroht(Farbe1, Feld3).
besetzbar_1 (Figur1, Feld1, Feld3) könig(Figur1), farbe_von(Figur1, Farbe1),bedroht_von(Figur2, Feld2, Farbe1, Feld1),erreichbar(Figur1, Feld1, Feld3),not erreichbar(Figur2, Feld2, Feld3),not bedroht(Farbe1, Feld3).
besetzbar_1
?
![Page 50: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/50.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 5050
SchachbeispielStratifikationsproblem (2)
besetzbar_1 ((k, w, e), _, Feld3)
not bedroht(w, Feld3)
bedroht_von (Figur1, Feld1, w, Feld3)
farbe_von(Figur1, Farbe1), gegner(Farbe1, w), besetzbar(Figur1, Feld1, Feld3).
besetzbar_1((k, s, e), _, Feld3)
not bedroht(s, Feld3)
bedroht_von (Figur1', Feld1', s, Feld3)
farbe_von(Figur1', Farbe1'), gegner(Farbe1', s), besetzbar(Figur1', Feld1', Feld3).
![Page 51: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/51.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 5151
SchachbeispielStratifikationsproblem (3)
8
7
6
5
4
3
2
1
a b c d e f g h
Kritische Situationkann Eintreten, wennbeide Könige "in Opposition"zueinander stehen:
Sind die roten Felderfür die Könige besetzbaroder nicht ?
intuitiv: nicht besetzbar, da vom gegnerischen König bedroht
Wie kann man dieses Stratifikations-problem am besten lösen ?
Wie kann man dieses Stratifikations-problem am besten lösen ?
![Page 52: Schachbeispiel © 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 1 Schachregeln in Datalog Deduktive Datenbanken WS 2000/01 Schachregeln in Datalog](https://reader034.vdocuments.mx/reader034/viewer/2022052315/55204d6749795902118bc407/html5/thumbnails/52.jpg)
© 2000 Prof. Dr. Rainer Manthey Deduktive Datenbanken 5252
Schachbeispielvorläufige Schlußfolie
Dieser Einschub ist hiermit noch nicht endgültig abgeschlossen - es handelt sich also bei dieser Version zunächst nur um eine vorläufigeFassung. Eine Lösung für das Stratifikationsproblem sollte noch gefundenund entsprechende Modifikationen eingebaut werden. Zudem sollen nocheinige Bemerkungen zu weiterführenden Konzepten wie Rochade und Enpassant-Schlagen folgen.
Bitte schauen Sie bei Gelegenheit nach der endgültigen Version.