Classify Markov chain states

partitions states of the discrete-time Markov chain `bins`

= classify(`mc`

)`mc`

into disjoint communicating classes and returns the class labels `bins`

identifying the communicating class to which each state belongs.

`[`

additionally returns the states in each class (`bins`

,`ClassStates`

,`ClassRecurrence`

,`ClassPeriod`

] = classify(`mc`

)`ClassStates`

), whether the classes are recurrent (`ClassRecurrence`

), and class periods (`ClassPeriod`

).

`classify`

determines recurrence and transience from the outdegree of the*supernode*associated with each communicating class in the condensed digraph [1]. An outdegree of 0 corresponds to recurrence; an outdegree that is greater than 0 corresponds to transience. See`graphplot`

.`classify`

determines periodicity using a breadth-first search of cycles in the associated digraph, as in [3]. Class period is the greatest common divisor of the lengths of all cycles originating at any state in the class.

[1]
Gallager, R.G. *Stochastic Processes: Theory for Applications.* Cambridge, UK: Cambridge University Press, 2013.

[2]
Horn, R., and C. R.
Johnson. *Matrix Analysis.* Cambridge, UK: Cambridge University Press,
1985.

[3]
Jarvis, J. P., and D.
R. Shier. "Graph-Theoretic Analysis of Finite Markov Chains." In *Applied Mathematical
Modeling: A Multidisciplinary Approach.* Boca Raton: CRC Press, 2000.