Copyright (c) 2013 John L. Jerz

Appendix E: Example Number 1

Home
A Proposed Heuristic for a Computer Chess Program (John L. Jerz)
Problem Solving and the Gathering of Diagnostic Information (John L. Jerz)
A Concept of Strategy (John L. Jerz)
Books/Articles I am Reading
Quotes from References of Interest
Satire/ Play
Viva La Vida
Quotes on Thinking
Quotes on Planning
Quotes on Strategy
Quotes Concerning Problem Solving
Computer Chess
Chess Analysis
Early Computers/ New Computers
Problem Solving/ Creativity
Game Theory
Favorite Links
About Me
Additional Notes
The Case for Using Probabilistic Knowledge in a Computer Chess Program (John L. Jerz)
Resilience in Man and Machine

Appendix E: Example Number 1:

Consider this late opening/ early middlegame position, taken from analysis of a famous correspondence game: Black to move, after the proposed continuation 12.Qe2 Be6 13.Qf2!? (diagram)

Position 1
qf2.jpg
Estrin-Berliner (1965-1968) after suggested moves 12.Qe2 Be6 13.Qf2

Black has sacrificed a piece for a strong attack, and White has problems bringing pieces into the game - in fact, the evaluation of the chances in this position depends to some degree on how we score the white pieces sitting on the back rank.

Let's calculate what the data structure looks like for White's queen bishop, which appears to be a non-contributing piece buried on the back rank. Let's number the squares on the chessboard from 1 to 64, starting in the bottom left corner and moving from left to right, and then up to the top of the board. White's Queen would be on square 14.
 
Earlier we have depicted piece mobility by using "maps". This works for the purpose of explaining the concept, but a computer would benefit from using a data structure that is flexible and uses numbers rather than pictures of pieces.
 
Unfortunately, the data structures used by computers are not easy to read by humans. Nevertheless, the data structure we use in our evaluaiton function will be critically important, as indicated by these quotations:
 
the design of data structures is the central decision in the creation of a program. Once the data structures are laid out, the algorithms tend to fall into place, and the coding is comparatively easy - Brian W. Kernighan and Rob Pike, The Practice of Programming, p. 61
 
Much more often, strategic breakthrough will come from redoing the representation of the data or tables. This is where the heart of a program lies. Show me your flowcharts and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won't usually need your flowcharts; they'll be obvious... Representation is the essence of programming.  - Frederick P. Brooks, Jr., The Mythical Man-Month, 1995 edition, p.102-103
 
the representation that is used to represent a problem is very important. In other words, the way in which the computer represents a problem, the variables it uses, and the operators it applies to those variables can make the difference between an efficient algorithm and an algorithm that doesn't work at all. This is true of all Artificial Intelligence problems, and as we see in the following chapters, it is vital for search...The more difficult problem is to determine the data structure that will be used to represent the problem we are exploring... When applying Artificial Intelligence to search problems, a useful, efficient, and meaningful representation is essential. In other words, the representation should be such that the computer does not waste too much time on pointless computations, it should be such that the representation really does relate to the problem that is being solved, and it should provide a means by which the computer can actually solve the problem. - Ben Coppin , Artificial Intelligence Illuminated, p.28-29
 
1st order mobility table for White bishop at square c1 (for full 1st order piece mobility table, see Experimental Results)
 

qf2bishop1.jpg
Queen bishop - 1st order mobility map

#

direction

square

source

square contents

board

1

upper left
square b2
root c1

blocked by white pawn, moveable

current, create new board position A by moving pawn at square b2 out of the way

2

upper right

square d2

root c1

blocked by white pawn, moveable

current, create new board position B by moving pawn at square d2 out of the way

Each potential move for the Bishop on square 3 generates more entries in the next higher order mobility table, in a recursive fashion, until we reach a mobility level of 3. It would seem that the benefits from calculating mobility deeper than 3 moves would be outweighed by the cost (in lost search time) of making the calculations.
 
Now, for the Bishop on square 3, if we move either of the 2 pawns blocking the bishop at squares 10 and 12, the Bishop is now free to move.
 
