|
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: "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. |
| 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 "p1-10".)