Computer Chess Club Archives


Search

Terms

Messages

Subject: Uri's ETC

Author: rasjid chan

Date: 01:38:22 03/24/04


I have to thanks Uri for his post about ETC, the dumb intelligent thing.

When I first read his post I could not understand what he
was talking and guess he must have invented a wheel that has no relation
whatever with the circle. I only understand transposition tables as
UB,LB and EXACT and cannot figure out anything else. Strangely, after
Dr Hyatt's (Englishman ?) reply I immediately know what ETC is and immediately
implemented it. Who understands ETC and don't implement it ?. I never did
for reasons I just joined this forum quiet just a little while ago and
.... chess programming has no beginning and no ending....
Later follow up by Dieter mentions things about extentions before / after
makemove that are a little too technical for me.

So if I have not missed out on deeper implications of ETC, here's
why I have great savings :-

1) my extentions are all computed before makemove as I generate
   all legal moves with a check bit, etc.. so I don't (or yet need)
   extentions after makemove. Probing hash before / after makemove
   is the same.

2) my make / unmakemove happen to be fairly costly, with
  incremental updates of many things, PST eval() score as recommended
  by Ed, bitmaps bits[6][6], allbits,piececount, material, etc
  One big item, the attack bitmaps of the 2 kings as queens. This is
  most costly, one that I dislike throwing away and that lowers NPS most.

  The dumb thing to do is linear thinking -
  makemove(), hashkeY() , if (repetition3()) unmakemove(),
  score = -search(...)
  and inside search:-

  int search(depth, alpha, beta){
    if (probehash() == cutoff)
    return score.
   ......
  }
  followed by unmakemove()... very costly indeed !


 So what is ETC ?. Enlightened Transposition Cutoff or
 Eager to Try Cutoff.

 So now I have the following sequence:-
 1) push update hashkey before makemove(), cost == nil
 2) if repeition3() goto NO_SEARCH; big savings when hit.
 3) score = -hash_cutoff_before_makemove(depth - 1, -beta, -alpha);
    if (score == cutoff) goto NO_SEARCH;
    biggest savings whenever it is a cutoff at cost == almost nil. I cannot
    find anything much cheaper than a function call with a hash probe.
 4) makemove();.... score = -search();...etc..

 So is there anyone out there not doing ETC
 or IS THIS ETC ?

 Rasjid



This page took 0.01 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.