This is the 2nd order mobility table for white bishop at square 3

qf2bishop2.jpg
Queen bishop - 2nd order mobility map

#

direction

square

source

square contents

board

1

upper left

square 10

root 3, 1st order line 1

empty after moving a white pawn

A

2

upper left
square 17
root 10, 1st order line 1

empty

A

3

upper right

square 12

root 3, 1st order line 2

empty after moving a white pawn

B

4

upper right
square 21
root 12, 1st order line 2

empty

B

5

upper right
square 30
root 21, 1st order line 2

empty

B

6

upper right
square 39
root 30, 1st order line 2

empty

B

7

upper right
square 48
root 39, 1st order line 2

empty

B

Likewise, each entry in the Bishop's 2nd order mobility table generates entries in the 3rd order mobility table. Note that in this example we are only concerned with "new" mobility. In reality, we would have separate entries for each way we can trace mobility - in case one way is blocked we would still be able to trace mobility through other routes.
 

qf2bishop3.jpg
Queen bishop - 3rd order mobility map

#

direction

square

source

square contents

board

1

lower left
square 1
root 10, 2nd order line 1
blocked by white rook, not moveable

A

2

upper right
square 19
root 10, 2nd order line 1
empty

A

3

upper right
square 28
root 19, 2nd order line 1
blocked by white pawn, not moveable

A

4

upper right
square 26
root 17, 2nd order line 2
empty

A

5

upper right
square 35
root 26, 2nd order line 2
empty

A

6

upper right

square 44

root 35, 2nd order line 2

Black Bishop, capturable

A

7

upper left

square 19

root 12, 2nd order line 3

empty

B

8

upper left

square 26

root 19, 2nd order line 3

empty

B

9

upper left

square 33

root 26, 2nd order line 3

empty

B

10

lower right

square 5

root 12, 2nd order line 3

blocked by White King, moveable

B

11

upper left

square 28

root 21, 2nd order line 4

blocked by white pawn, not moveable

B

12

lower right

square 14

root 21, 2nd order line 4

Blocked by White Queen, moveable

B

13

upper left

square 37

root 30, 2nd order line 5

empty

B

14

upper left

square 44

root 37, 2nd order line 5

blocked by Black Bishop, capturable

B

15

lower right

square 23

root 30, 2nd order line 5

blocked by White Knight, moveable

B

16

upper left

square 46

root 39, 2nd order line 6

empty

B

17

upper left

square 53

root 39, 2nd order line 6

empty

B

18

upper left

square 60

root 39, 2nd order line 6

empty

B

19

lower right

square 32

root 39, 2nd order line 6

Blocked by Black Queen, capturable

B

20

upper left

square 55

root 48, 2nd order line 7

Blocked by Black pawn, capturable

B

 
So what is the purpose of generating a data structure like this?
 
We do this so we can better estimate the positional "pressure" that the Bishop on square 3 is capable of producing in this position. Look at all the facts that we can gather from this table:
 
The Bishop can move to squares 10 and 12 in 1 move. It can move to squares 17,21, 30, 39 and 48 in 2 moves. It can move to squares 1, 19, 28, 26, 35, 44, 33, 5, 28, 14, 37, 23, 46, 53, 60, 32 and 55 in 3 moves.
 
The Bishop can attack the following enemy pieces in 3 moves: Bishop on 44, Queen on 32, Pawn on 55.
 
The Bishop can defend the following friendly pieces in 1 move: pawn on 10, pawn on 12. The Bishop can defend the following friendly pieces in 3 moves: Rook on 1, Queen on 14, pawn on 28, Knight on 23. [We can calculate how many moves it takes a piece to "defend" ones own King, but this is pointless because once the King is captured the game is over.]
 
The Bishop can, in 3 moves, attack these 2 squares near the enemy King: squares 53 and 60.
 
The Bishop is buried on the back rank and presently cannot move. This might cause a traditional chess program to severely penalize the piece, (it is agreed that this piece is not in the best possible place on the board). But how much do we penalize it? We would need to see what it was capable of doing, and this is the purpose of the data structure depicted above.
 
