My review of Strelka Code

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

User avatar
Eelco de Groot
Posts: 4565
Joined: Sun Mar 12, 2006 2:40 am
Full name:   

Re: My review of Strelka Code

Post by Eelco de Groot »

Thomas Mayer wrote:Hi Werner,
Werner wrote:are there different Strelka version in the net?
Here is a evaluation of your first game move nr. 44 e.g.
before I start to answer I must repeat the following sentence:

Since Bryan & Dann have said that Strelka is no clone this decision is final, Strelka is no clone. -> Just to prevent some crazy inhabitants of the planet dune from attacking me.

While analysing around a bit with Strelka I found out that it produces from time to time quite different "analysis", lines and nodecounts. The only quite secure way to get the same "analysis" was to restart if after every search. And now guess which engine has the same behaviour... :) (But of course not only Rybka, there are a lot others...)
With that in mind it's quite possible that it produced in game a very different line & score

Greets, Thomas
Mmm, don't think it is possible to get from +0.78 Kd2e3 Ke3-f4 to -1.43 Kd2-c2 Kc2-b3 with Rybka just because the hash content is not the same.

Neither with Strelka I think or something went seriously wrong in Dann's compilation.. Please don't put this also on Mr. Osipov's head Thomas, I think that is a bit preposterous. Sorry, not to you personally Thomas but I agree with Dann that there are much more differences than similarities between Strelka and Rybka, so much so that I don't think the reverse engineering theory makes much sense and neither does the clone theory hold any water, given Dann's and Brian's review of the source code.

Can't explain the games though, maybe it was actually Beowulf playing here.. :wink:

Eelco
Dann Corbit
Posts: 12540
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: My review of Strelka Code

Post by Dann Corbit »

Rolf wrote:
Dann Corbit wrote:
Nid Hogge wrote:Agreed.

I mean, the "His engine uses techniques that are different than any other engine I have seen" part sounds VERY "Rybkaish".
Since we thought until now that Rybka an engine that is using something completely different or applying new breakthrough techniques.(It would be amazing coincidence if both thought about it alone, right?)

Since no one saw Rybka source(which suprised me too, I thought Bryan had it), You can't know the author didn't somehow decompiled Rybka and used her techniques in his own engine.

