示例#1
0
        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();
        }
示例#2
0
            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);
                }
            }
示例#3
0
        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("}");
        }