Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Alpha-Beta Conspiracy Search

Author: Vincent Diepeveen

Date: 11:25:21 10/05/03

Go up one level in this thread


On October 05, 2003 at 14:21:54, Vincent Diepeveen wrote:

>On October 04, 2003 at 22:22:33, Omid David Tabibi wrote:
>
>>On October 04, 2003 at 18:57:18, Vincent Diepeveen wrote:
>>
>>>On October 04, 2003 at 18:40:08, Russell Reagan wrote:
>>>
>>>Just put next in your engine:
>>>  - checks in qsearch at the first ply (or when you already did them
>>>    just stick to what you did now; in diep i do them at any ply in qsearch
>>>    btw, but most have problems controlling that so i do not mind it if you
>>>    just try 1 ply)
>>>  - nullmove search with window alfa,beta = -mate+1000,
>>>    so you'll find 100% sure a mate threat
>>>
>>>  - if you see a mate threat you extend that position by 1 ply and store
>>>    in hashtable this position got a mate extension.
>>>
>>>  - now you extend moves double sometimes. So recapture that gives extension,
>>>    you extend. If the same move also gives opponent a check, another extension.
>>>    So you can extend 2 plies then.
>>
>>2 plies extension at once? What if you detected a mate threat and played a move
>>which is a recapture and also checks the opponent? Extend by 3 plies?!
>
>right, works tactical very well. of course not so easy to tune.
>of course you won't end up searching veyr deep. 9 to 10 ply will be
>already a major depth :)
>
>But it solves tactical anything.
>
>>Seems a little frightening! But will try it tonight...
>>
>>Looking at Fritz's parameters, the default values are selectivity=2, and
>>futility pruning activated. So, we can assume that Fritz is using R=2. However,
>>looking at its analysis it rapidly reaches very deep while not ignoring any
>>significant tactical threats. That's also the case with Shredder, which uses
>>selectivity=-1 (it is not a typo, -1 ?!) and futility=2.
>>
>>Falcon's tactical strength is somewhat superior to that of Crafty, but comparing
>>it to other null-movers, Fritz and Shredder, it is way behind in tactics...
>
>>BTW, when in quiescence you detect that one side is in check, do you do the
>>following:
>
>>int quiesce(int alpha, int beta) {
>>    ...
>>    if (checked)
>>        return search(alpha, beta, 1);
>
>that would be pretty pricey as that can add another 7 plies of selectivity to
>the search :)
>
>No i just generate all moves and search all of 'em.
>
>>    ...
>>}
>>
>>
>>I haven't implemented checks in quiescence yet, but it seems inevitable...
>
>when it works well it is great to do so, when you don't manage to limit it, it's
>hell.
>
>>>>I don't think Christophe uses null move. At least, if he does, I don't think
>>>>it's the "main algorithm" contributing to Chess Tiger's strength. I remember
>>>
>>>May i beg your pardon?
>>>
>>>Without nullmove you can go home.
>
>>Junior and Rebel are good examples of non null-mover successful programs. And
>
>Really junior is searching a way which is nullmoving at any positional move
>already more or less.
>
>I guess they use some sort of principle like this:
>
>int alfabeta(depth,alfa,beta,side .. ) {
>  if( depth == 0 ) {
>    if( side )
>      evalscore = -INCSCORE;
>    else
>      evalscore = INCSCORE;
>    if( evalscore >= beta )
>      return evalscore;
>    score = SEE(side,evalscore); /* static exchange evaluation,
>      so an evaluation
>      that guesses whether side can win something without too much risk,
>      that gets added to the evalscore then simply and returned
>     */
>    return score;
>  }
>  generatemoves();
>  for all moves ( ;; ) {
>
>    if( movelosesmaterial(move) > 0 ) {
>      if( tacticalmove() )
>        units = 1;
>      else if( verydumbmove() )
>        units = 3;
>      else
>        units = 2;
>
>    }
>    else {
>      if( verytacticalmove() )
>        units = 2;
>      else
>        units = 3;
>    }
>    tempscore = -alfabeta(depth-1-units,-beta,-alfa,side^1, ... );

small correction:
     tempscore = -alfabeta(depth-units,-beta,-alfa,side^1, ... );




>  }
>  ...
>}
>
>So the effect of nullmove is already very limited thanks to major reductions.
>Still it will help to use nullmove so i guess they nowadays use it. Alternative
>is of course using units = 4 ;)
>
>I know what Ed is doing, if you're already doing dubious reductions like at his
>homepage and more of that similar stuff then of course your positional search
>depth is already just half of the total search depth more or less. So additional
>nullmoves to that are pretty dangerous to do, but they can be done.
>
>In fact the assumptions made by junior and Rebel are basically that searching
>positional deeper is not the most important thing. Their assumption, derived
>from their search is that you only need to search tactical deeper and not
>positional. Both are just extending captures, checks and such moves bigtime.
>
>Shredder and DIEP are the opposite of that. If they throw something away then
>they throw basically tactical stuff away and try to search positional deeper.
>
>Then there are a lot of program forward pruning in different ways but vaste
>majority is just busy searching tactics deeper. Hiarcs i do not know, never
>chatted with Uniacke about it.
>
>Considering that both Shredder and junior ended at 7.5 out of 9 last world
>championship, the most important thing in computerchess is your weakest chain.
>Far more than the above difference.
>
>Personally i prefer however to search positional deeper. If tricks get found
>then i consider that as a side effect from the search depth reached.
>
>>there are some strange programs like Hiarcs; I don't think it is using null-move
>>pruning, at least not anything with R > 1.
>
>You should not confuse extensions and the last few plies pruning with nullmove.
>Many extensions and pruning rules can render confusion there. I would be amazed
>actually if Hiarcs doesn't use nullmove.



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.