Computer Chess Club Archives


Search

Terms

Messages

Subject: Schachprogrammierung - Wissenswertes (Beobachtungen, german)

Author: Eduard Nemeth

Date: 06:05:16 04/10/03


WISSENSWERTES – TEIL 1

Beobachtungen bei der Programmierentwicklung
Einige Aspekte

Trojanerblocker – wie alles begann

Irgendwann im Jahr 2000 spielte ich für die damaligen Verhältnisse eine sehr
ungewöhnliche Partie gegen Shredder 5 (nicht mit S5.32 zu verwechseln bitte!).
Hier ist sie:

[Event "120'/40+60'/20,P600,64Mb"]
[Site "?"]
[Date "2000.??.??"]
[Round "?"]
[White "Nemeth, E."]
[Black "Shredder 5"]
[ECO "D53"]
[Result "1-0"]
1. d4 {2s} Nf6 {Buch 0s} 2. c4 {1s} e6 {Buch 0s} 3. Bg5 {1s
(Sc3)} Be7 {Buch 0s} 4. Nc3 {1s} d5 {Buch 0s} 5. e3 {5s}
O-O {Buch 0s} 6. h4 {1:01m (Sf3)} h6 {+0.19/13 5:45m}
7. Nh3 {3:30m (cxd5)} hxg5 { +0.48/12 15:54m} 8. hxg5
{4:11m} Nfd7 {+0.63/10 2:51m} 9. Qh5 {5s} Ne5 {-3.68/10
5:21m} 10. Nf4 {2:23m} f6 {-M7/11 4:08m} 11. g6 {11s} Nxg6
{-M6/14 2:41m} 12. Qh7+ {6s} Kf7 {-M5/16 6:54m} 13. Qxg6+
{7s} Kg8 {-M4/16 6:31m} 14. Rh7 {8s} Rf7 {-M3/14 2:52m}
15. Qh5 {5s} g6 {-M2/15 6:08m} 16. Qxg6+ {15s} Kf8 {-M1/14
0s} 17. Qxf7# {7s} 1-0

Ich setzte Shredder 5 auf einem P600 MHz fast unglaublich auf Turnierstufe 2h in
nur 17 Zügen Matt! Diese Partie sorgte für Aufsehen, und so schrieb ich damals
meinen ersten Artikel über Trojaner, zunächst online, und er befindet sich auf
der Homepage von Steffen Jakob, dem Programmierer von HOSSA (Danke Steffen).
Steffen editierte meinen Text in einen sehr schönen HTML-Code – ich war richtig
begeistert! Danke Steffen.

Irgendwann danach sollte zum ersten Mal eine Shredder Engine erscheinen die
Multi-Prozessorfähig ist. Tatsächlich kam dann eine solche Version heraus mit
dem Namen „Deep Shredder“. Programmierer Stefan Meyer-Kahlen machte mich selbst
darauf aufmerksam dass diese neue Version gegen Trojaneropfer nun gerüstet ist.
Ich konnte mich davon dann selbst auch überzeugen.

Hier ein neues Beispiel (eine von mir dazu erfundene Stellung):

[r1b2rk1/pp2bpp1/1qn1pn1p/6B1/2PpP2P/3P2PN/P1P2PB1/1N1Q1K1R b - - 0 1]


Und hier die Analyse von Shredder5 im Multivariantenmodus:

11 0:34 +8.60 1...hxg5 2.hxg5 (3.992.580) 115.9
11 0:45 +6.65 1...e5 2.Lxf6 Lxf6 3.Ke2 Lg4+ 4.f3 Le6 5.Sf2 Da5 6.a3 Tac8 7.De1
Lg4 (5.387.409) 117.1
11 0:51 +6.56 1...Db2 2.Lxf6 Lxf6 3.a3 Le7 4.Ke2 Lxa3 5.Sxa3 Dxa3 6.Da1 Dd6 7.c3
Ld7 (6.013.789) 117.8
11 0:57 +6.52 1...Td8 2.Lxf6 Lxf6 3.Sf4 Db2 4.a3 Le7 5.Ke2 e5 6.Sd5 Lg4+ 7.f3
Lxa3 8.Sxa3 Lxf3+ 9.Lxf3 Dxa3 (6.861.088) 118.8
11 1:14 +6.52 1...Ld7 2.Lxf6 Lxf6 3.Dc1 e5 4.Sg1 Le7 5.c3 f5 6.exf5 Lxf5 7.Ld5+
Kh7 8.Dc2 Lg4 (8.845.371) 118.4
11 1:00 +6.47 1...Da5 2.Lxf6 Lxf6 3.a3 Le7 4.Dc1 Ld7 5.Sf4 Tac8 6.De1 Dxe1+
7.Kxe1 e5 8.Lh3 (7.193.459) 119.0
11 1:23 +6.44 1...Tb8 2.Ld2 e5 3.c3 Td8 4.Le1 Lg4 5.f3 Le6 6.Sf2 (9.908.893)
118.6