Experimental source code (October 5, 2007) produces this result, when we process the data to remove redundant entries:
 
1st, 2nd & 3rd order mobility tables, automatically generated for Bishop on c1:
 
 5: root c1 w bishop UpperLeft (c1-b2: w pawn) move[b2-b3 0-0] BLOCKED-F-MOVEABLE-DIRECTIONAL_ISSUE
 6: root c1 w bishop UpperRight (c1-d2: w pawn) move[d2-d3 0-0] BLOCKED-F-MOVEABLE-DIRECTIONAL_ISSUE
 
 18: root c1 w bishop UpperLeft (c1-b2: w pawn) move[b2-b3 0-0] EMPTYFORMOBILITY
 19: root c1 w bishop UpperLeft (c1-a3: empty) move[b2-b3 0-0] EMPTYFORMOBILITY
 20: root c1 w bishop UpperRight (c1-d2: w pawn) move[d2-d3 0-0] EMPTYFORMOBILITY
 21: root c1 w bishop UpperRight (c1-e3: empty) move[d2-d3 0-0] EMPTYFORMOBILITY
 22: root c1 w bishop UpperRight (c1-f4: empty) move[d2-d3 0-0] EMPTYFORMOBILITY
 23: root c1 w bishop UpperRight (c1-g5: empty) move[d2-d3 0-0] EMPTYFORMOBILITY
 24: root c1 w bishop UpperRight (c1-h6: empty) move[d2-d3 0-0] EMPTYFORMOBILITY
 
 61: root c1 w bishop UpperRight (b2-c3: empty) move[b2-b3 0-0] EMPTYFORMOBILITY
 62: root c1 w bishop UpperRight (b2-d4: w pawn) move[b2-b3 0-0] BLOCKED-F-NOTMOVEABLE
 63: root c1 w bishop LowerRight (b2-c1: empty) move[b2-b3 0-0] EMPTYFORMOBILITY
 64: root c1 w bishop LowerLeft (b2-a1: w rook) move[b2-b3 0-0] BLOCKED-F-NOTMOVEABLE
 65: root c1 w bishop UpperRight (a3-b4: empty) move[b2-b3 0-0] EMPTYFORMOBILITY
 66: root c1 w bishop UpperRight (a3-c5: empty) move[b2-b3 0-0] EMPTYFORMOBILITY
 67: root c1 w bishop UpperRight (a3-d6: b bishop) move[b2-b3 0-0] BLOCKED-E-CAPTURABLE
 68: root c1 w bishop LowerRight (a3-c1: empty) move[b2-b3 0-0] EMPTYFORMOBILITY
 69: root c1 w bishop UpperLeft (d2-c3: empty) move[d2-d3 0-0] EMPTYFORMOBILITY
 70: root c1 w bishop UpperLeft (d2-b4: empty) move[d2-d3 0-0] EMPTYFORMOBILITY
 71: root c1 w bishop UpperLeft (d2-a5: empty) move[d2-d3 0-0] EMPTYFORMOBILITY
 72: root c1 w bishop LowerRight (d2-e1: w king) move[d2-d3 0-0] BLOCKED-F-MOVEABLE
 73: root c1 w bishop LowerLeft (d2-c1: empty) move[d2-d3 0-0] EMPTYFORMOBILITY
 74: root c1 w bishop UpperLeft (e3-d4: w pawn) move[d2-d3 0-0] BLOCKED-F-NOTMOVEABLE
 75: root c1 w bishop LowerRight (e3-f2: w queen) move[d2-d3 0-0] BLOCKED-F-MOVEABLE
 76: root c1 w bishop LowerLeft (e3-c1: empty) move[d2-d3 0-0] EMPTYFORMOBILITY
 77: root c1 w bishop UpperLeft (f4-e5: empty) move[d2-d3 0-0] EMPTYFORMOBILITY
 78: root c1 w bishop UpperLeft (f4-d6: b bishop) move[d2-d3 0-0] BLOCKED-E-CAPTURABLE
 79: root c1 w bishop LowerRight (f4-g3: w knight) move[d2-d3 0-0] BLOCKED-F-MOVEABLE
 80: root c1 w bishop LowerLeft (f4-c1: empty) move[d2-d3 0-0] EMPTYFORMOBILITY
 81: root c1 w bishop UpperLeft (g5-f6: empty) move[d2-d3 0-0] EMPTYFORMOBILITY
 82: root c1 w bishop UpperLeft (g5-e7: empty) move[d2-d3 0-0] EMPTYFORMOBILITY
 83: root c1 w bishop UpperLeft (g5-d8: empty) move[d2-d3 0-0] EMPTYFORMOBILITY
 84: root c1 w bishop LowerRight (g5-h4: b queen) move[d2-d3 0-0] BLOCKED-E-CAPTURABLE
 85: root c1 w bishop LowerLeft (g5-c1: empty) move[d2-d3 0-0] EMPTYFORMOBILITY
 86: root c1 w bishop UpperLeft (h6-g7: b pawn) move[d2-d3 0-0] BLOCKED-E-CAPTURABLE
 87: root c1 w bishop LowerLeft (h6-c1: empty) move[d2-d3 0-0] EMPTYFORMOBILITY
┌───┬───┬───┬───┬───┬───┬───┬───┐
│   │   │   │ . │   │   │   │   │
├───┼───┼───┼───┼───┼───┼───┼───┤
│   │   │   │   │ . │   │ . │   │
├───┼───┼───┼───┼───┼───┼───┼───┤
│   │   │   │ . │   │ . │   │ o │
├───┼───┼───┼───┼───┼───┼───┼───┤
│ . │   │ . │   │ . │   │ o │   │
├───┼───┼───┼───┼───┼───┼───┼───┤
│   │ . │   │ . │   │ o │   │ . │
├───┼───┼───┼───┼───┼───┼───┼───┤
│ o │   │ . │   │ o │   │ . │   │
├───┼───┼───┼───┼───┼───┼───┼───┤
│   │ ▒ │   │ ▒ │   │ . │   │   │
├───┼───┼───┼───┼───┼───┼───┼───┤
│ . │   │ B │   │ . │   │   │   │
└───┴───┴───┴───┴───┴───┴───┴───┘
influence diagram, w bishop on c1.
 
 
Our evaluation function might consider a small reward for the Bishop for each square of potential mobility, possibly less for 2nd and 3rd order mobility. Neil McDonald cautions in The Art of Planning in Chess that piece mobility in itself is 'often completely meaningless':
 
p.189"As so often, we need to remind ourselves that it isn't the fortune of the individual piece that matters - it is how it functions with the other pieces. For this reason it is often completely meaningless to count the number of squares, in the centre or otherwise, that a piece controls or attacks."
 
For the above reason, we should consider giving a mobility bonus only for potential mobility directly traced to enemy pieces (offensive) and to friendly pieces (defensive) .
 
Additional points will be given if this potential mobility cannot be constrained by the enemy pieces - we use the term limiting factors [see Systems Engineering and Analysis, 4th Edition, by Blanchard and Fabrycky p.144] to describe the ability of the enemy to constrain the activity of our pieces.  Once we have calculated future mobility for the enemy pieces (in a similar fashion), it can now be determined that the Queen bishop might not be safe on squares 44, 46 and 48 because these squares are attacked by enemy pawns, and our mobility bonus for the Bishop should be reduced for mobility through these squares.

Position 2
bb.jpg
a bishop with poor mobility

If we take a look at the Bishop in the above diagram (position 2), we see that not only is it blocked, but there is little chance that it can move in the near future. Our mobility tables will recognize that this Bishop is in a far worse position than our Bishop in position 1. Our mobility tables for the Bishop in position 2 will tell us that it is not possible to move this piece within 3 moves (unless a Black pawn moves away on its own). A traditional chess program will not be able to make such a fine distinction, and will simply penalize the Bishop for being on the back rank, possibly noticing in addition that it has no legal moves.
 
