Пример #1
0
            private void AddTransitions(int sourceState, bool areInitialTransitions, TransitionCollection transitions)
            {
                var transitionNo = transitions.CountValid();

                var placeOfTransition = _markovChain.GetPlaceForNewTransitionChainElements(transitionNo);

                var index = 0L;

                foreach (var transition in transitions)
                {
                    Assert.That(index < transitionNo, "Bug");

                    var probTransition = (LtmcTransition *)transition;

                    CheckIfTransitionIsValid(probTransition);

                    _markovChain._transitionMemory[placeOfTransition + index] =
                        new TransitionElement
                    {
                        TargetState = transition->TargetStateIndex,
                        Formulas    = probTransition->Formulas,
                        Probability = probTransition->Probability
                    };
                    index++;
                }
                Assert.That(index == transitionNo, "Bug");

                if (areInitialTransitions)
                {
                    _markovChain._indexOfFirstInitialTransition = placeOfTransition;
                    _markovChain._numberOfInitialTransitions    = transitionNo;
                }
                else
                {
                    _markovChain.SourceStates.Add(sourceState);
                    _markovChain._stateStorageStateToFirstTransitionElementMemory[sourceState] = placeOfTransition;
                    _markovChain._stateStorageStateTransitionNumberElementMemory[sourceState]  = transitionNo;
                }
            }