Klar dass der Trojaner hier von S5 genommen würde, da in Shredder 5 ja keine
Anti-Trojaner Codes implementiert waren. Dennoch ist die Analyse in diesem Fall
korrekt, denn hxg5 ist der beste Zug!

Und nun der trojanersichere Deep Shredder:

Deep Shredder:

10 0:54 +6.25 1...e5 2.c3 Td8 3.Sg1 Db2 4.Se2 Dxa2 5.cxd4 Sxd4 6.Sbc3
(5.699.968) 103.8
10 1:02 +6.23 1...Da5 2.a3 e5 3.Dc1 Lg4 4.Db2 Tab8 5.Db5 Tfd8 6.Dxa5 Sxa5
(6.510.238) 103.9
10 1:25 +6.22 1...Db2 2.a3 e5 3.Dc1 Dxc1+ 4.Lxc1 Lg4 5.f3 Lh5 6.c3 dxc3
(9.002.374) 105.7
10 1:19 +6.13 1...Td8 2.Sf4 Db2 3.a3 Ld7 4.Se2 Se5 5.Dc1 Dxc1+ 6.Lxc1 La4 7.Lf4
(8.434.328) 105.4
10 1:47 +6.03 1...Tb8 2.c3 e5 3.Lf3 Td8 4.Kg2 dxc3 5.Sxc3 Db2 6.Lxf6 Lxf6 7.Sd5
(11.394.128) 106.1
10 2:19 +5.98 1...Te8 2.c3 e5 3.Lf3 Td8 4.Kg2 dxc3 5.Sxc3 Db2 6.Lxf6 Lxf6 7.Sd5
(14.825.340) 106.3
10 2:03 +5.95 1...Ld7 2.c3 Se5 3.Sf4 dxc3 4.Sxc3 Sfg4 5.Sh3 Lb4 6.Dd2
(13.116.656) 106.2
10 1:58 +5.93 1...Dc5 2.c3 e5 3.Lf3 Le6 4.Kg2 dxc3 5.Sxc3 Tad8 6.De2 Dd4
(12.582.521) 106.1
10 1:36 +5.88 1...Db4 2.Dc1 Da5 3.Db2 Td8 4.Sf4 e5 5.Lxf6 Lxf6 6.Sd5 Td6 7.Sxf6+
Txf6 (10.242.179) 106.0
10 3:01 +5.82 1...Da6 2.c3 e5 3.a4 Td8 4.Sg1 dxc3 5.Sxc3 Le6 (19.307.716) 106.4
10 2:51 +5.71 1...Se5 2.Sd2 Ld7 3.Lf4 Sfg4 4.Sg5 Db2 5.Sdf3 Ld6 6.Sxe5 Sxe5
(18.242.450) 106.5

Durch den Anti-Trojaner Code, ist nun der korrekteste Zug gänzlich verschwunden!

Nun, bei solchen Trojaner-Stellungen wirkt sich eine solche Analyse nur
geringfügig aus, da solche Stellungen in der normalen Praxis kaum vorkommen.

Dass Fritz 8.0023 nun auch seine Züge ähnlich wie Shredder verschwinden lässt,
ist deshalb etwas tragischer, weil bei Fritz diese Technik nun nicht nur allein
für Anti-Trojaner Strategien gebraucht wird, sondern sogar für ganz normale, in
der Praxis relevante Varianten! Ich hoffe nun, dass sich diese, hier
veranschaulichte Programmiertechnik, künftig nur noch auf Trojaner-Stellungen
beschränken wird, denn ansonsten werden die Engines die solche Techniken auch
bei anderen Stellungsmustern anwenden, langsam aber sicher, für Analysen
bedenklich.

