Computer Chess Club Archives


Search

Terms

Messages

Subject: Tablebase Idea

Author: bob o

Date: 03:21:00 04/13/02


First, I am not a proficient software programmer; I last did a programming
project freshman year of college, and reading tbgen.cpp blew me away and maybe
the answer is in there somewhere.

Anyhow, I had an idea for modifying tablebase files, please correct me if my
assumptions are wrong. As I understand it, the file contains all the positions,
whether it's a win/loss/draw, how many moves till mate/conversion, and the best
move.

Instead of all that, why not this setup: Identify all the possible moves that
are possible with the pieces left on the board. Then organize all the positions
into groups by the best objective move (you can use the current files for this).
Next, try to find some sort of rules or patterns that you can summarize, perhaps
using wildcards. And during the game, generate all the moves that are possible,
and search in them for what rules apply***.

For example, let's say that there is the KQK endgame. The white queen is on a1,
the white king is on b1, and the black king is on h1, h2, h3..h8 (anywhere on
the h-file that is a legal position), then assume that the tablebase says the
best move is Kc2. (I haven't checked this out for sure, but just assume that it
is for sake of simplicity). Then you can have something like this:

wq=a1 wk=b1 bk=h* best_move=Kc2

and the wildcard would compress 8 positions into 1.

You could take the file that is generated by grouping by best move, compress it
using wildcards, and compress it again with some modified form of datacomp.

Possible pros:
1. can use currently available files
2. possible large savings in file sizes making 6-man and 7-man TB's feasible
(assuming they can be generated)

Possible cons:
1. must test to see if this scheme would save space
2. I don't know how to incorporate DTC/DTM into the wildcard statement-
different positions may have different DTM's
3. someone would have to write the software to do this
4. possible large amount of data processing on-the-fly during the game (I think
this is the biggest drawback, but maybe someone can come up with a clever way to
minimize this)

Please forgive me if this question seems really ridiculous or if that is how
things are done already. I just tried reading the tbgen.cpp file, and I was
really lost- I'm an industrial engineer, not a computer engineer. Hopefully, one
of the experts here will understand what I am talking about, and maybe come up
with a better idea.

Just an idea, possibly someone wiser than I can make improvements on it and make
it work. Maybe it's a really bad idea, but sometimes the only bad question is
the unasked question...

***Side question: is this already how it's done? If not, would it be more
efficient? Or do you just look for the position in the database?

Thanks for your advice/opinions!

Bob



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.