Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Matrix of Values for pawn structures

Author: Reinhard Scharnagl

Date: 09:21:14 08/27/04

Go up one level in this thread


On August 27, 2004 at 11:08:32, morphy wrote:

>On August 27, 2004 at 10:53:51, Reinhard Scharnagl wrote:
>
>>On August 27, 2004 at 10:45:51, Álvaro Begué wrote:
>>
>>>On August 27, 2004 at 10:40:30, morphy wrote:
>>>
>>>>I extract this from a my actual work:
>>>>----------------
>>>>[...]
>>>>Now we can calculate all possible dispositions of white and black pawns on the
>>>>chessboard:
>>>>> combAllP(48);
>>>>                       49095494654933238
>>
>>>I only get 29019905518636890. Am I doing something wrong?
>>
>>You have done only 48!/(32!*8!*8!) thus (8+8) combinations.
>>
>>Reinhard.
>
>I'm sure, I calcultate all (nPW+nPB) combinations. I like your work in your site
>but your coclusions seems to me forced and artificial,unnatural. I'm sorry but
>i'm working on a most mathematically strict and complete work...but I can't show
>it also because it's incomplete. for the present question read all the
>motivation (extracted from a 'Maple 9.5' work)
>
>------------------
>How to calculate all possible dispositions of all pieces on the chessboard?
>
>Start to calculate all possible dispositions of white pawns on theirs 48
>possible squares.
>> combPW:= (S,nPW) -> combinat[numbcomb](S,nPW);
>        combPW := (S, nPW) -> combinat[numbcomb](S, nPW)
>Where 'combPW' count the number of combinations of 'nPW' white pawns in 'S'
>squares. The reason is obvious from the same definition of number of
>combinations of 'nPW' elements on 'S' places. In chess S=48 and nPW is a number
>of white pawns from 1 to 8.
>To add all possible disposition of black pawns, add for each of such combination
>all the possible disposition of black pawns on a number of squares decreased by
>number of white pawns on the chessboard.
>> combPWB:= (S,nPW,nPB) -> combPW(S,nPW)*combinat[numbcomb](S-nPW,nPB);
>combPWB := (S, nPW, nPB) -> combPW(S, nPW) combinat[numbcomb](S - nPW, nPB)
>Since combinat[numbcomb](n,m) = n!/m!/(n-m)! and, because the way to calculate
>the combinations is the same, combinat[numbcomb](S-nPW,nPB) = combPW(S-nPW,nPB),
>we have:
>> combPWB:= (S,nPW,nPB) -> S!/nPW!/nPB!/(S-nPW-nPB)!;
>    combPWB := (S, nPW, nPB) ->
>
>                           factorial(S)
>      ------------------------------------------------------
>      factorial(nPW) factorial(nPB) factorial(S - nPW - nPB)
>So to calcultate all possible dispositions of white and black pawns we add all
>terms above-written for all nPW and all nPB, both from 1 to 8.
>> combAllP:= S -> sum(sum(combPWB(S,nPW,nPB),nPW=1..8),nPB=1..8);
>                         8   /   8                       \
>                      -----  |-----                      |
>                       \     | \                         |
>                        )    |  )                        |
>     combAllP := S ->  /     | /     combPWB(S, nPW, nPB)|
>                      -----  |-----                      |
>                      nPB = 1\nPW = 1                    /
>> combAllP:= S -> sum(sum(S!/nPW!/nPB!/(S-nPW-nPB)!,nPW=1..8),nPB=1..8);
>                       8   /   8
>                    -----  |-----
>                     \     | \
>                      )    |  )
>   combAllP := S ->  /     | /
>                    -----  |-----
>                    nPB = 1\nPW = 1
>
>                                                           \
>                                                           |
>                                                           |
>                          factorial(S)                     |
>     ------------------------------------------------------|
>     factorial(nPW) factorial(nPB) factorial(S - nPW - nPB)|
>                                                           /
>Now we can calculate all possible dispositions of white and black pawns on the
>chessboard:
>> combAllP(48);
>                       49095494654933238
>> evalf(%);
>                                      16
>                        4.909549465 10
>This is a significant result because we know how many possible 'pawns
>structures' we can have: above to fifty millions of billions of pawns structure.
>Assuming 1KB of data for 'Matrix of Values' for each pawn structure, we need to
>store all this 'Matrix of Values' for all pawn structures about a million of
>Hard Disks with a capacity of 50TB, not impossible for actual century.
>-------------
>
>I hope to see you soon, Mr. Scharnagl
>Regards
>Giulio


Well Giulio,

a) I have a slightly different result:

yours: 49095494654933238
mine:  49095495585283107

please check my approach:

  int i1, i2;
  long long sum1 = 0;
  for (i1 = 8; i1 >= 0; --i1) {
    for (i2 = 8; i2 >= 0; --i2) {
      long long sum2 = 1;
      long long quot1 = 1;
      for (int i3 = 48-i1-i2; ++i3 <= 48;) {
        sum2 *= i3;
        int i4 = 48 - i3;
        if (i4 < i1) {
          if (sum2 % (i1 - i4) != 0)
            quot1 *= (i1 - i4);
          else
            sum2 /= (i1 - i4);
        }
        if (i4 < i2) {
          if (sum2 % (i2 - i4) != 0)
            quot1 *= (i2 - i4);
          else
            sum2 /= (i2 - i4);
        }
        if (sum2 % quot1 != 0) {
          sum2 /= quot1;
          quot1 = 1;
        }
      }
      sum1 += sum2;
    }
  }

  cout << sum1 << endl << endl;

b) what exactly is your critic on my pages?

Regards, Reinhard.



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.