An investigation into the application of genetic programming to combinatorial game theory
AAn investigation into the application of geneticprogramming to combinatorial game theory
February 2, 2021
Melissa A. Huggan † , Craig Tennenhouse Ryerson University, Toronto, ON, Canada, [email protected] University of New England, Biddeford, ME 04005, USA, [email protected]
Abstract
Genetic programming is the practice of evolving formulas using crossoverand mutation of genes representing functional operations. Motivated bygenetic evolution we develop and solve two combinatorial games, and wedemonstrate some advantages and pitfalls of using genetic programmingto investigate Grundy values. We conclude by investigating a combina-torial game whose ruleset and starting positions are inspired by geneticstructures.
Keywords : Combinatorial Game Theory, Genetic Algorithms, Genetic Pro-gramming
The fundamental unit of biological evolution is a gene, which represents a smallpiece of information, and the genome is a collection of genes that encodes anorganism’s complete genetic information. Within the context of biological evo-lution, the genes of the most fit organisms survive and are passed onto thenext generation, with their chromosomes modifying over time to better fit theirenvironment through competition. This modification occurs through the pro-cesses of mutation and crossover, wherein individual genes are altered and pairsof chromosomes trade information, respectively, as organisms pass down theirgenetic information to their progeny (see Figure 1). † Supported by the Natural Sciences and Engineering Research Council of Canada (fundingreference number PDF-532564-2019). a r X i v : . [ m a t h . C O ] J a n igure 1: A pair of chromosomes undergoing crossover then mutation.This set of mechanisms in biological evolution has been co-opted as a modelfor algorithmic development of heuristic solutions to a variety of problems, likeantenna design [10], the Traveling Salesman Problem [3], and graph coloring[6]. In these problems a chromosome encodes information about the structureand properties of working solutions. These solutions are the results of geneticalgorithms . When the chromosome instead represents a function or program theprocess is called genetic programming . Genetic programming is often used whena user has a collection of data points and is looking for a function to fit them.The fitness of a particular program is therefore related to the error between thedata points and the program. This mechanism is similar to that of regressionin statistical methods (Figure 2).Figure 2: A curve with poor fit to data points (left) and another with muchbetter fit (right).There are a number of different structures used in genetic programming torepresent a chromosome, the simplest being a linear structure and a tree struc-ture. A linearly organized chromosome can be visualized much like a biologicalchromosome (see Figure 1). One example of such a structure is in [12], whichintroduces Multi-Expression Programming. Chromosomes organized into treeshave some advantages over the linear approach, and we will discuss them fur-ther in Section 1.1. As chromosomes undergo crossover and mutation, the errortends to decrease and the genetic program evolves to progressively better fit thegoal data. 2enetic algorithms have been applied to combinatorial games, (see [9, 14]).However, these efforts have been focused on using genetic programming to de-velop strategies rather than finding a formula for the Grundy values. We areinterested in examining whether genetic programming could be a useful toolfor determining values of combinatorial game positions. The only model forthis type of project in the literature is in [12], which uses the Multi-ExpressionProgramming model with a linear chromosome. This method does not preciselyfit our needs, as the author of that paper focuses on the outcome class classi-fication problem instead of Grundy values, and restricts their investigation to nim . However, the project and its success serve as a strong motivator for theapplication of genetic programming to combinatorial games, and we hope wehave done it justice in extending their results and adding to the body of workcombining these two mathematical endeavors.Recall that the Grundy value of an impartial game position is the smallestnon-negative integer not included in the Grundy values of its options [15, 7]. Formore information about combinatorial game theory, see [1, 2, 4]. In this projectwe generate data points of the form (
H, g ), where H ∈ Z n is a list of integersrepresenting a game position, and g ∈ Z is the associated Grundy value. Of themyriad difficulties to overcome in the project, not least of which is the fact thatheuristics are not often useful for calculating Grundy values. In truth, eithera function completely determines the value of a game or it is incorrect. Thisleaves us with the difficult task of devising a fitness function that representsdistance, not a natural concept in the space of impartial game values, and atthe same time leads to eventual convergence with an error of zero. Since we are interested in data points that are computationally inexpensiveto determine, we have chosen to use the Python package gpLearn [16]. Thispackage uses the tree model of chromosome representation, introduced in theIntroduction to Section 1, wherein each leaf is associated with a primitive (aconstant or a single input parameter), and each internal node a function on itschild node(s). The root node is therefore recursively associated with a singlefunction on the set of primitives (see Figure 3).Mutation is represented by pseudo-randomly replacing a node with a dif-ferent function or primitive (or one of another set of mutation-like actions), asappropriate. Crossover between chromosomes is enacted by swapping sub-trees.For the games in Sections 2 and 3 we examined a number of different sets ofhyper-parameters, and the most reasonable for both convergence and computa-tion time were heap sizes up to 10 on positions with anywhere from one to fiveheaps.The package gpLearn is intended for fitting real-valued functions of severalreal variables to data points using standard elementary functions and binary3igure 3: A chromosome in tree format representing the function f ( x, y ) = ln(2+ x ) x (0 − y ) .operations over the reals. We modified the default set of functions to insteadfocus on discrete functions of several discrete variables. We wrote and includedthe following binary and unary operations, which operate bitwise on integerinputs: XOR , AND , OR , NOT . We also included
MOD , LOG , and PLUS1 , whose opera-tions are self-explanatory. Finally, we introduced logical operators
EQUAL , LESS ,and
GREATER to return 0 for False and 1 for True. Default functions included
SUB for subtraction,
ADD , TIMES , and
DIVIDE . Our fitness function computedthe total absolute difference between each genetic program and the computedGrundy values, so that a lower fitness value represents a better fit, although weexperimented with measuring distance using the nim-sum.Populations ranged from 1 ,
000 to 10 ,
000 individual programs, and we re-stricted most runs to 20 generations.
Elites , relatively highly fit programs ineach generation, were retained unmodified between generations. We also ex-perimented with rates of mutation, settling on higher values to prevent gettingstuck in local minima.
There are two primary methods of crossover used in genetic algorithms, one-point and two-point . For the former, consider a pair of bit strings of length n , B = ( a , . . . , a n ) and B = ( b , . . . , b n ). An integer k ∈ [1 , n ) is chosenpseudo-randomly, and the sub-strings ( a , . . . , a k ) and ( b , . . . , b k ) are swapped,leading to the new bit strings B (cid:48) = ( b , . . . , b k , a k +1 , . . . , a n ) , B (cid:48) = ( a , . . . , a k , b k +1 , . . . , b n ) . After crossover there is a possible mutation, depending on the chosen mutationrate, turning, say, B (cid:48) into B (cid:48)(cid:48) = ( b , . . . , b i − , − b i , b i +1 , . . . , b k , a k +1 , . . . , a n ).Motivated by these processes we define a new impartial combinatorial game, ga1 . In order to simplify both rules and analysis we define a position as a singlebit string. A mutation move flips a single bit in the string, and while there is4o real crossover in a single string we consider the flip of a sequence of bits tobe representative of this operation. Ruleset 2.1 ( ga1 ) . A position in ga1 is a bit string of length n . There aretwo move options. Crossover consists of choosing an integer k , ≤ k ≤ ( n − ,wherein all bits from position through k are flipped. A mutation move is simplythe flip of any single bit in the string. A move is legal only if the total numberof sub-strings of the form and increases. This latter restriction, that ‘disorder’ increases, serves two purposes. Firstly,it ensures that the game ends in a finite number of moves. Secondly, it representsthe tendency of chromosomes to combine in ever more complex ways over time.We define the condition of increasing sub-strings 01 and 10 formally as follows.
Definition 2.2.
The entropy of a bit string game is the number of sub-stringsof the form and . The game ga1 is equivalent to a heap game in the following way. If weconsider a run in a bit string to be a maximal sub-string consisting of all 0s orall 1s, then any bit string can be converted into a list of integers representingrun sizes. For example, the string 001000111 becomes (2 , , , Proposition 2.3. If H = ( h , . . . , h k ) is a list of heaps representing a bit stringin ga1 , then1. Any heap equal to can be removed2. The order of the heaps does not affect the Grundy value3. Each move is equivalent to one of the following(a) Split any heap h i > into two heaps of size at least each(b) Remove from any heap h i ≥ (c) Remove from any heap h i ≥ and split the remainder into twoheaps of at least each(d) Remove any heap of size or Proof.
We will prove each part of Proposition 2.3 separately.1. A single bit between two runs of the opposite value or at the end of astring is represented by a heap of size 1. No move that increases entropyhas an effect on this heap, and thus its removal has no effect on game playnor the Grundy value of the position. Thus it can be removed.5. Say that heaps h i and h j switch positions in H resulting in H (cid:48) . Anymutation or crossover point k chosen within h i in H is equivalent to anindex k (cid:48) in H (cid:48) , which results in identical game play. Therefore the orderof the heaps in H does not affect the game value.3. For the move equivalences, note that in order to make a legal crossovermove in ga1 a player must choose the crossover point in the midst of a run.This effectively splits the run into two, and leaves the others alone (otherthan switching the bits in the affected sub-string). This is equivalent tosplitting a heap into two and if one or both of the resulting heaps havesize 1 then they can be removed from play. Similarly, a legal mutationmove must also occur in the midst of a run, splitting a heap into eithertwo or three with at least one heap of size 1. Again, these size 1 heapscan be removed.As a direct result of Proposition 2.3 we need only consider single heap posi-tions, since the Grundy value of a list of heaps is equal to the nim-sum of theGrundy values of the individual heaps.The package gpLearn was employed as described in Section 1.1. While noexact formula was found, after 14 generations a local minimum was reached.Modifying hyper-parameters and running for another 7 generations led to theformula MOD(1+h,MOD(h+1,3) + 1) - MOD(h-1,4) + MOD(1+h,3) + 4 where h is the size of a single heap and MOD(x,n) represents x (mod n ).While not a particularly accurate formula we do see the presence of both mod-ulo 3 and modulo 4 . Hence, we examine the actual Grundy values closely forperiodicity of order twelve and find a striking similarity with the values of thecombinatorial game kayles . Ruleset 2.4 ( kayles ) . [5] In kayles a player may remove one or two stonesfrom any heap, and if any stones remain these may be split into two heaps. kayles has octal code 0 .
77 [4] and has been well-studied. In particular, itis known that the Grundy values for a single heap game of kayles of size n isperiodic with period 12 after n = 71 [8]. Theorem 2.5.
The Grundy value of a single heap game of size n in ga1 isequal to the value of a heap of size ( n − in kayles .Proof. This is easy to compute for n ≤
3. If n ≥ { ( j, n − j ) : 2 ≤ j ≤ ( n − j ) }∪{ ( k, n − k −
1) : 2 ≤ k ≤ n − k − }∪{ ( n − , ( n − } .The options for an ( n − kayles are { ( j, n − j −
2) : 1 ≤ j ≤ n − j − } ∪ { ( k, n − k −
3) : 1 ≤ k ≤ n − k − } ∪ { ( n − , ( n − } . We cantherefore consider a move in ga1 to be equivalent to the following process:1. Remove a stone from a heap,2. Make a kayles move in the resulting heap of size ( n − ga1 reduces to a game of kayles , and thus the Grundyvalues are computable in the same manner as those for kayles . Next we consider a similar impartial game based on genetic crossover, this timeusing two positions instead of one. Consider a pair of bit strings B = ( a , . . . , a n )and B = ( b , . . . , b n ) . If 1 ≤ x < y ≤ n are integers then two-point crossover using positions x and y results in the bit strings B (cid:48) = ( a , . . . , a x − , b x , . . . , b y − , a y , . . . , a n )and B (cid:48) = ( b , . . . , b x − , a x , . . . , a y − , b y , . . . , b n ) . That is, a sub-string with matching indices from each bit string is swapped. Wewish to define an impartial game motivated by two-point crossover as a movemechanic. As we did with ga1 , we play only in a single bit string. This alsomeans that defining mutation-type moves is redundant since any such movewould be equivalent to crossover with x = y − Ruleset 3.1 ( ga2 ) . A position in ga2 is a bit string of length n . On theirturn a player chooses two integers x, y ∈ [1 , n ] , x < y , wherein all bits fromposition x through ( y − are flipped. A move is legal only if the total numberof sub-strings of the form and increases. As with ga1 we can reduce ga2 to a game on heaps. Note that, again, arun of bits can be represented by an integer. A legal move requires that at leastone of { x, y } is chosen within a run. The possible options are1. Both x and y are within the bounds of a single run, equivalent to splittinga single heap into three heaps, 7. x and y are each within the bounds of different runs, equivalent to splittingany two heaps into two each,3. x and y are chosen so that exactly one single heap is split into two.Just as with Proposition 2.3 we see that heaps of size 1 are negligible, asis the order of the heaps. However, since players can alter multiple heaps ina single move we cannot compute the Grundy value by simply computing thenim-sum of the Grundy values of single heap games.As in Section 2 we applied gpLearn with the modified function list to com-putationally determined Grundy values, without first examining these values.Once the number of non-zero heaps was included as a primitive value in gameswith more than two heaps (e.g. (3 , h , h , h ) is a three-heap game, while(4 , h , h , h , h ) represents a four-heap position), genetic programming provedmuch more successful, yielding the formulas below with 100% accuracy:1. For a single-heap game with heap size h , MOD(SUB(h,1),PLUS1(PLUS1(1))) which is equivalent to ( h −
1) (mod 3).2. With two heaps h , h MOD(PLUS1(SUB(ADD( h , h ), XOR( h , h ))),PLUS1(PLUS1(EQUAL( h , h )))) which is equivalent to ( h + h + 1) (mod 3).3. For a three-heap game with inputs 3 , h , h , h we found MOD(ADD(ADD( h , h ), h ), ADD(3, SUB(0, 0))) which reduces to ( h + h + h ) (mod 3).While these results themselves do not provide a generalized formula, theydo generalize easily to the following. Theorem 3.2.
Let H = ( h , . . . , h n ) be an n -heap position in ga2 , and let t be the smallest non-negative integer such that ( n + t ) ≡ . Then theGrundy value of H is (cid:18) t + n (cid:80) i =1 h i (cid:19) (mod 3) .Proof. Note first that while we can eliminate heaps of size 1 in our analysis of ga2 just as we did in Proposition 2.3 for ga1 , we are not compelled to do so.In fact, not removing them makes for a simpler analysis here.In the case of a single stone it is clear that the Grundy value is 0 as no movesare possible. It is also easy to see that the claim holds when all heaps have size1 except possibly a single heap of size 2, so we need only consider the remainingcases. We proceed now by minimum counter-example. Assuming that the claimis false, let m be the smallest integer such that not all games on m -many stones8ollow the statement of the theorem. Among all such games with m stones, let H = ( h , . . . , h j ) be a position with the greatest number of heaps.For any positive integer x let x , x , x , x , x be positive integers such that x + x = x and x + x + x = x . For any i, k with 1 ≤ i < k ≤ j , the optionsof H are H \ { h i } ∪ { h i , h i } H \ { h i } ∪ { h i , h i , h i } H \ { h i , h k } ∪ { h i , h i , h k , h k } i.e. all positions in which any one heap, h i , of sufficient size is removed andreplaced with two or three heaps whose sum is h i , and those in which any twoheaps h i , h k ≥ h i , h k respectively.All options contain m total stones since we have not removed any. Further,every option has more heaps than does H , and therefore, by the choice ofminimal counter-example, adhere to the statement of the claim. Thus theirGrundy values are all equal to ( m + t + 1) (mod 3) and ( m + t + 2) (mod 3).Note also that both of these values must appear at least once among the Grundyvalues of the options of H . Therefore H must have Grundy value ( m + t )(mod 3), contradicting the claim that H fails the claim of the theorem. In order to represent both crossover and mutation more accurately, we nowconsider a game played on a pair of bit strings.
Ruleset 4.1 ( crossover-mutation (cm) ) . A position in crossover-mutation is a pair of bit strings of length n , B = ( a , . . . , a n ) and B = ( b , . . . , b n ) .There are two move options. Crossover consists of choosing an integer k , ≤ k ≤ ( n − , wherein all bits through k from B are swapped with thebits through k of B . In particular, leading to the new bit strings B (cid:48) = ( b , . . . , b k , a k +1 , . . . , a n ) , B (cid:48) = ( a , . . . , a k , b k +1 , . . . , b n ) . Mutation involves choosing a single gene c i from either of the bit strings andflipping it to − c i . In both cases, the move is legal if the total number ofsub-strings of the form and increases. All positions of crossover-mutation are equivalent to certain positionsfrom another game called arc kayles . We first present the ruleset, then provethe equivalence.
Ruleset 4.2 ( arc kayles ) . [13] Let G be a graph. On a player’s turn, theyremove an edge of G along with all edges incident to it. Theorem 4.3.
Let G be a cm position. G is equivalent to an arc kayles position. roof. Let G CM be a cm position of length n as B = ( a , . . . , a n ) and B =( b , . . . , b n ). We will first construct the arc kayles position, G AK . Thenwe will prove its equivalence by showing that there is a bijection between theoptions of the games.First consider B of G CM . For each mutation, its representation in G AK is anedge. Edges are incident in G AK if the corresponding bits in G CM were adjacentin B . Similarly for B . We label the edges of G AK by the correspondingbit label in B or B respectively. For the crossover moves in G CM , if thereexists a crossover move at a i , a i +1 and b i , b i +1 then in G AK there is a vertexconnecting the edges a i and a i +1 , call it v a i ,a i +1 , similarly for b i and b i +1 , call it v b i ,b i +1 . Label this edge as v a i ,a i +1 v b i ,b i +1 . (see Figure 4 for an example of theequivalence).To show that G AK is equivalent to G CM via this construction, we needto show that there exists a bijection between the options. In particular, that G CM − G AK = 0. Since the rulesets are impartial, we consider G CM + G AK .Suppose the first player moves in G CM with a mutation at a i . By the existenceof this mutation, it means that both a i − and a i +1 were the same as a i (if theyexist), otherwise the entropy wouldn’t have increased. After the turn, neithercan be mutated thereafter because again, it would not increase the entropy.Also, this move disallows future crossover at a i because it will not increase theentropy. Player 2 responds by removing the edge a i ∈ G AK . This has the effectof removing all incident edges, in particular, a i − , a i +1 and v a i ,a i +1 v b i ,b i +1 , ifthey exist. If instead Player 1 chose a crossover move in G CM at position k ,this eliminates the possibility of future mutations at positions a k , a k − , b k , and b k − . The corresponding move for Player 2 is to respond in G AK by removingthe edge with label v a k − ,a k v b k − ,b k , which effectively removes all edges a k , a k − , b k , and b k − .If instead Player 1 moved in G AK , we simply reverse the roles in the aboveargument and Player 2 will always have a response. Thus Player 2 will win thisgame under normal play. Hence G CM and G AK are equivalent.It turns out that cm is also closely related to another well-studied game. Ruleset 4.4 ( cram ) . [2] In the impartial game cram players take turns fillinga pair of empty orthogonally adjacent spaces in a grid.
The reader may recognize cram as the impartial version of domineering .All cm positions are also associated with 2 × n cram positions, except for afew with extra pendant vertices which, if realized in cram , require a board ofwidth at least three. We address one such case below. If the cm position is of acertain form, in particular every entry a i of B is the same, and every entry of B is 1 − a i , the proven equivalence to a subset of arc kayles positions allowsus to immediately deduce the game values. Theorem 4.5 ([2], vol 3) . Let G be a position in arc kayles in the formof a × n grid graph. Then G has value if n even and value ∗ if n odd. arc kayles position which is equivalent to a positionin crossover-mutation .Figure 5: An arc kayles position; equivalent to a position in crossover-mutation when h is present. Furthermore, this game value does not change under the addition of up to two tufts (i.e. induced stars whose center is a vertex of the grid graph).
Theorem 4.6.
Let G ( k ) be a position in arc kayles in the form of a × k grid graph with pendant edges adjacent to or of the four corners (see Figure5). Then G (2 k + 1) has game value ∗ if k ∈ { , } and ∗ if k ≥ , and G (2 k ) has value for all k ≥ when h is present.Proof. Note that if k ≤ G (2 k + 1) are easilydemonstrated by exhaustion. The value of G (2 k ) is just as easily found to be in P by considering an involution strategy, whereby the second player responds toa play on edge e with a play on the edge equivalent to e under 180 ◦ rotationalsymmetry. We now proceed by induction on k to find the remaining values of G (2 k + 1) whether or not edge h is present.Let e be an edge in G (2 k + 1), and consider H ( e ) to be the option yieldedby play on e (see Figure 6). We demonstrate that no option of G (2 k + 1) hasvalue ∗ . 11igure 6: The options of G (2 k + 1) from Figure 5. H ( h ) Play on edge x results in a graph of the form 2 × (2 k −
1) with threependant edges. If k is sufficiently large this graph has value ∗ by inductiveassumption, and hence H ( h ) does not have value ∗ . Otherwise, the valuecan be checked exhaustively for the base case of G (5), when k = 2, tohave value ∗ with or without the presence of h . Hence, H ( h ) does nothave value ∗ . H ( h ) Play on the edge x results in a position with value ∗ by Theorem 4.5.Therefore H ( h ) does not have value ∗ . H ( h ) If h is not present then play on edge y yields a path with value ∗ discon-nected from a 2 × (2 k −
2) grid graph with two pendant edges which, byTheorem 4.5, has value 0. If h is present then play on edge z yields thesum of a small graph with value ∗ and a 2 × (2 k −
4) grid graph with twopendant edges. In both cases, the resulting sums are ∗ . Therefore, H ( h )does not have value ∗ . H ( h ) Here h can be any horizontal edge to the right of h . Play on edge w results in a game with a sum of two positions with opposite parity. Hencehas value ∗ + 0 = ∗ by Theorem 4.5, so H ( h ) does not have value ∗ . H ( v ) This graph has value 0 by Theorem 4.5. H ( v ) If h is present then we have the sum of a path with value ∗ ∗ by Theorem 4.5. If h is not present then the path has value ∗ . So H ( v ) has value ∗ H ( v ) We invoke Theorem 4.5 yet again, as the resulting graph is a pair of gridgraphs with one or two pendant edges each, both with value ∗ or bothwith value 0. Therefore H ( v ) has value 0.12ince no option of G (2 k + 1) has value ∗ and G (2 k + 1) ∈ N , we see that ithas value ∗ for k ≥ crossover-mutation positions. Corollary 4.7.
The cm game composed of a length- n string of all s and alength- n string of all s has value if n is odd, ∗ if n ∈ { , } , and ∗ otherwise.Proof. This position is equivalent to the arc kayles position G ( n −
1) with h present, as indicated in Theorem 4.6.Most remaining cm positions are equivalent to 2 × n positions in cram which,while remaining unsolved, have been addressed in the literature [2]. It’s worthnoting that all cm positions in which no crossover move is possible are simplyrepresented by a disjunctive sum of paths in arc kayles , whose values areknown [11]. We have seen the possible application of genetic programming to the determi-nation of Grundy values of impartial combinatorial games. In addition, we haveseen it both provide an exact function and simply inform our own mathematicalanalysis. Note that the game for which it proved most useful, ga2 , could likelyhave been solved without the use of genetic programming and instead througha simple examination of the computed Grundy values. But we have also seenthat it was solved through the use of genetic programming, and therefore thismethod could prove useful in the future. At the very least, it could be utilizedto reduce the time and effort taken to conjecture formulas for Grundy values.We are curious whether or not genetic programming can be used for problemswithin CGT that a mathematician simply examining a list of values is unlikelyto solve. To answer this we suggest more efforts into this practice. It will bevery useful, for example, to compile a database of impartial combinatorial gameswith known and as yet unknown solutions. This could help inform the choice ofdefault functions to include in future genetic programming attempts.There are modifications that we suggest be made to future GP for CGTprojects. Firstly, it would be beneficial to develop a more robust fitness function.As there is no obvious metric over the set of nimbers outside of the nim-sum, ananalytical approach to metrics over impartial games would be helpful. Secondly,the method for fitness employed in [12] does not use pre-computed data pointsat all. Instead the author determines the fitness of a program by comparingthe computed outcome classes of a set of positions with those of its options,and relating the fitness to the number of deviations from the basic tenets of13mpartial games that are found among these computations. Something similarcould be used for Grundy value programming, involving the mex (minimumexcludant) function. However, the distance between actual value and computedvalue remains a possible stumbling block.
References [1] M. H. Albert, R. J. Nowakowski and D. Wolfe.
Lessons in Play: An Introduction toCombinatorial Game Theory . MA: A K Peters, Ltd. 2007.[2] E. R. Berlekamp, J. H. Conway and R. K. Guy.
Winning ways for your mathematicalplays . , (2nd ed.), MA: A K Peters, Ltd. 2001.[3] R. M. Brady. Optimization strategies gleaned from biological evolution, Nature , (6040), (1985), 804–806.[4] J. H. Conway. On numbers and games , 1st edition Academic Press, 1976; 2nd edition,A K Peters, Ltd., 2001.[5] H. E. Dudeney.
The Canterbury Puzzles (and Other Curious Problems) , EP Dutton,New York, 1908.[6] P. Galinier and J.-K. Hao. Hybrid evolutionary algorithms for graph coloring,
Journalof combinatorial optimization , (4), (1999), 379–397.[7] P. M. Grundy. Mathematics and games, Eureka , , (1939), 6–9.[8] R. K. Guy and C. A. B. Smith. The G-values of various games, Mathematical Proceedingsof the Cambridge Philosophical Society , (3), (1956), 514–526.[9] A. Hauptman and M. Sipper. Analyzing the intelligence of a genetically programmedchess player. In Late Breaking Papers at the Genetic and Evolutionary ComputationConference 2005 . Washington DC, June 2005.[10] G. Hornby, A. Globus, D. Linden, and J. Lohn. Automated antenna design with evolu-tionary algorithms,
Space 2006 , 2006.[11] M. Huggan and B. Stevens. Polynomial time graph families for Arc Kayles.
Integers . (2016) IFIP Student Forum ,(2004), 353–364.[13] T. J. Schaefer. On the complexity of some two-person perfect information games.
Journalof computer and system sciences.
16, (1978), 185–225.[14] M. Sipper, Y. Azaria, A. Hauptman and Y. Shichel. Designing an evolutionary strate-gizing machine for game playing and beyond.
IEEE Transactions on Systems, Man, andCybernetics, Part C , 37(4):583–593, 2007.[15] R. Sprague. ¨Uber mathematische kampfspiele,
Tohoku Mathematical Journal, First Se-ries , , (1935), 438–444.[16] T. Stephens. Gplearn Model, Genetic Programming , Copyright, 2015., Copyright, 2015.