Difference between revisions of "KBNK Endgame"

From Chessprogramming wiki
Jump to: navigation, search
m
Line 65: Line 65:
  
 
=Publications=
 
=Publications=
 +
* [[Jaap van den Herik]] ('''1983'''). ''[https://www.semanticscholar.org/paper/Representation-of-Experts'-Knowledge-in-a-Subdomain-Herik/5f29c029a69f2d69980da4b35402050203421ed4 Representation of Experts' Knowledge in a Subdomain of Chess Intelligence]''. [[Conferences#IJCAI1983|IJCAI 1983]]
 
* [[Hans Zellner]], [[Jaap van den Herik]], [[Bob Herschberg]] ('''1987'''). ''Corrections and Substantiations to KBNK''. [[ICGA Journal#10_3|ICCA Journal, Vol. 10, No. 3]]
 
* [[Hans Zellner]], [[Jaap van den Herik]], [[Bob Herschberg]] ('''1987'''). ''Corrections and Substantiations to KBNK''. [[ICGA Journal#10_3|ICCA Journal, Vol. 10, No. 3]]
 
* [[Matej Guid]], [[Martin Možina]], [[Aleksander Sadikov]], [[Ivan Bratko]] ('''2010'''). ''[http://www.springerlink.com/content/um0l155681087p7h Deriving Concepts and Strategies from Chess Tablebases]''. [[Advances in Computer Games 12]], [http://www.ailab.si/matej/doc/Deriving_Concepts_and_Strategies_from_Chess_Tablebases.pdf pdf]
 
* [[Matej Guid]], [[Martin Možina]], [[Aleksander Sadikov]], [[Ivan Bratko]] ('''2010'''). ''[http://www.springerlink.com/content/um0l155681087p7h Deriving Concepts and Strategies from Chess Tablebases]''. [[Advances in Computer Games 12]], [http://www.ailab.si/matej/doc/Deriving_Concepts_and_Strategies_from_Chess_Tablebases.pdf pdf]

Revision as of 19:14, 4 May 2019

Home * Evaluation * Endgame * KBNK

A checkmate with a bishop and a knight against a lone king is delivered in the corner that can be covered by a bishop of the attacking side. For that reason a program ought to use a separate piece-square table for the position of the opponent king in order to drive it to the correct corner. Draw cases due to tactical loss of one of the pieces [1] or the stalemate trap are left to the search routine.

Corner-Distance

Alternatively, following Bit-twiddling determines the Manhattan-Distance to the closest corner square of the bishop square color, which might be used as a bonus for the lonesome king. First, the color of the bishop square is determined by a multiplication based on 9, to find whether its file and rank sum is odd or even. It is done that way, that an odd sum results in the sign-bit set, to build a mask by shifting arithmetically right and to conditionally flip the file of the king square, so that squares 0 and 63 become the relevant corner squares. The king's Corner Manhattan-distance is then simply the sum of its rank and file indices, if it exceeds 7 the difference to 14 is taken to force the symmetry, mirrored along the diagonal or anti-diagonal.

 0 1 2 3 4 5 6 7     7 6 5 4 3 2 1 0
 1 2 3 4 5 6 7 6     6 7 6 5 4 3 2 1
 2 3 4 5 6 7 6 5     5 6 7 6 5 4 3 2
 3 4 5 6 7 6 5 4     4 5 6 7 6 5 4 3
 4 5 6 7 6 5 4 3     3 4 5 6 7 6 5 4
 5 6 7 6 5 4 3 2     2 3 4 5 6 7 6 5
 6 7 6 5 4 3 2 1     1 2 3 4 5 6 7 6
 7 6 5 4 3 2 1 0     0 1 2 3 4 5 6 7
/**
 * manhattanDistance2ClosestCornerOfBishopSquareColor
 *   for KBNK purpose
 * @author Gerd Isenberg
 * @param b bishop square (to determine its square color)
 * @param k opponent king square (0..63)
 * @return manhattanDistance to the closest corner square
 *         of the bishop square color
 */
int manhattanDistance2ClosestCornerOfBishopSquareColor(int b, int k)
{
   b =  -1879048192*b >> 31; // 0 | -1 to mirror
   k = (k>>3) + ((k^b) & 7); // rank + (mirrored) file
   k = (15*(k>>3)^k)-(k>>3); // if (k > 7) k = 14 - k
   return k;
}

which results in following x86 Assembly:

?manhattanDistance2ClosestCornerOfBishopSquareColor PROC NEAR
; _b$ = ecx
; _k$ = edx
  00000	69 c9 00 00 00 90 imul ecx, 90000000H
  00006	c1 f9 1f          sar  ecx, 31
  00009	33 ca             xor  ecx, edx
  0000b	c1 fa 03          sar  edx, 3
  0000e	83 e1 07          and  ecx, 7
  00011	03 ca             add  ecx, edx
  00013	8b d1             mov  edx, ecx
  00015	c1 fa 03          sar  edx, 3
  00018	8b c2             mov  eax, edx
  0001a	6b c0 0f          imul eax, 15
  0001d	33 c1             xor  eax, ecx
  0001f	2b c2             sub  eax, edx
  00021	c3                ret  0

See also

Publications

Forum Posts

Re: How to get chess program to solve KBN mate? by David John Blackman, rgcc, September 18, 1997 » KnightCap

External links

References

  1. Re: Search with bitbase by Joona Kiiski, CCC, September 05, 2012

Up one Level