Anbei noch eine Multi-Analyse von Ruffian 1.0.1 der so was gar nicht nötig hat
und dennoch als Freeware Engine in der Liga der Profis sehr gut mitmischt:

Engine: Ruffian 1.0.1
von Perola Valfridsson

11 1:35 +7.35 1...hxg5 2.hxg5 Sh7 3.f4 Db2 4.Sf2 Td8 5.Sd2 Lb4 6.Th5 Dxa2 7.Kg1
(29.127.579) 304.6
11 1:35 +5.60 1...Db2 2.Lxf6 Lxf6 3.a3 Le7 4.Kg1 Lxa3 5.Sxa3 Dxa3 6.Kh2 e5 7.Dh5
(29.127.579) 304.6
11 1:35 +5.53 1...e5 2.Lxf6 Lxf6 3.Dc1 Lg4 4.Kg1 Da5 5.a3 Dc5 6.f3 Lh5 7.Kh2
(29.127.579) 304.6
11 1:35 +5.42 1...Tb8 2.Lxf6 Lxf6 3.a3 Dc5 4.Ke1 Ld7 5.f4 Da5+ 6.Dd2 Db6 7.Dc1
Tbc8 (29.127.579) 304.6
11 1:35 +5.41 1...Ld7 2.Lxf6 Lxf6 3.Dc1 Da5 4.Da3 Dc7 5.Db2 Tad8 6.Ke1 Da5+
7.Sd2 Sb4 (29.127.579) 304.6
11 1:35 +5.36 1...Td8 2.Lxf6 Lxf6 3.Dc1 e5 4.Lf3 Le6 5.Kg2 Dc5 6.Kh2 Sb4 7.Db2
(29.127.579) 304.6

So stelle ich mir die zukünftige Programmierung vor!

Eduard

TEIL 2

Mustererkennungen
Beispiel Fritz

Hierbei geht es nicht um das Verschwinden von Zügen, um z.B.
Anti-Computer-Strategien entgegenzuwirken wie im ersten Teil!

Anhand der folgenden Stellung (und der Partie) möchte ich praktisch
veranschaulichen wie Fritz versucht, Schwächen  aus früheren Zeiten zu beheben.

Folgende Partie spielte ich irgendwann gegen Fritz 6a:

[Event "Blitz:30',P600,64Mb"]
[Site "?"]
[Date "2000.??.??"]
[Round "?"]
[White "Nemeth,Eduard"]
[Black "Fritz 6"]
[ECO "C22"]
[Result "1-0"]

1. e4 e5 2. d4 exd4 3. Qxd4 Nc6 4. Qe3 Nf6 5. Nc3 Bb4
6. Bd2 O-O 7. Bc4 Bxc3 8. Bxc3 Nxe4 9. O-O-O Nxc3 10. Qxc3
Qg5+ 11. Kb1 Qxg2 12. Nh3 Qe4 13. f4 d5 14. Rhg1 d4 15. Qg3
Qg6 16. Qh4 Qd6 17. Bd3 h6 18. f5 Kh8 19. Rxg7 Bxf5
20. Bxf5 Kxg7 21. Rg1+ Kh8 22. Nf4 Rg8 23. Ng6+ Rxg6
24. Bxg6 Kg7 25. Bxf7+ Kxf7 26. Qh5+ Ke7 27. Rg7+ Ke6
28. Qf7+ Ke5 29. Qh5+ Ke6 30. Rg6+ Ke7 31. Rxd6 Kxd6
32. Qxh6+ Kd5 33. Qg5+ Kd6 34. Qf4+ Kc5 35. Qxc7 Re8 36. a3
Re7 37. Qc8 b5 38. h4 Re5 39. b4+ Kb6 40. Qg4 Re1+ 41. Kb2
a5 42. h5 axb4 43. axb4 Rh1 44. Qg6 Rh4 45. Qg5 Rh2 46. h6
Rh1 47. Qc5+ Kc7 48. Qf8 Kb6 49. Qg7 Rh2 50. h7 Rxh7
51. Qxh7 Nxb4 52. Qd7 Nc6 53. Kb3 Kc5 54. Qf5+ Kb6 55. c4
dxc3 56. Kxc3 Nd8 57. Qf2+ Kc6 58. Qf6+ Kd7 59. Kd4 Nc6+
60. Kc5 Ne7 61. Qd6+ Ke8 62. Kxb5 Kf7 63. Kc5 Nf5 64. Qd7+
Kf6 65. Kd5 Nh6 66. Qe6+ Kg5 67. Ke4 Ng8 68. Qxg8+ Kf6
69. Qg4 Ke7 70. Ke5 Kf7 71. Qg5 Kf8 72. Ke6 Ke8 73. Qe7# 1-0

