class Markov::Chain(LinkType)


A Chain is a vehicle for generating probable sequences of type LinkType

Defined in:



Instance Method Summary

Constructor Detail

def : JSON::PullParser) #

Makes it possible to use #to_json and #from_json (see Crystal docs)

[View source]
def : Markov::TransitionTable(LinkType), seed : LinkType? = nil) #

For larger processes, you'll want to externally train a TransitionTable then pass it in as an argument. If #seed is not provided, it will default to a random item chosen with TransitionTable#random_key

[View source]
def : Array(LinkType), seed : LinkType = (sample.sample(1)).first) #

If you have a small (Array-sized) data set, you can pass it as sample and a TransitionTable will be constructed for you with the sample data.

#seed should be the element in sample which you would like to begin the sequence. If no #seed is provided, a random element will be selected from sample.

[View source]

Instance Method Detail

def generate(count : Int32) #

Generates a probable, sequential Array of LinkType elements of count length

[View source]
def generated #

Returns an ordered Array(LinkType) of all LinkType elements generated

[View source]
def generated=(_generated : Array(LinkType)) #

def next : LinkType #

Generates the next probable LinkType element

[View source]
def on_dead_end(&block : Proc(Markov::TransitionTable(LinkType), Markov::Chain(LinkType), Exception, LinkType)) : Proc(Markov::TransitionTable(LinkType), Markov::Chain(LinkType), Exception, LinkType) #

Sets an exception handler for EmptyTransitionMatrixException when Chain instance reaches a dead end while using Chain#generate or Chain#next. Returned value is inserted as the next probable element.


c = Markov::Chain(String).new sample: ["Koala", "Kangaroo"] of String, seed: "Kangaroo"
c.on_dead_end do |transition_table, chain, exception|
end #=> "Koala" #=> "Kangaroo" #=> "Koala"

[View source]
def seed #

Returns #seed element.

[View source]
def seed=(_seed : LinkType) #

def to_json(json : JSON::Builder) #

def transition_table #

Returns the trained instance of TransitionTable

[View source]
def transition_table=(_transition_table : Markov::TransitionTable(LinkType)) #