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 | 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... | |
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#t#", where:
For example: "p1t4" is Player 1's turn with four (4) tokens remaining "p2t8" 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. |
This function creates a graph, g_
representing all of the states of a game of Nim with vertex labels "p#-X", where:
For example: "p1-4" is Player 1's turn with four (4) tokens remaining "p2-8" 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. |
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 "p1-10".)
void NimLearner::labelEdgesFromThreshold | ( | int | threshold | ) |
Label the edges as "WIN" or "LOSE" based on a threshold.
const Graph & NimLearner::getGraph | ( | ) | const |
Returns a constant reference to the state space graph.