Nette Partie oder?

Die kritische Stellung entstand nach 11.Kb1:

[r1b2rk1/pppp1ppp/2n5/6q1/2B5/2Q5/PPP2PPP/1K1R2NR b - - 0 1]

Nun, Fritz 6 nahm damals den Bauer auf g2 und ich bekam Angriff. Ich bin
überzeugt davon dass bei exaktem Spiel von schwarz, auch nach Dxg2 schwarz etwas
besser steht. Es ist nur nicht einfach danach, immer den exakten
Verteidigungszug zu finden. Darum hat weiss praktisch gute Angriffschancen. Da
Programme zudem bekanntlich keine Furcht kennen, laufen sie Gefahr, wie Fritz 6
zu sorglos zu agieren bis dann auch noch der Horizonteffekt einschlägt!

Als dann der neue Fritz 7 kam (nicht nur Fritz 7 NO MMX), da staunte ich als ich
sah dass Fritz 7 sehr schnell den Zug Dxg2 verwirft.

Fritz 7 muss demnach etwas gelernt haben. Wie man am Beispiel von Fritz 8.0023
in neuester Zeit sehen konnte, schaut sich der Fritz-Programmierer meine Partien
an, und so denke ich dass auch diese Partie/Variante hier, dem Programmierer
nicht entgangen ist.

Es fragt sich nun: wie hat Fritz 7 gelernt,  den Bauer auf g2 nicht mehr zu
schlagen?

Um dem etwas näher auf die Schliche zu kommen, habe ich eine etwas absurde
Stellung erfunden.  Diese hier:

[r1b2rk1/pppp1ppp/2n5/6q1/2B5/P1Q5/1PP2PPP/RK3RN1 b - - 0 1]

Nun kann schwarz bedenkenlos auf g2 schlagen, da ja der weisse König erst einmal
ziehen müsste, damit weiss einen richtigen Angriff aufbauen könnte. Das aber ist
kaum machbar! Mit einigen Analysen, fand ich stets Paraden des weissen Angriffs
wobei es meist dazu kam dass schnell in ein Damenloses fast Endspiel kam in dem
Schwarz dann einen Bauern mehr hatte. Zwar hätte schwarz nach d6 ebenfalls einen
Bauern mehr samt guter Mobilität, weil der schwarze Läufer ins Spiel gebracht
wird. Dennoch ist das Schlagen des Bauern etwas besser weil es wie erwähnt bald
zum Abtausch von Figuren käme. Alle anderen Züge sind wegen der schlechten
weissen Königsstellung deutlich schlechter!

Schauen wir uns erst einmal die Analyse der Fritz 7 NO MMX Engine im
Multi-Varianten-Modus an – denn das ist die letzte Engine der 6.
Fritzgeneration:

Analysis by Fritz 7 (No MMX):

