lab_ml
Lazy Machine Learning

Represents a algorithm to learn the game of Nim. More...
#include <NimLearner.h>
Public Member Functions  
NimLearner (unsigned startingTokens)  
Constructor to create a game of Nim with startingTokens starting tokens. More...  
std::vector< Edge >  playRandomGame () const 
Plays a random game of Nim, returning the path through the state graph as a vector of Edge classes. More...  
void  updateEdgeWeights (const std::vector< Edge > &path) 
void  labelEdgesFromThreshold (int threshold) 
Label the edges as "WIN" or "LOSE" based on a threshold. More...  
const Graph &  getGraph () const 
Returns a constant reference to the state space graph. More...  
Private Attributes  
Graph  g_ 
Vertex  startingVertex_ 
Represents a algorithm to learn the game of Nim.
NimLearner::NimLearner  (  unsigned  startingTokens  ) 
Constructor to create a game of Nim with startingTokens
starting tokens.
This function creates a graph, g_
representing all of the states of a game of Nim with vertex labels "p#X", where:
For example: "p14" is Player 1's turn with four (4) tokens remaining "p28" is Player 2's turn with eight (8) tokens remaining
All legal moves between states are created as edges with initial weights of 0.
startingTokens  The number of starting tokens in the game of Nim. 
const Graph & NimLearner::getGraph  (  )  const 
Returns a constant reference to the state space graph.
void NimLearner::labelEdgesFromThreshold  (  int  threshold  ) 
Label the edges as "WIN" or "LOSE" based on a threshold.
std::vector< Edge > NimLearner::playRandomGame  (  )  const 
Plays a random game of Nim, returning the path through the state graph as a vector of Edge
classes.
The origin
of the first Edge
must be the vertex with the label "p1#", where # is the number of starting tokens. (For example, in a 10 token game, result[0].origin must be the vertex "p110".)