On Sat, 2006-10-14 at 14:21 -0700, Dave Dyer wrote:
> If the search was depth first, and you seeded the search with some
> well played games, then alpha beta pruning ought to result in some
> truely enormous reductions in the search space.


Hi Dave,

I want the hybrid system to be able to evaluate ANY position, not just
starting from the opening.

Once the system is completed a search will work like this:

  1.  From the supplied position, we perform an exhaustive alpha/beta
      search.

  2.  As we encounter each node, we check to see if the current
position 
      matches the  bloom filter.   We have 2 cases:

      A)   The position gets a positive hit in the bloom filter.
           
           If a position gets inserted into the bloom filter it's
           because the evaluation is known to be incorrect - so we
           continue searching.

           A bloom filter occasionally returns a false positive, but
           that does not affect the admissibility of the algorithm.

      B)   The position is NOT in the bloom filter.  In this case we
           have the assurance that the score bound returned from the
           evaluation function is correct.  So we stop searching if
           the lower bound is >= beta, or the upper bound is <= alpha.

           Of course we may be required to continue searching.


The hope is that we will perform a relatively small search, which
likely will be deep and narrow and be able to solve any position in a
short amount of time.

The static evaluation is what is "judged" and sometimes veto'd by the
bloom filter.  

The static evaluation will return a LOWER bound and an UPPER bound on
the score, and will sometimes be WRONG.  The required size of the
bloom filter is a function of how many times the evaluation function
returns the bounds incorrectly.  

The conflicting goals of the evaluation function is to be RIGHT as
often as possible and still return the tightest possible bounds
reasonably possible.

Someone mentioned KO positions as needing to be represented in the
table.  My solution (and I'm still thinking this through) is to only
consider simple KO and consider each position in the "pseudo database"
as a position with no history.  If a position is encountered that is
dependent on history (a potential capture is illegal due to simple KO)
then it is treated as if it were found in the filter - we consider it
as not being understood and continue to search.

I'm more optimistic about this than I was before.  This is because I
can imagine that a standard searching program with a good evaluation
might play close to perfect even with a realtively shallow search.  So
I can also imagine a program using this "heuristic database" might be
able to do an exhaustive search taking advantage of the bounds and
scores that the database can understand which are perfect.  We know a
program already exists that can ALMOST do an exahustive search from
the opening position without such a database.

- Don


_______________________________________________
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Reply via email to