We return now to position 1, and the mobility tables we have generated for the queen Bishop. As far as collaborative ability, we would need to generate the mobility tables for the other friendly pieces and see where they overlap, especially if enemy pieces fall in the overlapped area. A friendly piece would be "vulnerable" if multiple enemy pieces can trace mobility to it. Optionally, we can locate "fork squares" for the enemy pieces (squares which would permit the simultaneous attack of two pieces by a single piece) and reward mobility to these squares.
 
Ok, so it is black to move in position 1 above. Black plays 13...Nb4. Now, how do we update the mobility tables for the Bishop?
 
The knight is moving from square 36 to square 26. Square 36 does not show up in the Bishop's mobility table. But square 26 does.
 
Line 8 of our 3rd order mobility table needs to show that square 26 is occupied by a Black Knight, capturable. Line 9 needs to be deleted because mobility to this square has been traced through square 26, which now has a piece on it.
 
Likewise, line 4 of our 3rd order mobility table now shows a Black Knight occupying square 26 (capturable). Lines 5 and 6 need to be deleted because the mobility to these squares has been traced through square 26, which now has a piece on it.
 
And so it goes. Through a complicated process involving pointers to squares, the mobility tables are dynamically updated when the pieces move, but only those portions of the tables that are affected by the piece movement. In our example, we made adjustments to 5 lines out of a total of 29. This is much faster than recalculating the entire mobility of all the pieces. It would appear that most of the mobility tables will remain the same after a piece moves. This will result in an enormous savings of time and will allow for deeper or more thorough searches when attempting to find lines of best play in a chess game.
 
Going back to position 1 above, if Black plays 13...exf3 there is NO CHANGE in the mobility table for the White Bishop on square 3. The Black pawn moves from square 29 to square 22, which do not show up at all in the Bishop mobility tables.
 
The other playable move that Black has in Position 1 is 13...Bxg3. The mobility tables would change as follows:
 
Line 6 of the 3rd order mobility table will now show square 44 as empty. New lines will be added to trace 3rd order mobility to squares 53 and 62 through the newly empty square 44. These squares (53 and 62) are near the enemy King, and it would make sense to have a "King Safety" Heuristic which penalizes each side based on the ability of the opponent to trace potential mobility to squares near the King.
 
Line 14 of the 3rd order table will show square 44 as empty. A new line in the 3rd order mobility table will show mobility traced to square 51 through square 44.
 
Line 15 of the 3rd order table now shows square 23 as occupied by a Black Bishop, capturable.
 
Now let us return to Position 1 and consider the mobility table for the pawn at d4. This pawn is blocked by a Black Knight at d5, and cannot capture anything, and so it would seem that since we have no piece mobility, the pawn has no positional pressure. However, for pawns mobility is not exactly the same as positional pressure. There are other ways we can estimate the pressure that a pawn is capable of producing in a particular position.
 
If a pawn is blocked by an enemy piece, we can increase the bonus to attack this piece, hopefully making it move away and letting us advance the pawn.
 
Pawns can move diagonally forward only if there is an enemy piece present. How can we measure a pawn's ability to threaten to attack an enemy piece if there isn't one there at the moment? We could look at the enemy piece mobility tables and deduct points for mobility through "stopping points" on these particular squares.
 
In our example with the Bishop, line 7 of our 2nd order mobility table traces mobility of the Bishop to square 48, which is attacked by a Black pawn on square 55. While the Bishop could move to this square, it is unlikely because the square is attacked by a pawn. The squares diagonally in front of a pawn, therefore, are unlikely squares for our opponents pieces and we should therefore reduce the bonus awarded for the mobility of the opponent's pieces through stopping points on the enemy pawns forward diagonal squares.
 
Pawns (blocked or otherwise) are also scored indirectly - they restrict the mobility of the other pieces through them, and so their position on the board relative to the other pieces will determine, to a large extent, the mobility of the pieces. Blocked pawns can become targets because they are unable to move away if attacked. Once a pawn becomes blocked, we can increase the "defensive" score that rewards our pieces for "defensive behavior". A blocked pawn is not too bad if it can be defended. It becomes a likely target if it is blocked, not easily defensible, and a remote target of one or more enemy pieces.
 
