An Application of Graph Theory and Integer Programming: Chessboard Non-attacking Puzzles

not yet part of the usual undergraduate mathematics curriculum but of growing importance in industrial mathematics: maximal cliques from graph theory and 0-1 integer programming. Consider a regular chessboard and the five chess pieces: rook (castle), bishop, knight, king, and queen. In the game of chess each player begins with two of each of the first three of those pieces and one each of the last two. A large collection of puzzles can be posed on the chessboard in which a person is assumed to have a large number of pieces of one type and none of the others. One problem is to decide how to place the maximum number of pieces of the same kind on the board (no more than one to a square) so that no capturing can occur if the pieces are played according to the usual legal moves. As an example, let's consider the rook puzzle. We wish to place as many rooks as possible on the chessboard so that no two attack each other. A rook moves orthogonally, that is, through any number of unoccupied squares parallel to an edge of the board. Thus once a rook is placed it will not be possible to place another on the same rank (row of horizontal squares) or file (column of vertical squares). Thus the problem reduces to finding a set of squares such that: