gov.sandia.cognition.learning.algorithm.hmm

## Class MarkovChain

• All Implemented Interfaces:
CloneableSerializable, java.io.Serializable, java.lang.Cloneable
Direct Known Subclasses:
HiddenMarkovModel

```@PublicationReference(author="Wikipedia",
title="Markov chain",
type=WebPage,
year=2010,
url="http://en.wikipedia.org/wiki/Markov_chain")
public class MarkovChain
extends AbstractCloneableSerializable```
A Markov chain is a random process that has a finite number of states with random transition probabilities between states at discrete time steps.
Since:
3.0
Author:
Kevin R. Dixon
Serialized Form
• ### Field Summary

Fields
Modifier and Type Field and Description
`static int` `DEFAULT_NUM_STATES`
Default number of states, 3.
`protected Vector` `initialProbability`
Initial probability Vector over the states.
`protected Matrix` `transitionProbability`
Transition probability matrix.
• ### Constructor Summary

Constructors
Constructor and Description
`MarkovChain()`
Default constructor.
`MarkovChain(int numStates)`
Creates a new instance of ContinuousDensityHiddenMarkovModel with uniform initial and transition probabilities.
```MarkovChain(Vector initialProbability, Matrix transitionProbability)```
Creates a new instance of ContinuousDensityHiddenMarkovModel
• ### Method Summary

All Methods
Modifier and Type Method and Description
`MarkovChain` `clone()`
This makes public the clone method on the `Object` class and removes the exception that it throws.
`protected static Vector` `createUniformInitialProbability(int numStates)`
Creates a uniform initial-probability Vector
`protected static Matrix` `createUniformTransitionProbability(int numStates)`
Creates a uniform transition-probability Matrix
`Vector` ```getFutureStateDistribution(Vector current, int numSteps)```
Simulates the Markov chain into the future, given the transition Matrix and the given current state-probability distribution, for the given number of time steps into the future.
`Vector` `getInitialProbability()`
Getter for initialProbability.
`int` `getNumStates()`
Gets the number of states in the HMM.
`Vector` `getSteadyStateDistribution()`
Returns the steady-state distribution of the state distribution.
`Matrix` `getTransitionProbability()`
Getter for transitionProbability.
`void` `normalize()`
Normalizes this Markov chain.
`protected void` `normalizeTransitionMatrix(Matrix A)`
Normalizes the transition-probability matrix
`protected static void` ```normalizeTransitionMatrix(Matrix A, int j)```
Normalizes a column of the transition-probability matrix
`void` `setInitialProbability(Vector initialProbability)`
Setter for initialProbability
`void` `setTransitionProbability(Matrix transitionProbability)`
Setter for transitionProbability.
`java.lang.String` `toString()`
• ### Methods inherited from class java.lang.Object

`equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`
• ### Field Detail

• #### DEFAULT_NUM_STATES

`public static final int DEFAULT_NUM_STATES`
Default number of states, 3.
Constant Field Values
• #### initialProbability

`protected Vector initialProbability`
Initial probability Vector over the states. Each entry must be nonnegative and the Vector must sum to 1.
• #### transitionProbability

`protected Matrix transitionProbability`
Transition probability matrix. The entry (i,j) is the probability of transition from state "j" to state "i". As a corollary, all entries in the Matrix must be nonnegative and the columns of the Matrix must sum to 1.
• ### Constructor Detail

• #### MarkovChain

`public MarkovChain()`
Default constructor.
• #### MarkovChain

`public MarkovChain(int numStates)`
Creates a new instance of ContinuousDensityHiddenMarkovModel with uniform initial and transition probabilities. Also uses Dirichlet PDFs as the emission functions.
Parameters:
`numStates` - Number of states to use.
• #### MarkovChain

```public MarkovChain(Vector initialProbability,
Matrix transitionProbability)```
Creates a new instance of ContinuousDensityHiddenMarkovModel
Parameters:
`initialProbability` - Initial probability Vector over the states. Each entry must be nonnegative and the Vector must sum to 1.
`transitionProbability` - Transition probability matrix. The entry (i,j) is the probability of transition from state "j" to state "i". As a corollary, all entries in the Matrix must be nonnegative and the columns of the Matrix must sum to 1.
• ### Method Detail

• #### clone

`public MarkovChain clone()`
Description copied from class: `AbstractCloneableSerializable`
This makes public the clone method on the `Object` class and removes the exception that it throws. Its default behavior is to automatically create a clone of the exact type of object that the clone is called on and to copy all primitives but to keep all references, which means it is a shallow copy. Extensions of this class may want to override this method (but call `super.clone()` to implement a "smart copy". That is, to target the most common use case for creating a copy of the object. Because of the default behavior being a shallow copy, extending classes only need to handle fields that need to have a deeper copy (or those that need to be reset). Some of the methods in `ObjectUtil` may be helpful in implementing a custom clone method. Note: The contract of this method is that you must use `super.clone()` as the basis for your implementation.
Specified by:
`clone` in interface `CloneableSerializable`
Overrides:
`clone` in class `AbstractCloneableSerializable`
Returns:
A clone of this object.
• #### createUniformInitialProbability

`protected static Vector createUniformInitialProbability(int numStates)`
Creates a uniform initial-probability Vector
Parameters:
`numStates` - Number of states to create the Vector for
Returns:
Uniform probability Vector.
• #### createUniformTransitionProbability

`protected static Matrix createUniformTransitionProbability(int numStates)`
Creates a uniform transition-probability Matrix
Parameters:
`numStates` - Number of states to create the Matrix for
Returns:
Uniform probability Matrix.
• #### getInitialProbability

`public Vector getInitialProbability()`
Getter for initialProbability.
Returns:
Initial probability Vector over the states. Each entry must be nonnegative and the Vector must sum to 1.
• #### setInitialProbability

`public void setInitialProbability(Vector initialProbability)`
Setter for initialProbability
Parameters:
`initialProbability` - Initial probability Vector over the states. Each entry must be nonnegative and the Vector must sum to 1.
• #### getTransitionProbability

`public Matrix getTransitionProbability()`
Getter for transitionProbability.
Returns:
Transition probability matrix. The entry (i,j) is the probability of transition from state "j" to state "i". As a corollary, all entries in the Matrix must be nonnegative and the columns of the Matrix must sum to 1.
• #### setTransitionProbability

`public void setTransitionProbability(Matrix transitionProbability)`
Setter for transitionProbability.
Parameters:
`transitionProbability` - Transition probability matrix. The entry (i,j) is the probability of transition from state "j" to state "i". As a corollary, all entries in the Matrix must be nonnegative and the columns of the Matrix must sum to 1.
• #### normalize

`public void normalize()`
Normalizes this Markov chain.
• #### normalizeTransitionMatrix

```protected static void normalizeTransitionMatrix(Matrix A,
int j)```
Normalizes a column of the transition-probability matrix
Parameters:
`A` - Transition probability matrix to normalize, modified by side effect
`j` - Column of the matrix to normalize
• #### normalizeTransitionMatrix

`protected void normalizeTransitionMatrix(Matrix A)`
Normalizes the transition-probability matrix
Parameters:
`A` - Transition probability matrix to normalize, modified by side effect
• #### getNumStates

`public int getNumStates()`
Gets the number of states in the HMM.
Returns:
Number of states in the HMM.
• #### toString

`public java.lang.String toString()`
Overrides:
`toString` in class `java.lang.Object`

`public Vector getSteadyStateDistribution()`
Returns the steady-state distribution of the state distribution. This is also the largest eigenvector of the transition-probability matrix, which has an eigenvalue of 1.
Returns:
Steady-state probability distribution of state distribution.
• #### getFutureStateDistribution

```public Vector getFutureStateDistribution(Vector current,
int numSteps)```
Simulates the Markov chain into the future, given the transition Matrix and the given current state-probability distribution, for the given number of time steps into the future.
Parameters:
`current` - Current distribution of probabilities of the various states.
`numSteps` - Number of steps into the future to simulate.
Returns:
State-probability distribution for numSteps into the future, starting from the given state-probability distribution.