Doubled and isolated pawns start to become true liabilities when the opponent can attack them and we cannot defend them. 
 
Pawns seem to need a bonus based on how advanced they are. There seems to be a need for a heuristic which measures the pawn's ability to threaten to promote. Pawn mobility needs to be modified by the advancement of the pawn and the mobility of a Queen or other piece that would result from a potential pawn promotion.
 
In example 1, consider the mobility table for the rook at square 8 (algebraic notation: h1)
 

qf2rook1.jpg
1st order mobility table for Rook at h1

#
direction
square
source
contents

board

1
left
square 7
root 8
empty

current

2
left
square 6
root 8
blocked by white bishop, moveable

current, create new board position A by moving bishop on square 6 out of the way

3
up
square 16
root 8
blocked by white pawn, moveable.

current, create new board position B by moving pawn at square 16 to square 24.

Here is the 2nd order mobility table for the White rook on square 8, algebraic h1:

qf2rook2.jpg

#
direction
square
source
contents
board
1
up
square 15
root 7, 1st order line 1
Blocked by white pawn, not moveable
current
2
left
square 6
root 8, 1st order line 2
empty, White Bishop moved away
A
3
left
square 5
root 8, 1st order line 2
Blocked by White King, moveable
A, create position C by taking position A and moving King out of the way to square 13
4
left
square 6
root 8, 1st order line 2
empty
position D - create position D by taking position A and perform kingside castling maneuver

5

up

square 16

root 8, 1st order line 3

empty, pawn has moved away

B

6

up

square 24

root 8, 1st order line 3

Blocked by white pawn, not moveable

B

Here is the 3rd order mobility table for the white rook on square 8, algebraic notation h1:

qf2rook3a.jpg

#
direction
square
source
contents
board
1
-
-
placeholder - no traceable mobility from 2nd order line 1
-
current
2
up
square 14
root 6, 2nd order line 2
blocked by White queen, moveable
A
3
left
square 5
root 8, 2nd order line 3
empty - White King moved out of the way
C
4
left
square 4
root 8, 2nd order line 3
empty
C
5
left
square 3
root 8, 2nd order line 3
Blocked by White Bishop, not moveable
C
6
left
square 5
root 8, 2nd order line 4
empty after castling
D

7

left

square 4

root 8, 2nd order line 4

empty

D

8

left

square 3

root 8, 2nd order line 4

Blocked by White Bishop, not moveable

D

9

up

square 15

root 7, 2nd order line 5

Blocked by white pawn, not moveable

B

10

-

-

placeholder - no traceable mobility from 2nd order line 6

-

B

Here are the mobility tables for the White King at square 5 (algebraic notation: e1):

qf2king1.jpg

#
direction
square
source
contents
board
1
left
4
root 5
empty
current
2
up
13
root 5
empty
current
3
right
6
root 5
Blocked by white Bishop, moveable
current, create board A by moving Bishop out of the way
4
upper left
12
root 5
Blocked by White pawn, moveable
current. create board B by moving pawn out of the way
5
upper right
14
root 5
Blocked by White Queen, moveable
current, create board C by moving Queen out of the way

Here is the 2nd order mobility table for the White King. Note that for the King we "deny" mobility to certain squares if the King would move in to check.

qf2king2.jpg

#
direction
square
source
contents
board
1
left
3
root 4, 1st order line 1
Blocked by White Bishop, not moveable
current, reconsider Bishop's movement IF pawns at 10 or 12 move.
2
upper left
11
root 4, 1st order line 1
empty
current
3
upper left
20
root 13, 1st order line 2
empty, but denied by Black pawn at 29
current, reconsider denied mobility if pawn at 29 moves
4
up
21
root 13, 1st order line 2
empty, but denied by Black Knight at 36
current, reconsider denied mobility if Black Knight at 36 moves
5
upper right
22
root 13, 1st order line 2
Blocked by White pawn and denied by Black pawn at 29
current, reconsider denied mobility if Black pawn at 29 moves
6
right
6
root 5, 1st order line 3
empty
position A
7
right
7
root 5, 1st order line 3
empty
position A, create position E by performing Kingside castle
8
upper left
12
root 5, 1st order line 4
empty
position B
9
upper right
14
root 5, 1st order line 5
empty
position C

Here is the 3rd order mobility table for the White King:
 
 

qf2king3.jpg

#
direction
square
source
contents
board
1
-
-
placeholder - no mobility from 2nd order line 1
-
-
2
upper left
18
root 11, 2nd order line 2
empty
current
3
left
10
root 11, 2nd order line 2
blocked by white pawn, moveable
current
4
bottom left
2
root 11, 2nd order line 2
blocked by white knight, moveable
current
5
-
-
placeholder - no mobility from 2nd order line 3
-
-

6

-

-

placeholder - no mobility from 2nd order line 4

-

-

7

-

-

placeholder - no mobility from 2nd order line 5

-

-

8

upper right

15

root 6, 2nd order line 6

blocked by white pawn, not moveable

A

9

right

7

root 6, 2nd order line 6

empty

A

10

upper right

16

root 7, 2nd order line 7

blocked by white pawn, moveable

E

11

right

8

root 7, 2nd order line 7

empty

E

12

-

-

placeholder - no new mobility traced from 2nd order line 8

-

-

13

upper right

23

root 14, 2nd order line 9

blocked by white knight, moveable, but denied by black queen at square 32

C

┌───┬───┬───┬───┬───┬───┬───┬───┐
│   │ . │   │ . │ . │ . │ . │   │
├───┼───┼───┼───┼───┼───┼───┼───┤
│ . │ . │ . │ . │ . │ o │ . │ . │
├───┼───┼───┼───┼───┼───┼───┼───┤
│ . │ . │ . │ . │ . │ o │ . │ o │
├───┼───┼───┼───┼───┼───┼───┼───┤
│ . │ o │ . │ . │ . │ o │ o │ . │
├───┼───┼───┼───┼───┼───┼───┼───┤
│ . │ . │ o │ ▒ │ o │ o │ . │ o │
├───┼───┼───┼───┼───┼───┼───┼───┤
│ o │ o │ o │ o │ ▒ │ ▒ │ ▒ │ . │
├───┼───┼───┼───┼───┼───┼───┼───┤
│ . │ o │ o │ ▒ │ ▒ │ Q │ ▒ │ o │
├───┼───┼───┼───┼───┼───┼───┼───┤
│   │ . │ . │ o │ ▒ │ ▒ │ ▒ │ o │
└───┴───┴───┴───┴───┴───┴───┴───┘
influence diagram, w queen on f2.
 
┌───┬───┬───┬───┬───┬───┬───┬───┐
│   │   │ . │   │ . │   │ . │   │
├───┼───┼───┼───┼───┼───┼───┼───┤
│   │ . │   │ . │ o │ . │ o │ . │
├───┼───┼───┼───┼───┼───┼───┼───┤
│ . │   │ . │ o │ . │ o │ . │ o │
├───┼───┼───┼───┼───┼───┼───┼───┤
│   │ . │ o │ . │   │ ▒ │ o │ ▒ │
├───┼───┼───┼───┼───┼───┼───┼───┤
│ . │   │ . │ o │ ▒ │ o │ . │ o │
├───┼───┼───┼───┼───┼───┼───┼───┤
│   │ . │ o │ . │ o │ . │ N │ . │
├───┼───┼───┼───┼───┼───┼───┼───┤
│ . │   │ . │ o │ ▒ │ o │ . │ . │
├───┼───┼───┼───┼───┼───┼───┼───┤
│   │ . │ o │ . │   │ ▒ │ o │ ▒ │
└───┴───┴───┴───┴───┴───┴───┴───┘
influence diagram, w knight on g3.
 
Look at all this information we can extract from the position of the pieces on the board.
 
Note that the Queen mobility to squares f5, f6 and f7 can be accomplished in 2 moves if we play the capture move f3xe4 on move 1.

Enter supporting content here