Class MealyDHC<I,​O>

    • Constructor Detail

      • MealyDHC

        public MealyDHC​(net.automatalib.alphabet.Alphabet<I> alphabet,
                        MembershipOracle<I,​net.automatalib.word.Word<O>> oracle)
        Constructor, provided for backwards compatibility reasons.
        Parameters:
        alphabet - the learning alphabet
        oracle - the learning membership oracle
      • MealyDHC

        public MealyDHC​(net.automatalib.alphabet.Alphabet<I> alphabet,
                        MembershipOracle<I,​net.automatalib.word.Word<O>> oracle,
                        GlobalSuffixFinder<? super I,​? super net.automatalib.word.Word<O>> suffixFinder,
                        Collection<? extends net.automatalib.word.Word<I>> initialSplitters)
        Constructor.
        Parameters:
        alphabet - the learning alphabet
        oracle - the learning membership oracle
        suffixFinder - the suffix finder to use for analyzing counterexamples
        initialSplitters - the initial set of splitters, null or an empty collection will result in the set of splitters being initialized as the set of alphabet symbols (interpreted as Words)
    • Method Detail

      • getGlobalSuffixes

        public Collection<net.automatalib.word.Word<I>> getGlobalSuffixes()
        Description copied from interface: GlobalSuffixLearner
        Retrieves the global suffixes of this learner. Calling this method before LearningAlgorithm.startLearning() should return an empty collection.

        The return value should not be modified; attempting to do so may result in an UnsupportedOperationException. It is the implementation's responsibility to ensure attempted modifications do not corrupt the learner's internal state.

        Specified by:
        getGlobalSuffixes in interface GlobalSuffixLearner<net.automatalib.automaton.transducer.MealyMachine<?,​I,​?,​O>,​I,​net.automatalib.word.Word<O>>
        Returns:
        the global suffixes used by this algorithm
      • addGlobalSuffixes

        public boolean addGlobalSuffixes​(Collection<? extends net.automatalib.word.Word<I>> newGlobalSuffixes)
        Description copied from interface: GlobalSuffixLearner
        Add the provided suffixes to the collection of global suffixes. As this method is designed to possibly trigger a refinement, it is illegal to invoke it before LearningAlgorithm.startLearning() has been called.

        The implementation may choose to (but is not required to) omit suffixes which are already present (that is, manage the global suffixes as a proper set).

        Specified by:
        addGlobalSuffixes in interface GlobalSuffixLearner<net.automatalib.automaton.transducer.MealyMachine<?,​I,​?,​O>,​I,​net.automatalib.word.Word<O>>
        Parameters:
        newGlobalSuffixes - the global suffixes to add
        Returns:
        true if a refinement was triggered by adding the global suffixes, false otherwise.
      • addSuffixesUnchecked

        protected boolean addSuffixesUnchecked​(Collection<? extends net.automatalib.word.Word<I>> newSuffixes)
      • startLearning

        public void startLearning()
        Description copied from interface: LearningAlgorithm
        Starts the model inference process, creating an initial hypothesis in the provided model object. Please note that it should be illegal to invoke this method twice.
        Specified by:
        startLearning in interface LearningAlgorithm<net.automatalib.automaton.transducer.MealyMachine<?,​I,​?,​O>,​I,​net.automatalib.word.Word<O>>
      • refineHypothesis

        public boolean refineHypothesis​(DefaultQuery<I,​net.automatalib.word.Word<O>> ceQuery)
        Description copied from interface: LearningAlgorithm
        Triggers a refinement of the model by providing a counterexample. A counterexample is a query which exposes different behavior of the real SUL compared to the hypothesis. Please note that invoking this method before an initial invocation of LearningAlgorithm.startLearning() should be illegal.
        Specified by:
        refineHypothesis in interface LearningAlgorithm<net.automatalib.automaton.transducer.MealyMachine<?,​I,​?,​O>,​I,​net.automatalib.word.Word<O>>
        Parameters:
        ceQuery - the query which exposes diverging behavior, as posed to the real SUL (i.e. with the SULs output).
        Returns:
        true if the counterexample triggered a refinement of the hypothesis, false otherwise (i.e., it was no counterexample).
      • getHypothesisModel

        public net.automatalib.automaton.transducer.impl.CompactMealy<I,​O> getHypothesisModel()
        Description copied from interface: LearningAlgorithm
        Returns the current hypothesis model.

        N.B.: By the contract of this interface, the model returned by this method should not be modified by external code (i.e., M generally should refer to an immutable interface), and its validity is retained only until the next invocation of LearningAlgorithm.refineHypothesis(DefaultQuery). If older hypotheses have to be maintained, a copy of the returned model must be made.

        Please note that it should be illegal to invoke this method before an initial invocation of LearningAlgorithm.startLearning().

        Specified by:
        getHypothesisModel in interface LearningAlgorithm<net.automatalib.automaton.transducer.MealyMachine<?,​I,​?,​O>,​I,​net.automatalib.word.Word<O>>
        Returns:
        the current hypothesis model.
      • addAlphabetSymbol

        public void addAlphabetSymbol​(I symbol)
        Specified by:
        addAlphabetSymbol in interface net.automatalib.alphabet.SupportsGrowingAlphabet<I>
      • resume

        public void resume​(MealyDHCState<I,​O> state)
        Description copied from interface: Resumable
        Resume the datastructure from a previously suspended point in time.
        Specified by:
        resume in interface Resumable<I>
        Parameters:
        state - The learner state.