1. µ (-1.19): 1...Dxg2 2.Sf3 Dh3 3.Tg1 Dh6 4.Ld3 d5 5.Sg5 f5 6.h3
2. µ (-1.06): 1...d6 2.Sf3 Dc5 3.Dd3 Te8 4.Dd5 Dxd5 5.Lxd5 Le6 6.Lxc6
3. µ (-1.03): 1...De5 2.Dxe5 Sxe5 3.Lb3 d6 4.Te1 Sg4 5.Sf3 Sxf2 6.Te2
4. µ (-0.91): 1...Dh5 2.Sf3 d6 3.Le2 Te8 4.Te1 Dg6 5.Ld3 Txe1+ 6.Dxe1
5. µ (-0.84): 1...d5 2.Sf3 Dxg2 3.Ka2 Dh3 4.Lxd5 Le6 5.Lxe6 fxe6 6.Tg1
6. µ (-0.81): 1...g6 2.g3 d6 3.f4 Dc5 4.b4 Db6 5.Te1 Le6 6.Txe6
7. µ (-0.75): 1...Df5 2.Sf3 d5 3.Lb5 Dg6 4.Te1 Ld7 5.Td1 Tfd8 6.Txd5
8. µ (-0.75): 1...Df4 2.Sf3 d6 3.Te1 Lg4 4.Ld5 Lxf3 5.g3 Dh6 6.Dxf3
9. µ (-0.72): 1...Da5 2.Dxa5 Sxa5 3.Ld5 Te8 4.b4 Sc6 5.Sf3 d6 6.b5
10. ³ (-0.69): 1...Dg4 2.Sf3 d6 3.h3 Dh5 4.Te1 Dc5 5.Db3 Ld7 6.Te3
11. ³ (-0.69): 1...Dg6 2.Sf3 d6 3.Ld3 Dh5
12. ³ (-0.66): 1...Dh4

Er würde hier in einer Multivarianten-Analyse den Bauer auf g2 nehmen. Der Plan,
die Reihenfolge der Züge und die Bewertung sind insgesamt korrekt.

Nun schauen wir uns was der neue Fritz 8.0023 machen würde, Fritz 7.008 steht
ähnlich da.
Um schneller in die Tiefe zu kommen, habe ich hier nur den 7 Varianten-Modus
gewählt:


Analysis by Fritz 8.0023:

1. µ (-1.03): 1...d6 2.Se2 Te8 3.f4 Dc5 4.Ld3 Lf5 5.Dxc5 dxc5 6.Sc1 Sd4 7.Td1
2. µ (-0.88): 1...De5 2.Dxe5 Sxe5 3.Lb3 d6 4.f4 Sg6 5.Se2 Le6 6.Ka2 Tfe8 7.Tae1
3. µ (-0.84): 1...Dh5 2.Dh3 Dxh3 3.Sxh3 d6 4.Sf4 Te8 5.Ld3 Se5 6.Te1 Lg4
4. µ (-0.84): 1...d5 2.Sf3 Dh5 3.Lb5 Ld7 4.Td1 Tad8 5.Lxc6 bxc6 6.De5 Dg4 7.Tg1
Dc4
5. µ (-0.84): 1...Dg4 2.Ld5 d6 3.h3 Da4 4.Te1 Lf5 5.Se2 Tfe8 6.b3 Db5
6. µ (-0.78): 1...Df5
7. µ (-0.75): 1...Dxg2 2.Sf3 d5 3.Ka2 Dh3 4.Lxd5 Le6 5.Lxe6 fxe6 6.Tg1 e5 7.Dc4+
Kh8 8.Tg3

Man sieht dass bei Fritz 8.0023 der Zug Dxg2  an letzter Stelle steht. Laut
Fritz 8.0023 sind sogar Züge wie Qf5 und Qg4 besser als das Nehmen des Bauern
auf g2! Interessant oder?

Interessant ist auch die Beobachtung, dass der beste Zug für F80023 hier d6 ist.

Und was ist die Hauptvariante dieses Zuges?

Hier:

1. µ (-1.03): 1...d6 2.Se2 Te8 3.f4 Dc5 4.Ld3 Lf5 5.Dxc5 dxc5 6.Sc1 Sd4 7.Td1

Wir sehen dass kein Schlagen „von Bauern“ in der kompletten Variante vorkommt.

Der Mobilität von Figuren wird in diesem Stellungstyp also Vorrang gegeben!

Das ist für die Ursprungstellung nach Kb1, wie in meiner Partie gegen Fritz 6,
genau richtig, aber nachdem ich den weissen Turm völlig deplaziert habe, so
trifft das so nicht mehr zu, und das Nehmen des Bauern auf g2 gehört im
7-Varianten Modus, daher nicht an die letzte Stelle!

Eduard




This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.