I - input alphabet typepublic abstract class AbstractVPDALearner<I> extends Object implements LearningAlgorithm<net.automatalib.automata.vpda.OneSEVPA<?,I>,I,Boolean>
LearningAlgorithm.DFALearner<I>, LearningAlgorithm.MealyLearner<I,O>| Modifier and Type | Field and Description |
|---|---|
protected net.automatalib.words.VPDAlphabet<I> |
alphabet |
protected DTree<I> |
dtree |
protected OneSEVPAHypothesis<I> |
hypothesis |
protected TransList<I> |
openTransitions |
protected MembershipOracle<I,Boolean> |
oracle |
| Constructor and Description |
|---|
AbstractVPDALearner(net.automatalib.words.VPDAlphabet<I> alphabet,
MembershipOracle<I,Boolean> oracle) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
closeTransitions() |
protected HypLoc<I> |
createLocation(AbstractHypTrans<I> trans) |
protected HypLoc<I> |
createLocation(net.automatalib.words.Word<I> as) |
net.automatalib.automata.vpda.OneSEVPA<?,I> |
getHypothesisModel()
Returns the current hypothesis model.
|
protected void |
initializeLocation(HypLoc<I> loc) |
protected static <I> void |
link(DTNode<I> leaf,
HypLoc<I> loc) |
protected HypLoc<I> |
makeTree(AbstractHypTrans<I> trans) |
protected Boolean |
query(AccessSequenceProvider<I> asp,
ContextPair<I> context) |
boolean |
refineHypothesis(DefaultQuery<I,Boolean> ceQuery)
Triggers a refinement of the model by providing a counterexample.
|
protected abstract boolean |
refineHypothesisSingle(DefaultQuery<I,Boolean> ceQuery) |
void |
startLearning()
Starts the model inference process, creating an initial hypothesis in the provided model object.
|
protected DTNode<I> |
updateDTTarget(AbstractHypTrans<I> trans,
boolean hard) |
protected final net.automatalib.words.VPDAlphabet<I> alphabet
protected final MembershipOracle<I,Boolean> oracle
protected final OneSEVPAHypothesis<I> hypothesis
public AbstractVPDALearner(net.automatalib.words.VPDAlphabet<I> alphabet, MembershipOracle<I,Boolean> oracle)
public void startLearning()
LearningAlgorithmstartLearning in interface LearningAlgorithm<net.automatalib.automata.vpda.OneSEVPA<?,I>,I,Boolean>public boolean refineHypothesis(DefaultQuery<I,Boolean> ceQuery)
LearningAlgorithmLearningAlgorithm.startLearning() should be illegal.refineHypothesis in interface LearningAlgorithm<net.automatalib.automata.vpda.OneSEVPA<?,I>,I,Boolean>ceQuery - the query which exposes diverging behavior, as posed to the real SUL (i.e. with the SULs output).protected abstract boolean refineHypothesisSingle(DefaultQuery<I,Boolean> ceQuery)
public net.automatalib.automata.vpda.OneSEVPA<?,I> getHypothesisModel()
LearningAlgorithm
N.B.: By the contract of this interface, the model returned by this method may not be modified (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().
getHypothesisModel in interface LearningAlgorithm<net.automatalib.automata.vpda.OneSEVPA<?,I>,I,Boolean>protected void closeTransitions()
protected DTNode<I> updateDTTarget(AbstractHypTrans<I> trans, boolean hard)
protected HypLoc<I> makeTree(AbstractHypTrans<I> trans)
protected HypLoc<I> createLocation(AbstractHypTrans<I> trans)
protected Boolean query(AccessSequenceProvider<I> asp, ContextPair<I> context)
Copyright © 2018. All rights reserved.