Chess is hard
even for a single player
N. R. Aravind ⸱ Neeldhara Misra ⸱ Harshil Mittal
Presented by Miguel Ambrona on their behalf
2022
Roadmap
Roadmap
Capture a piece with every move
until just one remains.
No piece may capture
more than 2 times per puzzle.
If there is a King on the board,
it must be the final piece.
Solo Chess:
The Rules
Some instances of Solo Chess have unique solutions.
...while others may have more than one.
...while others may have more than one.
Generalized
SOLO CHESS
Many (\(n\)) pieces!
Each piece has a specific # of captures remaining.
1D or 2D or... dD boards.
Focus: one piece type at a time.
Generalized
SOLO CHESS
Each piece has a specific # of captures remaining.
No captures left.
One capture left.
Two captures left.
Generalized
SOLO CHESS
Given the locations and types of the \(n\) pieces
and the number of captures that each piece can make,
The Computational Question
determine if there is a legal sequence of captures
that clears the board.
\(n\) playing on boards with captures per piece.
pieces
rooks
queens
pawns
bishops
rooks
1D
2D
\(k \in \{{\color{LightGray}0,1},2\}\)
\(k \in \{0,1,2\}\)
\(k \in \{0,1,2\}\)
knights
\(k \in \{{\color{LightGray}0,1},2\}\)
Generalized
SOLO CHESS
Actually this setting is tractable even for
\(k \in \{0,1,\ldots,d\}\) for arbitrary \(d\).
The hardness is due to a reduction from
Red-Blue Dominating Set.
Bishops and rooks have similar moves,
so the hardness follows by a 45-deg rotation of configurations.
The queens-only setting is hard even for the
special case when \(k = 2\).
Pawns restricted to captures-only feel like a bishop variant,
but turn out to be tractable if \(k = 2\) for each piece.
The case for knights is open!
We show that a natural generalization is hard.
Roadmap
Rooks only
on 1D Boards
Assume — WLOG* — that we want to clear to the leftmost piece.
*Can guess the final surviving piece.
Rooks only
on 1D Boards
(Cannot move)
(One capture)
(Two captures)
Rooks only
on 1D Boards
(No fuel)
(One unit of fuel)
(Two units of fuel)
Rooks only
on 1D Boards
The total amount of fuel should be at least (#rooks - 1).
Characterizing solvable instances: intuition
Rooks only
on 1D Boards
The total amount of fuel should be at least (#rooks - 1).
Characterizing solvable instances: intuition
Solvable 👍
Rooks only
on 1D Boards
The total amount of fuel should be at least (#rooks - 1).
Characterizing solvable instances: intuition
Solvable 👍
Rooks only
on 1D Boards
The total amount of fuel should be at least (#rooks - 1).
Characterizing solvable instances: intuition
Not solvable 😕
Rooks only
on 1D Boards
The total amount of fuel should be at least (#rooks - 1).
Characterizing solvable instances: intuition
Not solvable 😕
Rooks only
on 1D Boards
The total amount of fuel should be at least (#rooks - 1).
Characterizing solvable instances: intuition
Not solvable 😕
Rooks only
on 1D Boards
The total amount of fuel should be at least (#rooks - 1).
Characterizing solvable instances: intuition
Solvable 👍
Rooks only
on 1D Boards
The total amount of fuel should be at least (#rooks - 1).
Characterizing solvable instances: intuition
Rooks only
on 1D Boards
The total amount of fuel should be at least (#rooks - 1).
Characterizing solvable instances: intuition
Rooks only
on 1D Boards
The total amount of fuel should be at least (#rooks - 1).
Characterizing solvable instances: intuition
Rooks only
on 1D Boards
The total amount of fuel should be at least (#rooks - 1).
Characterizing solvable instances: intuition
Rooks only
on 1D Boards
The total amount of fuel should be at least (#rooks - 1).
Characterizing solvable instances: intuition
Rooks only
on 1D Boards
The total amount of fuel should be at least (#rooks - 1).
Characterizing solvable instances: intuition
Rooks only
on 1D Boards
The total amount of fuel should be at least (#rooks - 1).
Characterizing solvable instances: intuition
Rooks only
on 1D Boards
The total amount of fuel should be at least (#rooks - 1).
Characterizing solvable instances: intuition
Every capture burns at least one unit of fuel.
Thus if we want to make \(\ell\) captures, we need \(\ell\) units of fuel.
Rooks only
on 1D Boards
The total amount of fuel should be at least (#rooks - 1).
Characterizing solvable instances: intuition
Every capture burns at least one unit of fuel.
If we do have \(\ell\) units of fuel, we can manage if
every move reduces the total amount of fuel by one.
Rooks only
on 1D Boards
The total amount of fuel should be at least (#rooks - 1).
Characterizing solvable instances: intuition
Every capture burns at least one unit of fuel.
We ensure that a piece with more fuel captures a piece with less fuel, which is always possible by symmetry.
Rooks only
on 1D Boards
The total amount of fuel should be at least (#rooks - 1).
Characterizing solvable instances: intuition
This idea generalizes naturally to when
each piece has up to \(d\) captures left.
Roadmap
Generalized Solo Chess played with
\(n\) rooks that have 0,1, or 2 moves left
on a 2D board is NP-complete.
Rooks only
on 2D Boards
Red-Blue Dominating Set
Rooks only
on 2D Boards
Are there at most \(k\) red vertices that dominate all the blue vertices?
Rooks only
on 2D Boards
Are there at most \(k\) red vertices that dominate all the blue vertices?
Rooks only
on 2D Boards
Rooks only
on 2D Boards
\(n\) blue rooks on a top row
corresponding to \(n\) red vertices.
Rooks only
on 2D Boards
also introduce \(m\) rows
corresponding to \(m\) blue vertices.
Rooks only
on 2D Boards
place a blue rook on the \(j^{th}\) column of the \(i^{th}\) row
if the \(i^{th}\) blue vertex is adjacent to the \(j^{th}\) red vertex.
Rooks only
on 2D Boards
place a green rook at the end* of
every row corresponding to blue vertices
Rooks only
on 2D Boards
The idea: if the \(i^{th}\) blue vertex is dominated by the \(\ell^{th}\) red vertex,
then all blue rooks on the \(i^{th}\) row capture the rook on the \(\ell^{th}\) column.
Rooks only
on 2D Boards
The idea: if the \(i^{th}\) blue vertex is dominated by the \(\ell^{th}\) red vertex,
then all blue rooks on the \(i^{th}\) row capture the rook on the \(\ell^{th}\) column.
Rooks only
on 2D Boards
The the extreme green rook on the \(j^{th}\) row
captures the lone red rook on that row.
Rooks only
on 2D Boards
The the extreme green rook on the \(j^{th}\) row
captures the lone red rook on that row.
Rooks only
on 2D Boards
Now these rooks clear to the top,
creating red rooks corresponding to dominating set vertices.
Rooks only
on 2D Boards
Now these rooks clear to the top,
creating red rooks corresponding to dominating set vertices.
Rooks only
on 2D Boards
To fully clear the board, we add \(k\) green rooks
to the extreme right of the top row.
Rooks only
on 2D Boards
To fully clear the board, we add \(k\) green rooks
to the extreme right of the top row.
Rooks only
on 2D Boards
The number of green rooks on the top row
controls the budget for the dominating set.
Roadmap
Solo Chess
Open Problems
Complexity of Generalized Solo Chess
for rooks/bishops when each piece has two captures.
Solo Chess
Open Problems
Complexity of Generalized Solo Chess
for pawns when each piece has a designated # of captures.
Solo Chess
Open Problems
Complexity of Generalized Solo Chess
played by Knights only.
Solo Chess
New Directions
Consider optimization versions
(e.g, clear at least k pieces).
Solo Chess
New Directions
Constraints on distance moved
instead of #of captures
Solo Chess
Special classes of input
(e.g, constant #pieces per row/column; \(c \times d\) boards, etc.)
New Directions
Solo Chess
Fairy pieces?
Multiple types of pieces at a time?
Counting variants/another solution problems?
Generating puzzles with \(k\) solutions?
Practical solvers for solo chess?
New Directions
Thank you!
Solo Chess
By Neeldhara Misra
Solo Chess
Presentation made for Fun with Algorithms (2022), based on the paper "Chess is Hard even for a Single Player".
- 275