I have no idea how hard this task should be, but I'm quite sure there isn't anything impossible things to do this days.
If he had done that (and believe me, he hasn't) then he would have done nothing wrong. You cannot copyright an algorithm. Your source code belongs to you, but if someone reads it and translates it into another language then there is no wrongdoing involved. This has been demonstrated repeatedly in courts. If there were a patent on the Rybka algorithms, then it would be some kind of violation. While I will obey laws on software patents, just because they are laws and I obey laws, I think that these laws are immoral.
My hero says:
http://lpf.ai.mit.edu/Patents/knuth-to-pto.txt
Open debate on the subject:
http://en.wikipedia.org/wiki/Software_patent_debate

Here is the outcome of software patents (there are many more like this):
http://www.foxnews.com/story/0,2933,272436,00.html
http://yro.slashdot.org/article.pl?sid=07/05/10/1653216

Anyway, I will get off my anti-patent soap box now. At any rate, there is literally no way that Yuri could possibly have done anything wrong. If someone else wants to raise a fuss, I am going on the record as saying it is nothing but mindless persecution now. Give it a *DAMN* rest.
So one possibility is that this is no ordinary 'Clone' I.E it's not a copied binary that is trying to hide it roots, it's an engine that is using methods of another engine. Something which is illegal AFAIK, and much worse ethically than just cloning.

I guess it's time for Vasik to apply some Obfuscation on his code in order to protect it. There are many programs out there that do just that(I think, that it).. Should be considered to protect your ideas etc from potential attempts to steal your code.

Edit : Question for the experts, please:
Is it technically possible(no matter how hard), to do what I just describe above? If so, is there any way to be aware of it, and be 100% sure this is original work?

And, BTW, One more theoreticall thought:

1. Since now we know only Vasik can recognize his own code.. And the code is being sent to him to be approved, And the scenario I described above is the real case, Wouldn't it be very painful\dangerous for him to admit that the code is his? I mean.. already several proggramers have seen his private code & original methods..
(Not saying that anyone would use it in their own engines, just saying it's private and would be put him in possible danger of revealing his secrets..)



Something is somewhat difficult to understand for me. Let me make my statement and please tell me if this gives what you had stated with your long messages.

Bryan had clarified that Strelka is by no mean a clone. (true/false)
true

Dann formerly also stated that Strelka is not a clone. (true/false)
true

Dann now makes the following statement. Strelka is no original and new program, but it could be a sort of transposition from the binary into another language. But since algorithms cant be protected and therefore there cant be a wrong-doing by "Yuri". (true/false)
I did not make that statement. I suggested it would be possible to embed Rybka into a program as a large data statement and this was tested for. This is not found in the source and therefore it is not a concern.


What did I have wrong? - Thanks for clarification.
What you had wrong was that the third option was also false. There is no embedded binary program in Strelka.
Dann Corbit
Posts: 12540
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: My review of Strelka Code

Post by Dann Corbit »

My soapbox speach about the patents really has no bearing on this example (except that even if Yuri had reverse engineered Rybka it would not be a crime). It is totally clear to me that he has not done that. As I watched the two programs play each other, it is painfully clear that they neither evaluate nor search the same.
Dann Corbit
Posts: 12540
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: My review of Strelka Code

Post by Dann Corbit »

Eelco de Groot wrote:
Thomas Mayer wrote:Hi Werner,
Werner wrote:are there different Strelka version in the net?
Here is a evaluation of your first game move nr. 44 e.g.
before I start to answer I must repeat the following sentence:

Since Bryan & Dann have said that Strelka is no clone this decision is final, Strelka is no clone. -> Just to prevent some crazy inhabitants of the planet dune from attacking me.

While analysing around a bit with Strelka I found out that it produces from time to time quite different "analysis", lines and nodecounts. The only quite secure way to get the same "analysis" was to restart if after every search. And now guess which engine has the same behaviour... :) (But of course not only Rybka, there are a lot others...)
With that in mind it's quite possible that it produced in game a very different line & score

Greets, Thomas
Mmm, don't think it is possible to get from +0.78 Kd2e3 Ke3-f4 to -1.43 Kd2-c2 Kc2-b3 with Rybka just because the hash content is not the same.

Neither with Strelka I think or something went seriously wrong in Dann's compilation.. Please don't put this also on Mr. Osipov's head Thomas, I think that is a bit preposterous. Sorry, not to you personally Thomas but I agree with Dann that there are much more differences than similarities between Strelka and Rybka, so much so that I don't think the reverse engineering theory makes much sense and neither does the clone theory hold any water, given Dann's and Brian's review of the source code.

Can't explain the games though, maybe it was actually Beowulf playing here.. :wink:

Eelco
I did a profile guided optimization and it may cause different behavior than the stock binary.
Dann Corbit
Posts: 12540
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: My review of Strelka Code

Post by Dann Corbit »

Eelco de Groot wrote:Very strange, I can't reproduce the evals in Dann's first game either, but the analysis output for the position at move 44 that Strelka gives here is identical to yours Werner:


17.00 0:09 -3.04 44.Kf4 Kd6 45.Kg3 Thh8 46.g5 Kd5
47.Kf4 Kc4 48.g6 Ta7 49.Thc2 Tg8
50.Kg5 Tf8 51.Kg4 Tf6 52.Kg5 Tf5+
53.Kg4 (11.226.780) 1188

18.00 0:49 -3.32 44.Kf4 Kd6 45.Ke3 Kd5 46.Kd3 e5
47.dxe5 Kxe5 48.Ke3 Kd5 49.Kd3 Ta7
50.Ta1 Ke5 51.Tf1 Td7+ 52.Kc2 a2
53.Te2+ Kd6 54.Td2+ Kc7 55.g5 Txd2+
56.Kxd2 (57.420.610) 1166

19.00 1:14 -3.37 44.Kf4 Kd6 45.Ke3 Kd5 46.Kd3 e5
47.dxe5 Kxe5 48.Ke3 Kd5 49.Kd3 Ta7
50.Ta1 Ke5 51.Ke3 Th8 52.Tf1 Te7
53.Tf5+ Kd6+ 54.Kf4 Td7 (87.755.096) 1179

20.00 2:01 -3.39 44.Kf4 Kd6 45.Ke3 Kd5 46.Kd3 e5
47.dxe5 Kxe5 48.Ke3 Kd5 49.Kd3 Ta7
50.Ta1 Ke5 51.Tf1 Tg7 52.Tf5+ Ke6
53.Tf3 Td7+ 54.Ke3 Ke5 55.Tfxh3 Txg4 (141.917.901) 1167

21.00 4:19 -3.46 44.Kf4 Kd6 45.Kg3 Thh8 46.g5 Kd5
47.Kf4 Kc4 48.g6 Thf8+ 49.Ke5 Tf3
50.g7 Te3+ 51.Kf6 Txc3 52.Tac2 Txc2
53.Txc2+ Kxd4 54.Kxe6 Tg8 55.Kf6 Kd5
56.Td2+ Ke4 (300.748.780) 1157

At move 33 for instance the movechoice is completely different from the game?

[D]r7/r6p/2p1p3/1p3pk1/1P1P4/p1P3PP/R2K4/R7 w - -

Engine: Strelka_10b (64 MB)
gemaakt door Juri Osipov


14.00 0:02 -1.31 33.Kc2 h5 34.Kb3 h4 35.gxh4+ Kxh4
36.Te1 Te7 37.Te3 f4 38.Tf3 Kg5
39.Tg2+ Kf5 40.Tg4 e5 41.dxe5 (2.614.556) 1188

15.00 0:04 -1.30 33.Kc2 h5 34.Kb3 Ta6 35.Tf1 T8a7
36.Tfa1 Ta4 37.h4+ Kg4 38.Te1 Kxg3
39.Txe6 f4 40.Tg6+ Kh3 41.Te2 Kxh4
42.Txc6 (5.314.739) 1186

16.00 0:06 -1.27 33.Kc2 h5 34.Kb3 Ta6 35.Tf1 h4
36.gxh4+ Kxh4 37.Tg1 Tf8 38.Tg6 f4
39.Ta1 f3 40.Tag1 Tf5 41.Th6+ Th5
42.Tf6 a2 43.Tf4+ Kxh3 44.Txf3+ Kh2 (7.866.281) 1190

17.00 0:11 -1.43 33.Kc2 h5 34.Kb3 Kf6 35.Te1 Ke7
36.Te3 Kd6 37.c4 bxc4+ 38.Kxc4 Ta6
39.Te1 Ta4 40.Kb3 T4a7 41.Te3 Kd5
42.Te5+ Kd6 (13.345.768) 1165

18.00 0:19 -1.46 33.Kc2 h5 34.Kb3 Kf6 35.Te1 Ke7
36.Te3 Kd6 37.c4 Ta6 38.Te5 bxc4+
39.Kxc4 Ta4 40.Kb3 T4a7 41.Te3 Ta6
42.Te1 Tg8 (22.708.385) 1144

19.00 0:30 -1.45 33.Kc2 h5 34.Kb3 Kf6 35.Te1 Ke7
36.Te3 Kd6 37.c4 Ta6 38.Te5 bxc4+
39.Kxc4 Ta4 40.Kb3 T4a7 41.Kc4 Ta6
42.Te3 Ta4 43.Te1 (35.239.612) 1162

20.00 0:53 -1.43 33.Kc2 h5 34.Kb3 Kf6 35.Te1 Ke7
36.Te3 Kd6 37.c4 Ta6 38.Te5 bxc4+
39.Kxc4 T6a7 40.Te3 Ta4 41.Kb3 T4a6
42.Kc4 T6a7 43.Kb3 Kd5 44.Te5+ Kd6 (62.528.820) 1178

21.00 1:36 -1.54 33.Kc2 h5 34.Kb3 Kf6 35.Te1 Ke7
36.Te3 Kd6 37.h4 Ta4 38.Td3 T8a7
39.Tf3 T4a6 40.Te3 Ta8 41.Te1 Ta4
42.Tae2 Te8 43.Ta1 (113.726.136) 1177

22.00 5:46 -1.43 33.Kc2 h5 34.Kb3 Kf6 35.Te1 Ke7
36.Te3 Kd6 37.c4 Ta6 38.Kc2 bxc4
39.Kc3 Tg8 40.Kxc4 Tga8 41.Kb3 Ta4
42.Tf3 Kd5 43.Te3 T4a7 44.Te5+ Kd6 (398.402.233) 1149

33.Ke3 (Kd2e3 Kg5f6 Ra1g1 h7h5 Ke3f4 Ra8g8 Rg1a1 Rg8a8 Ra1e1 Ra8g8 Re1e2 Rg8d8 Ra2a1 Rd8g8 Re2f2 Rg8d8) +0.78/16 23

I'm afraid it was not Strelka playing on Dann's computer but a very different engine...
I get this from a standing start:
[d]r7/r6p/2p1p3/1p3pk1/1P1P4/p1P3PP/R2K4/R7 w - -
E:\programme\winboard\strelka>strelka
new
post
setboard r7/r6p/2p1p3/1p3pk1/1P1P4/p1P3PP/R2K4/R7 w - -
go
1 -624 0 4 a2a3 a7a3
1 -83 0 7 d4d5 c6d5
1 76 0 19 h3h4 g5g4
1 97 1 26 d2e3
1 119 1 27 d2d3
2 118 1 117 d2d3 f5f4 g3f4 g5f4
3 133 3 480 d2d3 h7h5 a1e1
4 116 3 1870 d2d3 g5f6 a1e1 a7d7
4 145 3 3030 d2c2 g5f6 c2b3 a7g7
5 140 6 5104 d2c2 g5f6 c2b3 a7g7 a1g1
6 126 6 7780 d2c2 g5f6 c2b3 a7g7 a1g1 f5f4
7 126 7 17126 d2c2 g5f6 c2b3 a7g7 a1g1 h7h5 g1g2
8 113 7 27958 d2c2 g5f6 c2b3 a7g7 a1g1 h7h5 g1g2 f5f4
9 112 12 67314 d2c2 g5f6 c2b3 a7g7 a1g1 h7h5 h3h4 f5f4 g1f1
10 111 15 131405 d2c2 g5f6 c2b3 a7g7 a1g1 h7h5 h3h4 a8a7 g1g2 f5f4 g3f4 g7g2 a2g2
11 114 35 423305 d2c2 h7h5 a1e1 a7e7 h3h4 g5g4 e1e3 f5f4 g3f4 g4f4 c2d3 f4g4 e3e4 g4f5 a2f2 f5g6
12 103 82 1151527 d2c2 h7h5 a1e1 a7e7 c2b3 h5h4 e1e3 h4g3 e3g3 g5h4 g3f3 e7g7 f3e3
13 98 139 2057132 d2c2 h7h5 a1e1 a7e7 h3h4 g5g4 e1e3 e6e5 d4e5 f5f4 g3f4 g4f4 e3d3 f4e5 c2b3
13 106 289 4405880 c3c4 h7h5 a1e1 a7d7 d2c3 g5f6 e1f1 d7g7 f1f3 a8g8 g3g4 h5g4 h3g4 g7a7
14 57 885 13792316 c3c4 g5h5 d2e3 b5c4 a1c1 a7a4 c1c4 a8b8 c4c6 b8b4 c6e6 b4b3 e3f2 a4d4 e6e2
14 95 925 14427556 d2c2 h7h5 a1e1 a7e7 h3h4 g5g4 e1e3 e6e5 d4e5 f5f4 g3f4 g4f4 e3d3 f4e5 c2b3 e5f4
15 95 1125 17613014 d2c2 h7h5 a1e1 a7e7 h3h4 g5g4 e1e3 e6e5 d4e5 f5f4 g3f4 g4f4 e3d3 e7e5 c2b3 e5e1 d3d4 f4f5
16 80 1542 24348254 d2c2 a7g7 a1f1 h7h5 c2b3 h5h4 g3h4 g5h4 f1e1 g7e7 e1e3 f5f4 e3f3 e7f7 c3c4 h4g5 a2g2 g5f5 h3h4 b5c4 b3c4
17 73 3134 49647160 d2c2 a7g7 a1f1 h7h5 c2b3 h5h4 g3h4 g5h4 f1f2 g7g1 f2e2 g1b1 b3c2 b1g1 e2e6 g1g2 c2b3 g2a2 b3a2 f5f4 e6c6 h4h3
17 80 5032 79678814 a1e1 g5f6 d2e3 a7g7 e3f4 h7h5 e1a1 g7a7 a1f1 a7g7 f1h1 g7a7 h1b1 f6e7 b1b3 e7f6 f4e3
18 79 6970 110335082 a1e1 g5f6 d2e3 a7g7 e3f4 h7h5 e1a1 g7a7 a1f1 a7g7 f1h1 g7a7 h1g1 f6e7 f4e3 e7f6 g1d1 a7g7
19 66 10415 165685028 a1e1 g5f6 d2c2 a7g7 e1e3 a8g8 g3g4 g7a7 e3f3 h7h5 g4f5 e6f5 c2b3 g8g1 a2a3 a7a3 b3a3 f6g5 a3b3 f5f4 f3f2 g5f5
20 67 20620 326094310 a1e1 g5f6 d2c2 a7g7 e1e3 a8g8 g3g4 g7a7 e3f3 h7h5 g4h5 g8g2 c2b3 g2a2 b3a2 f6g5 f3g3 g5h5 g3e3 a7e7 a2a3 f5f4 e3e1
Guetti

Re: My review of Strelka Code

Post by Guetti »

Werner wrote:Hi Dann,
are there different Strelka version in the net?
Here is a evaluation of your first game move nr. 44 e.g.

Werner

Strelka - Rybka v1.0 Beta.w32, 20'/40+20'/40+20'/40
r7/4k3/2p1p3/1p2K3/1P1P2Pr/p1P4p/R6R/8 w - - 0 1

Analysis by Strelka:

44.Ta2xa3 Ta8xa3
-+ (-7.85) Tiefe: 1 00:00:00
44.Ke5-f4 Ta8-f8+ 45.Kf4-e5
-+ (-3.02) Tiefe: 1 00:00:00
44.g4-g5
-+ (-2.33) Tiefe: 1 00:00:00
44.g4-g5 Ke7-f7
-+ (-2.40) Tiefe: 2 00:00:00
44.g4-g5 Ta8-f8 45.Th2-f2
-+ (-2.59) Tiefe: 3 00:00:00
44.Th2-h1 Ke7-f7 45.Ta2-f2+ Kf7-e7
-+ (-2.32) Tiefe: 3 00:00:00
44.Th2-h1 Th4-h6 45.g4-g5 Th6-h8
-+ (-2.23) Tiefe: 4 00:00:00
44.Th2-h1 Th4-h7 45.g4-g5 Ke7-f7 46.Th1-h2
-+ (-2.36) Tiefe: 5 00:00:00
44.Th2-h1 Th4-h7 45.Th1-a1 h3-h2 46.Ta1-h1 Ta8-g8 47.Th1xh2 Th7xh2 48.Ta2xh2 Tg8xg4
-+ (-2.37) Tiefe: 6 00:00:00 12kN
44.Th2-h1 Ke7-d7 45.Th1-h2 Th4xg4 46.Th2xh3 Tg4-g5+ 47.Ke5-e4 Tg5-g1
-+ (-2.32) Tiefe: 7 00:00:00 31kN
44.Th2-h1 Ta8-g8 45.Ta2xa3 Tg8-g5+ 46.Ke5-e4 Th4xg4+ 47.Ke4-e3 Tg4-g3+ 48.Ke3-f2 Tg3-g2+ 49.Kf2-e3 h3-h2 50.Th1-f1
-+ (-2.44) Tiefe: 8 00:00:00 55kN
44.Th2-h1 Ta8-g8 45.Ta2xa3 Tg8-g5+ 46.Ke5-e4 Th4xg4+ 47.Ke4-e3 Tg4-g3+ 48.Ke3-f2 Tg3-g2+ 49.Kf2-e3 h3-h2 50.Ke3-f3 Ke7-f6
-+ (-2.65) Tiefe: 9 00:00:00 86kN
44.Ke5-f4 Ke7-f6 45.Kf4-g3 Kf6-g5 46.Th2xh3 Th4xg4+ 47.Kg3-f3 Ta8-a7 48.Kf3-e3 Tg4-g1
-+ (-2.52) Tiefe: 9 00:00:00 124kN
44.Ke5-f4 Ke7-d6 45.Kf4-g3 Th4-h8 46.Th2xh3 Th8xh3+ 47.Kg3xh3 Kd6-d5 48.g4-g5 Kd5-c4 49.Kh3-g4 Kc4xc3
-+ (-2.71) Tiefe: 10 00:00:00 234kN
44.Ke5-f4 Ke7-d6 45.Kf4-g3 Th4-h8 46.g4-g5 Kd6-d5 47.Kg3-f4 Kd5-c4 48.g5-g6 Kc4xc3 49.g6-g7 Th8-h4+ 50.Kf4-e5 Kc3xb4 51.Ke5xe6
-+ (-2.63) Tiefe: 11 00:00:00 377kN
44.Ke5-f4 Ke7-d6 45.Kf4-g3 Th4-h8 46.g4-g5 Kd6-d5 47.Kg3-f4 Kd5-c4 48.g5-g6 Kc4xc3 49.g6-g7 Th8-h4+ 50.Kf4-e5 Kc3xb4 51.Ke5xe6
-+ (-2.63) Tiefe: 12 00:00:00 559kN
44.Ke5-f4 Ke7-d6 45.Kf4-g3 Th4-h8 46.g4-g5 Kd6-d5 47.Kg3-f4 Kd5-c4 48.g5-g6 Th8-g8 49.Th2xh3 Tg8xg6 50.Kf4-e5
-+ (-2.61) Tiefe: 13 00:00:00 915kN
44.Ke5-f4 Ke7-d6 45.Kf4-g3 Th4-h8 46.g4-g5 Kd6-d5 47.Kg3-f4 Kd5-c4 48.g5-g6 Ta8-a7 49.g6-g7 Ta7xg7 50.Ta2xa3 Tg7-g2 51.Th2-h1 Th8-f8+ 52.Kf4-e4
-+ (-2.69) Tiefe: 14 00:00:01 1612kN
44.Ke5-f4 Ke7-d6 45.Kf4-g3 Th4-h8 46.g4-g5 Kd6-d5 47.Kg3-f4 Kd5-c4 48.g5-g6 Ta8-a7 49.g6-g7 Ta7xg7 50.Ta2xa3 Tg7-g2 51.Th2-h1 Th8-f8+ 52.Kf4-e3 Tg2-g3+ 53.Ke3-d2
-+ (-2.85) Tiefe: 15 00:00:01 2689kN
44.Ke5-f4 Ke7-d6 45.Kf4-g3 Th4-h8 46.g4-g5 Kd6-d5 47.Kg3-f4 Kd5-c4 48.g5-g6 Ta8-a7 49.g6-g7 Ta7xg7 50.Ta2xa3 Tg7-g2 51.Th2-h1 Th8-f8+ 52.Kf4-e5 h3-h2 53.Ke5xe6 Tg2-e2+ 54.Ke6-d6
-+ (-2.96) Tiefe: 16 00:00:03 5905kN
44.Ke5-f4 Ke7-d6 45.Kf4-g3 Th4-h8 46.g4-g5 Kd6-d5 47.Kg3-f4 Kd5-c4 48.g5-g6 Ta8-a7 49.Th2-c2 Th8-g8 50.Kf4-g5 Tg8-f8 51.Kg5-g4 Tf8-f6 52.Kg4-g5 Tf6-f5+ 53.Kg5-g4
-+ (-3.04) Tiefe: 17 00:00:07 11227kN
44.Ke5-f4 Ke7-d6 45.Kf4-e3 Kd6-d5 46.Ke3-d3 e6-e5 47.d4xe5 Kd5xe5 48.Kd3-e3 Ke5-d5 49.Ke3-d3 Ta8-a7 50.Ta2-a1 Kd5-e5 51.Ta1-f1 Ta7-d7+ 52.Kd3-c2 a3-a2 53.Th2-e2+ Ke5-d6 54.Te2-d2+ Kd6-c7 55.g4-g5 Td7xd2+ 56.Kc2xd2
-+ (-3.32) Tiefe: 18 00:00:40 57421kN
44.Ke5-f4 Ke7-d6 45.Kf4-e3 Kd6-d5 46.Ke3-d3 e6-e5 47.d4xe5 Kd5xe5 48.Kd3-e3 Ke5-d5 49.Ke3-d3 Ta8-a7 50.Ta2-a1 Kd5-e5 51.Kd3-e3 Th4-h8 52.Ta1-f1 Ta7-e7 53.Tf1-f5+ Ke5-d6+ 54.Ke3-f4 Te7-d7
-+ (-3.37) Tiefe: 19 00:00:52 87755kN
44.Ke5-f4 Ke7-d6 45.Kf4-e3 Kd6-d5 46.Ke3-d3 e6-e5 47.d4xe5 Kd5xe5 48.Kd3-e3 Ke5-d5 49.Ke3-d3 Ta8-a7 50.Ta2-a1 Kd5-e5 51.Ta1-f1 Ta7-g7 52.Tf1-f5+ Ke5-e6 53.Tf5-f3 Tg7-d7+ 54.Kd3-e3 Ke6-e5 55.Tf3xh3 Th4xg4
-+ (-3.39) Tiefe: 20 00:01:37 142mN

your line:
Kf4 {(Ke5f4 Ke7f6 Ra2a1 Ra8g8 Kf4f3 Kf6g5 Ra1xa3
Rg8f8+ Kf3e4 Rf8f5 Ke4d3 Kg5xg4 Ra3a7 Rf5f3+ Kd3d2 Kg4g3 Rh2h1 Kg3g2 Rh1e1
h3h2 Ra7g7+ Rf3g3 Re1e2+ Kg2f3 Rg7f7+ Kf3g4) -1.05/19 48}

(Werner, 15.05.2007)
Interestingly is the score of the opponent (Rybka v1.0 Beta) on the next move:

44. Kf4 {(Ke5f4 Ke7f6 Ra2a1 Ra8g8 Kf4f3 Kf6g5 Ra1xa3
Rg8f8+ Kf3e4 Rf8f5 Ke4d3 Kg5xg4 Ra3a7 Rf5f3+ Kd3d2 Kg4g3 Rh2h1 Kg3g2 Rh1e1
h3h2 Ra7g7+ Rf3g3 Re1e2+ Kg2f3 Rg7f7+ Kf3g4) -1.05/19 48} Kd6 {(Ke7d6 Kf4g3
Rh4h8 g4g5 Kd6d5 Kg3f4 Ra8a7 g5g6 Kd5c4 Kf4e5) +3.26/17 97}

Now 3.26 would be closer to your Strelka version.

But maybe Dann just mixed up the sides and White was Rybka and Black Strelka...
User avatar
Rolf
Posts: 6081
Joined: Fri Mar 10, 2006 11:14 pm
Location: Munster, Nuremberg, Princeton

Re: My review of Strelka Code

Post by Rolf »

Dann Corbit wrote:
Rolf wrote:
Dann Corbit wrote:
Nid Hogge wrote:Agreed.

I mean, the "His engine uses techniques that are different than any other engine I have seen" part sounds VERY "Rybkaish".
Since we thought until now that Rybka an engine that is using something completely different or applying new breakthrough techniques.(It would be amazing coincidence if both thought about it alone, right?)

Since no one saw Rybka source(which suprised me too, I thought Bryan had it), You can't know the author didn't somehow decompiled Rybka and used her techniques in his own engine.

I have no idea how hard this task should be, but I'm quite sure there isn't anything impossible things to do this days.
If he had done that (and believe me, he hasn't) then he would have done nothing wrong. You cannot copyright an algorithm. Your source code belongs to you, but if someone reads it and translates it into another language then there is no wrongdoing involved. This has been demonstrated repeatedly in courts. If there were a patent on the Rybka algorithms, then it would be some kind of violation. While I will obey laws on software patents, just because they are laws and I obey laws, I think that these laws are immoral.
My hero says:
http://lpf.ai.mit.edu/Patents/knuth-to-pto.txt
Open debate on the subject:
http://en.wikipedia.org/wiki/Software_patent_debate

Here is the outcome of software patents (there are many more like this):
http://www.foxnews.com/story/0,2933,272436,00.html
http://yro.slashdot.org/article.pl?sid=07/05/10/1653216

Anyway, I will get off my anti-patent soap box now. At any rate, there is literally no way that Yuri could possibly have done anything wrong. If someone else wants to raise a fuss, I am going on the record as saying it is nothing but mindless persecution now. Give it a *DAMN* rest.
So one possibility is that this is no ordinary 'Clone' I.E it's not a copied binary that is trying to hide it roots, it's an engine that is using methods of another engine. Something which is illegal AFAIK, and much worse ethically than just cloning.

I guess it's time for Vasik to apply some Obfuscation on his code in order to protect it. There are many programs out there that do just that(I think, that it).. Should be considered to protect your ideas etc from potential attempts to steal your code.

Edit : Question for the experts, please:
Is it technically possible(no matter how hard), to do what I just describe above? If so, is there any way to be aware of it, and be 100% sure this is original work?

And, BTW, One more theoreticall thought:

1. Since now we know only Vasik can recognize his own code.. And the code is being sent to him to be approved, And the scenario I described above is the real case, Wouldn't it be very painful\dangerous for him to admit that the code is his? I mean.. already several proggramers have seen his private code & original methods..
(Not saying that anyone would use it in their own engines, just saying it's private and would be put him in possible danger of revealing his secrets..)



Something is somewhat difficult to understand for me. Let me make my statement and please tell me if this gives what you had stated with your long messages.

Bryan had clarified that Strelka is by no mean a clone. (true/false)
true

Dann formerly also stated that Strelka is not a clone. (true/false)
true

Dann now makes the following statement. Strelka is no original and new program, but it could be a sort of transposition from the binary into another language. But since algorithms cant be protected and therefore there cant be a wrong-doing by "Yuri". (true/false)
I did not make that statement. I suggested it would be possible to embed Rybka into a program as a large data statement and this was tested for. This is not found in the source and therefore it is not a concern.


What did I have wrong? - Thanks for clarification.
What you had wrong was that the third option was also false. There is no embedded binary program in Strelka.

Thanks so much for answering to a lay in such a clarity. Perhaps the next new entry will get a better welcome than Rybka and Strelka.
-Popper and Lakatos are good but I'm stuck on Leibowitz
Bryan Hofmann

Re: My review of Strelka Code

Post by Bryan Hofmann »

Dann Corbit wrote:
tiger wrote:
gerold wrote:
tiger wrote:
Bryan Hofmann wrote:The code that was passed on to me plays the same as the released binary. It is original work and not a clone. If you have questions about the code or how it works I ask that you direct them to author as it is his work.


Bryan

Excuse me Bryan, AND I AM NOT SUGGESTING STRELKA IS A CLONE, but out of curiosity, how can you tell that a piece of code you are reading, even in source form, is "original work"?

I direct this question to you and not to the author because the certainty you are expressing tells me that you have seen an obvious proof of this "originality", and I have no idea what it can be.


// Christophe
Thanks for asking this question Christophe. I was hoping someone
would ask him.
I didn't want to ask him because he ask that all questions be put to
the author.

It's more a computer science question than an accusation of any sort.

I think I should have been more specific in my question to Bryan and not talk about any piece of code.

My question would then be: what in the Strelka source code makes you believe that it is not a clone of another program, and not a clone of Rybka in particular?

I think it is possible to answer this question by giving details that do not reveal secrets about the program. At least I hope so.


// Christophe
I agree with Brian. Although it uses parts of Beowulf's I/O, the engine itself is an original work (or if it started out as something else, it does not resemble it any more). I have read the source code to every open source engine and perhaps two dozen closed source engines. His engine uses techniques that are different than any other engine I have seen (by that I mean he implements things differently). In fact, it took me a couple hours to understand what he was really doing. Now as far as chess ideas go (alpha-beta, pvs, etc.) most of his stuff is not unusual. But he implements it differently than other programs I have seen. The sort of thing you would expect to see if someone read an article and then wrote an engine based on what he read, and then compared the engine of someone else who did the same thing. He has some approaches that are fresh and interesting.

He did use stuff from Beowulf, but it is only a trivial bit of I/O stuff. Perhaps it could possibly be a frankenstein of one dozen chess engines but I don't think that is what happened.

Here is the outline of my guess:

He wrote a chess engine using chess programming articles that had a proprietary interface. After some time, he found out about Winboard/Xboard, and decided to tack on a Winboard interface. He found Beowulf was easy for him to understand and so he used the I/O portion as a starting point (the exact Winboard functions supported by Beowulf and Strelka are different).

His code is not much like Fruit or Glaurung. If he used Beowulf's search and evaluation as a starting point, then it is a complete rewrite so that search and evaluation are no longer recognizeable (besides being 450 Elo or so stronger).

If he grabbed open source and copied from it to make his strong engine, then which?
I am familiar enough with the structure of:
Fruit
Glaurung
Scorpio
SlowChess
Crafty
to say for sure it is not a clone of any of those. With that having been said, then which strong open source engine has he borrowed from?

Whatever the case may be, I can say that he has done enough work making this engine to call it his own. He may certainly have collected ideas from some other engines, to make it stronger. But there is nothing wrong with that.

Thank you Dan for stepping in on this as I only read the forum at the end of the day, I see there has been an explosion of more doubts to which I concur with what you have said.

To all of the others that have doubts, Yuri placed an offer on the table to lay his source out with theirs and discuss chess (See his interview). So for you authors out there this leaves you a place to get your answers which is why I stated that you need to address them to him. To the other 99% of the people that were claiming it was a clone or still believe it is, you will either have to write a chess engine to be included in this conversation or be satisfied with the statements of Sergei, Dan and I.

Lastly for those interested I have been given permission to release my compile in which I was able to get a 15-20% increase on speed.

http://cito.atspace.com

Bryan
User avatar
VP
Posts: 577
Joined: Fri Jul 14, 2006 8:41 am
Location: Planet Earth

Re: My review of Strelka Code

Post by VP »

Bryan and Dann are experienced people, and they have examined Strelka code.
Facts as stated by them:
1. The public binary and compiled code executable play the same.
2. Rybka code is not freely available.
3.Chess engines are written by defining small problems, and solving them using algorithms.

Conclusion:
Since Strelka author did not have access to Rybka source when he wrote it (since he is sharing his code which plays the game similar to Rybka, and not only providing a binary), this is his original work.
In order to solve a very complex problem, you can break it into smaller problems. However, you may user the same algorithm to solve these smaller problems.
The point being made is, if he used a similar algorithm to solve a different problem, then what is wrong?

For me, Strelka is an original work, and kudos to the programmer,
Cheers,
Best Regards,

Varun

-What most people need to learn in life is how to love people and use things instead of using people and loving things.
User avatar
Eelco de Groot
Posts: 4565
Joined: Sun Mar 12, 2006 2:40 am
Full name:   

Re: My review of Strelka Code

Post by Eelco de Groot »

Dann Corbit wrote:
I get this from a standing start:
[d]r7/r6p/2p1p3/1p3pk1/1P1P4/p1P3PP/R2K4/R7 w - -
E:\programme\winboard\strelka>strelka
new
post
setboard r7/r6p/2p1p3/1p3pk1/1P1P4/p1P3PP/R2K4/R7 w - -
go
1 -624 0 4 a2a3 a7a3
1 -83 0 7 d4d5 c6d5
1 76 0 19 h3h4 g5g4
1 97 1 26 d2e3
1 119 1 27 d2d3
2 118 1 117 d2d3 f5f4 g3f4 g5f4
3 133 3 480 d2d3 h7h5 a1e1
4 116 3 1870 d2d3 g5f6 a1e1 a7d7
4 145 3 3030 d2c2 g5f6 c2b3 a7g7
5 140 6 5104 d2c2 g5f6 c2b3 a7g7 a1g1
6 126 6 7780 d2c2 g5f6 c2b3 a7g7 a1g1 f5f4
7 126 7 17126 d2c2 g5f6 c2b3 a7g7 a1g1 h7h5 g1g2
8 113 7 27958 d2c2 g5f6 c2b3 a7g7 a1g1 h7h5 g1g2 f5f4
9 112 12 67314 d2c2 g5f6 c2b3 a7g7 a1g1 h7h5 h3h4 f5f4 g1f1
10 111 15 131405 d2c2 g5f6 c2b3 a7g7 a1g1 h7h5 h3h4 a8a7 g1g2 f5f4 g3f4 g7g2 a2g2
11 114 35 423305 d2c2 h7h5 a1e1 a7e7 h3h4 g5g4 e1e3 f5f4 g3f4 g4f4 c2d3 f4g4 e3e4 g4f5 a2f2 f5g6
12 103 82 1151527 d2c2 h7h5 a1e1 a7e7 c2b3 h5h4 e1e3 h4g3 e3g3 g5h4 g3f3 e7g7 f3e3
13 98 139 2057132 d2c2 h7h5 a1e1 a7e7 h3h4 g5g4 e1e3 e6e5 d4e5 f5f4 g3f4 g4f4 e3d3 f4e5 c2b3
13 106 289 4405880 c3c4 h7h5 a1e1 a7d7 d2c3 g5f6 e1f1 d7g7 f1f3 a8g8 g3g4 h5g4 h3g4 g7a7
14 57 885 13792316 c3c4 g5h5 d2e3 b5c4 a1c1 a7a4 c1c4 a8b8 c4c6 b8b4 c6e6 b4b3 e3f2 a4d4 e6e2
14 95 925 14427556 d2c2 h7h5 a1e1 a7e7 h3h4 g5g4 e1e3 e6e5 d4e5 f5f4 g3f4 g4f4 e3d3 f4e5 c2b3 e5f4
15 95 1125 17613014 d2c2 h7h5 a1e1 a7e7 h3h4 g5g4 e1e3 e6e5 d4e5 f5f4 g3f4 g4f4 e3d3 e7e5 c2b3 e5e1 d3d4 f4f5
16 80 1542 24348254 d2c2 a7g7 a1f1 h7h5 c2b3 h5h4 g3h4 g5h4 f1e1 g7e7 e1e3 f5f4 e3f3 e7f7 c3c4 h4g5 a2g2 g5f5 h3h4 b5c4 b3c4
17 73 3134 49647160 d2c2 a7g7 a1f1 h7h5 c2b3 h5h4 g3h4 g5h4 f1f2 g7g1 f2e2 g1b1 b3c2 b1g1 e2e6 g1g2 c2b3 g2a2 b3a2 f5f4 e6c6 h4h3
17 80 5032 79678814 a1e1 g5f6 d2e3 a7g7 e3f4 h7h5 e1a1 g7a7 a1f1 a7g7 f1h1 g7a7 h1b1 f6e7 b1b3 e7f6 f4e3
18 79 6970 110335082 a1e1 g5f6 d2e3 a7g7 e3f4 h7h5 e1a1 g7a7 a1f1 a7g7 f1h1 g7a7 h1g1 f6e7 f4e3 e7f6 g1d1 a7g7
19 66 10415 165685028 a1e1 g5f6 d2c2 a7g7 e1e3 a8g8 g3g4 g7a7 e3f3 h7h5 g4f5 e6f5 c2b3 g8g1 a2a3 a7a3 b3a3 f6g5 a3b3 f5f4 f3f2 g5f5
20 67 20620 326094310 a1e1 g5f6 d2c2 a7g7 e1e3 a8g8 g3g4 g7a7 e3f3 h7h5 g4h5 g8g2 c2b3 g2a2 b3a2 f6g5 f3g3 g5h5 g3e3 a7e7 a2a3 f5f4 e3e1
Bryan thanks very much for the new compile!

Dann don't you think something strange is happening especially to the scores of your compilation version?

For the first plydepths PV and nodecounts are still the same, then they begin to differ slightly; 4;7;19;26;27;117;480;1870, and with the regular binary 4;7;19;26;27;117;477;1444
but the scores are roughly +1.4 to +0.8 pawns in your version, -1.4 pawns or less in the regular version, no matter what the plydepth is the difference is more than two pawns, and I don't think the score is inverted in your version, besides it is White to move? Output without game history or hash contents:


r7/r6p/2p1p3/1p3pk1/1P1P4/p1P3PP/R2K4/R7 w - -

Engine: Strelka_10b (64 MB)
gemaakt door Juri Osipov

1.00 0:00 -6.70 1.Txa3 Txa3 2.Txa3 Txa3 (4) 4

1.00 0:00 -4.08 1.d5 cxd5 (7) 7

1.00 0:00 -2.49 1.h4+ Kg4 (19) 19

1.00 0:00 -2.27 1.Ke3 (26) 26

1.00 0:00 -2.06 1.Kd3 (27) 27

2.00 0:00 -2.06 1.Kd3 f4 2.gxf4+ Kxf4 (117) 117

3.00 0:00 -1.85 1.Kd3 h5 2.Te1 (477) 477

4.00 0:00 -2.02 1.Kd3 Kf6 2.Te1 Td7 (1.444) 1444

5.00 0:00 -1.91 1.Kd3 Kf6 2.Kc2 Tg7 3.Txa3 Txa3
4.Txa3 Txg3 (4.954) 4954

6.00 0:00 -1.91 1.Kd3 Kf6 2.Kc2 Tg7 3.Txa3 Txa3
4.Txa3 Txg3 (8.274) 8274

6.00 0:00 -1.90 1.c4 Kf6 2.Kc3 Tg7 3.g4 fxg4 4.hxg4 (18.650) 1865

6.00 0:00 -1.57 1.Kc2 Kf6 2.Kb3 Tg8 3.g4 fxg4 4.Tf1+ Kg5
5.hxg4 Kxg4 6.Txa3 Txa3+ 7.Kxa3 (25.236) 2523

7.00 0:00 -1.46 1.Kc2 Kf6 2.Kb3 Tg8 3.g4 fxg4 4.hxg4 Txg4
5.Tf1+ Kg5 6.Txa3 Txa3+ 7.Kxa3 (32.938) 1097

8.00 0:00 -1.46 1.Kc2 Kf6 2.Kb3 Tg8 3.g4 fxg4 4.hxg4 Txg4
5.Tf1+ Kg5 6.Txa3 Txa3+ 7.Kxa3 (52.058) 1301

9.00 0:00 -1.46 1.Kc2 Kf6 2.Kb3 Tg8 3.g4 fxg4 4.Tf1+ Ke7
5.hxg4 Txg4 6.Txa3 Txa3+ 7.Kxa3 (81.071) 1158

10.00 0:00 -1.62 1.Kc2 Kf6 2.Kb3 h5 3.Tg1 Tg7 4.Tgg2 Tag8
5.Txa3 Txg3 (137.397) 1249

11.00 0:00 -1.54 1.Kc2 Kf6 2.Kb3 h5 3.Te1 Tg7 4.Te3 h4
5.gxh4 f4 6.Te1 (228.032) 1266

12.00 0:00 -1.57 1.Kc2 Kf6 2.Te1 Tg7 3.Te3 Tag8 4.g4 fxg4
5.hxg4 Ta7 6.Kb3 Txg4 7.Tf3+ Ke7
8.Txa3 Txa3+ 9.Kxa3 (545.388) 1298

13.00 0:01 -1.47 1.Kc2 Kf6 2.g4 fxg4 3.hxg4 e5 4.Tf1+ Kg5
5.dxe5 Te7 6.Te1 Kxg4 7.Kb3 Kf5
8.Tf2+ Ke6 (1.381.429) 1291

14.00 0:02 -1.31 1.Kc2 h5 2.Kb3 h4 3.gxh4+ Kxh4 4.Te1 Te7
5.Te3 f4 6.Tf3 Kg5 7.Tg2+ Kf5 8.Tg4 e5
9.dxe5 (2.614.476) 1300

15.00 0:04 -1.30 1.Kc2 h5 2.Kb3 Ta6 3.Tf1 T8a7 4.Tfa1 Ta4
5.h4+ Kg4 6.Te1 Kxg3 7.Txe6 f4
8.Tg6+ Kh3 9.Te2 Kxh4 10.Txc6 (5.314.452) 1305

16.00 0:06 -1.27 1.Kc2 h5 2.Kb3 Ta6 3.Tf1 h4 4.gxh4+ Kxh4
5.Tg1 Tf8 6.Tg6 f4 7.Ta1 f3 8.Tag1 Tf5
9.Th6+ Th5 10.Tf6 a2 11.Tf4+ Kxh3
12.Txf3+ Kh2 (7.868.624) 1309

17.00 0:10 -1.43 1.Kc2 h5 2.Kb3 Kf6 3.Te1 Ke7 4.Te3 Kd6
5.c4 bxc4+ 6.Kxc4 Ta6 7.Te1 Ta4
8.Kb3 T4a7 9.Te3 Kd5 10.Te5+ Kd6 (13.343.207) 1294

18.00 0:17 -1.46 1.Kc2 h5 2.Kb3 Kf6 3.Te1 Ke7 4.Te3 Kd6
5.c4 Ta6 6.Te5 bxc4+ 7.Kxc4 Ta4
8.Kb3 T4a7 9.Te3 Ta6 10.Te1 Tg8 (22.771.386) 1292

19.00 0:27 -1.45 1.Kc2 h5 2.Kb3 Kf6 3.Te1 Ke7 4.Te3 Kd6
5.c4 Ta6 6.Te5 bxc4+ 7.Kxc4 Ta4
8.Kb3 T4a7 9.Kc4 Ta6 10.Te3 Ta4
11.Te1 (35.292.166) 1297

20.00 0:48 -1.43 1.Kc2 h5 2.Kb3 Kf6 3.Te1 Ke7 4.Te3 Kd6
5.c4 Ta6 6.Te5 bxc4+ 7.Kxc4 T6a7
8.Te3 Ta4 9.Kb3 T4a6 10.Kc4 T6a7
11.Kb3 Kd5 12.Te5+ Kd6 (62.816.225) 1297

21.00 1:30 -1.43 1.Kc2 h5 2.Kb3 Kf6 3.Te1 Ke7 4.Te3 Kd6
5.c4 Ta6 6.Te5 bxc4+ 7.Kxc4 T6a7
8.Te3 Ta4 9.Kb3 T4a6 10.Kc4 T6a7
11.Kb3 Kd5 12.Te5+ Kd6 (117.226.681) 1288

21.00 2:31 -1.43 1.Kc2 h5 2.Kb3 Kf6 3.Te1 Ke7 4.Te3 Kd6
5.c4 Ta6 6.Te5 bxc4+ 7.Kxc4 T6a7
8.Te3 Ta4 9.Kb3 T4a6 10.Kc4 T6a7
11.Kb3 Kd5 12.Te5+ Kd6 (194.902.892) 1288

beste zet: Kd2-c2 tijd: 2:31.250 min n/s: 1.288.784 nodes: 194.902.892

Regards, Eelco