public void ConvertInitialStates(LabeledTransitionMarkovChain ltmc) { MarkovChain.StartWithInitialDistribution(); var enumerator = ltmc.GetInitialDistributionEnumerator(); while (enumerator.MoveNext()) { var targetEntry = new StateStorageEntry(enumerator.CurrentFormulas, enumerator.CurrentTargetState); var targetState = _mapper[targetEntry]; MarkovChain.AddInitialTransition(targetState, enumerator.CurrentProbability); } MarkovChain.FinishInitialDistribution(); }
public UnderlyingDigraph(LabeledTransitionMarkovChain markovChain) { // Assumption "every node is reachable" is fulfilled due to the construction // Except maybe the stuttering state _transitionTargetNo = markovChain.Transitions; _stateNo = markovChain.SourceStates.Count; _baseGraph = new BidirectionalGraph(); var enumerator = markovChain.GetInitialDistributionEnumerator(); AddStatesFromEnumerator(null, enumerator); foreach (var sourceState in markovChain.SourceStates) { enumerator = markovChain.GetTransitionEnumerator(sourceState); markovChain.GetTransitionEnumerator(sourceState); AddStatesFromEnumerator(sourceState, enumerator); } }
public static void ExportToGv(this LabeledTransitionMarkovChain markovChain, TextWriter sb) { sb.WriteLine("digraph S {"); //sb.WriteLine("size = \"8,5\""); sb.WriteLine("node [shape=box];"); var initialStateName = "initialState"; sb.WriteLine($" {initialStateName} [shape=point,width=0.0,height=0.0,label=\"\"];"); var initialDistribution = markovChain.GetInitialDistributionEnumerator(); ExportDistribution(markovChain, sb, initialStateName, initialDistribution); foreach (var state in markovChain.SourceStates) { sb.Write($" {state} [label=\"{state}"); sb.WriteLine("\"];"); var distribution = markovChain.GetTransitionEnumerator(state); ExportDistribution(markovChain, sb, state.ToString(), distribution); } sb.WriteLine("}"); }