Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Missing a MODEL for the minum branching factor using R=3,hash,a-b

Author: Vincent Diepeveen

Date: 15:19:27 08/11/99

Go up one level in this thread


Another thing Bob,

Use a simple Swapoff evaluation like junior has,
that saves another few ply for the material searcher.

That's what we were talking about when i said 30 ply.

Then go replace lastply nullmove by last plies pruning:
  if( eval >= beta
   (depthleft <= 1
    || (depthleft <= 3 !morethan1attacktopieces))  <== so not pawns
     return(eval);

That *really* speeds up for last 3 ply, instead of the weird
crafty-icc-blitz razoring.

On August 11, 1999 at 14:50:05, Robert Hyatt wrote:

>On August 11, 1999 at 13:04:02, Vincent Diepeveen wrote:
>
>>On August 11, 1999 at 10:19:09, Robert Hyatt wrote:
>>
>>>On August 11, 1999 at 07:31:10, Vincent Diepeveen wrote:
>>>
>>>>On August 11, 1999 at 06:29:22, David Blackman wrote:
>>>>
>>>>>Start with an ACTUAL branching factor B (ie number of legal moves in each
>>>>>position).
>>>>>
>>>>>For depth N, minimax needs  B ** N, apparent branching factor B.
>>>>>
>>>>>Plain alpha-beta with perfect move ordering needs k * B ** (N/2) where k is some
>>>>>small constant. So apparent branching factor is SQRT(B).
>>>>>
>>>>>With alpha-beta, nullmove pruning factor R, assume perfect move ordering, and
>>>>>every move that fails low gets cut by null move pruning, k * B ** (N/(R+2)) so
>>>>>apparent branching factor is B ** ( 1/(R+2) ) . For R=3 that is fifth root of B.
>>>>>With B=32 (probably a bit low for a midgame) that would be branching factor 2.
>>>>
>>>>B=32 is a bit high, see earlier posts of my:
>>>>lots of pieces get of the board, and lots of transpositions.
>>>>
>>>>So B is a lot less than that.
>>>
>>>No it isn't, and this is an easy hypothesis to test:
>>>
>>>search a few positions for an hour each, no null move, no hashing.
>>>
>>>Turn on hashing and see what that does to reach the same depth.
>>>
>>>Then turn on null-move and see what that does.
>>>
>>>Then you can compute exactly what the two things do to shrink the overall
>>>tree.  In my testing, I generally find null-move is worth 2 extra plies over
>>>non-null move, using R=2.  Stripping out my eval _might_ get another ply as
>>>my eval is 50% of total search time.  Stripping out move ordering will lose that
>>>ply right back due to less efficient move ordering.
>>>
>>>22 plies ain't going to happen, much less 30.  The math just isn't there.  I
>>>have seen _no_ program report depths > 12-14 in the middlegame, except for
>>>Junior which reports depth in 1/2 ply increments.  If they can't hit 18-19
>>>with everything included, they aren't going to hit >20 stripped down...
>>>
>>
>>Bob, did you read what i wrote some msgs above this?
>>
>>I'm not talking about DIEP here. Of course i'm not gonna see
>>DIEP get 30 ply soon. Needs already 24 hours to get near 18-20 ply.
>>
>>I was talking about the most dumb program on earth.
>>First variation which is rather simple to make for everyone (doesn't
>>need a qsearch namely, is the case where it returns 0.
>
>Simple enough.  I can make such a 'dumb' program easily...  Data to follow
>in an hour or so.  But before I go off to do this, I can _guarantee_ you that I
>won't get to 20 plies in reasonable time.  I've done this before.
>
>>
>>the second case is a case where it only returns material score.
>>this one is harder to make as u need to sort in an inactive way
>>to get those depths.
>
>
>I will test with eval doing nothing but a return(0), and no capture search
>of any kind.  Trivial to test...
>
>Here are results:  crafty with no evaluation (always assumes score=0) and
>no capture search of any kind, and no search extensions of any kind.
>
>First, normal crafty from the opening position, on my PII/300 notebook,
>gets to depth=10 in 60 seconds (finishes 10).
>
>This "broken" crafty gets to depth=22.  Which is totally meaningless, because
>it is not only dumb, it is wrong, since it is not differentiating _any_
>positions at all.
>
>I then did a more useful experiment using evaluation == Material Count only;
>and got to depth=18 in 60 seconds.  This still using my null-move R=2/3 search,
>plus razoring, without any extensions at all.
>
>30 plies is impossible.  _Totally_ impossible.
>
>
>
>>
>>See my msgs above.
>>
>>in both programs we talk about very good b.f. compared to normal
>>chessprograms. As in normal chessprograms sorting is not near to what
>>is optimal possible (and extensions!!!!!)
>
>You will _never_ get as good a move ordering as an eval that always returns
>0, because that is _perfect_ move ordering, which is patently impossible.
>
>
>>
>>Of course the overhead of the qsearch adds a factor to the material
>>proggie, which got that 17 ply within seconds at my P100.
>
>your test was worthless, however, because an eval of 0 is meaningless.  With
>such a search, you just pick the first move and make it as none will ever be
>any better.  No 'search' is needed, and doing a search is worthless.
>
>But when you factor in material, you ain't going to get to 30 plies.
>
>Let's try the math.   depth         time
>                        15           3.23
>                        16           6.79
>                        17           21.91
>                        18           32
>
>extrapolated:
>                        19           64
>                        20          128
>
>and I am not going to multiply by 2 ten more times (which is roughly 1000
>times as long to get 30 as to get 20.
>
>
>
>
>>
>>Fact is that no program simply has the optimal branching factor as
>>there is no model. Now david has written something down which i will
>>study. If it's true what he writes then without extensions
>>and not counting lineair overhead of qsearch
>>with this model of David we see that 30 ply is just a billion nodes,
>>which is about 250 seconds for such a dumbo proggie, so a little more
>>than 4 minutes, where 22 ply as ialready wrote down is done instantly
>>at nowadays hardware.
>
>try again.  With my test it wasn't instant for 22 plies at all.  And you
>_must_ use some sort of eval... and with material only, which costs me
>nothing since I keep that incrementally, I can't get to 22 instantly. And
>I'm not slow...
>
>
>
>>
>>So what we now need is also a term for minimal b.f. for extensions that
>>happen every x-th position.
>>
>>
>>
>>
>>
>>
>>
>>>
>>>
>>>>
>>>>
>>>>>I don't think you're going to get quite that good for most positions. First it
>>>>>assumes perfect move ordering. There might be tricks to get close to that. But
>>>>>also it assumes null move pruning works for almost all failing low moves, and i
>>>>>don't think that is true. A tempo is often worth a lot.
>>>>>
>>>>>Working out a model for effect of transposition tables on branching factor makes
>>>>>my head hurt. For now i'll just note that in practice it doesn't seem to help
>>>>>much in the middlegame. So i think apparent branching factors in the range 2 to
>>>>>4 will be the rule for the moment, for normal mid-game positions.
>>>>>
>>>>>If you could get down close to 2 that would make depths of 15 to 20 ply feasible
>>>>>at normal tournament controls. I guess most of us aren't there yet.



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.