Class DynamicIncrementalMealyTreeBuilder<I,O>
- java.lang.Object
-
- net.automatalib.incremental.mealy.tree.DynamicIncrementalMealyTreeBuilder<I,O>
-
- Type Parameters:
I- input symbol typeO- output symbol type
- All Implemented Interfaces:
SupportsGrowingAlphabet<I>,IncrementalConstruction<MealyMachine<?,I,?,O>,I>,IncrementalMealyBuilder<I,O>,MealyBuilder<I,O>
public class DynamicIncrementalMealyTreeBuilder<I,O> extends Object implements IncrementalMealyBuilder<I,O>
A variation of the normalIncrementalMealyTreeBuilderwhich stores the successor information of each tree-node in a dynamically allocatedMap.In a dense tree-structure this may result in higher memory consumption than the regular tree. However, if only sparse information are stored, the overall consumption may be lower. Also, allows to skip the initial alphabet definition as symbol information can be stored dynamically and may us
-
-
Constructor Summary
Constructors Constructor Description DynamicIncrementalMealyTreeBuilder()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddAlphabetSymbol(I symbol)Notifies the data structure that a new symbol should be added to the alphabet.Graph<?,?>asGraph()Retrieves a graph view of the current state of the construction.MealyTransitionSystem<?,I,?,O>asTransitionSystem()Retrieves a transition system view of the current state of the construction.@Nullable Word<I>findSeparatingWord(MealyMachine<?,I,?,O> target, Collection<? extends I> inputs, boolean omitUndefined)Checks the current state of the construction against a given target model, and returns a word exposing a difference if there is one.voidinsert(Word<? extends I> input, Word<? extends O> outputWord)Incorporates a pair of input/output words into the stored information.booleanlookup(Word<? extends I> word, List<? super O> output)Retrieves the output word for the given input word.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface net.automatalib.incremental.IncrementalConstruction
findSeparatingWord
-
Methods inherited from interface net.automatalib.incremental.mealy.MealyBuilder
asTransitionSystem, hasDefinitiveInformation, lookup, lookup
-
-
-
-
Method Detail
-
insert
public void insert(Word<? extends I> input, Word<? extends O> outputWord)
Description copied from interface:IncrementalMealyBuilderIncorporates a pair of input/output words into the stored information.- Specified by:
insertin interfaceIncrementalMealyBuilder<I,O>- Parameters:
input- the input wordoutputWord- the corresponding output word
-
addAlphabetSymbol
public void addAlphabetSymbol(I symbol)
Description copied from interface:SupportsGrowingAlphabetNotifies the data structure that a new symbol should be added to the alphabet. Behavior depends on the implementation:- After adding a new symbol, the symbol-related data may either be initialized with default values or undefined.
- Duplicate symbols may: (1) be handled accordingly, (2) be ignored or (3) result in an error.
GrowingAlphabet) to handle potentially shared state across multiple instances. If the needed requirements are not met, aGrowingAlphabetNotSupportedExceptioncan be thrown.- Specified by:
addAlphabetSymbolin interfaceSupportsGrowingAlphabet<I>- Parameters:
symbol- the symbol to add to the alphabet.
-
asGraph
public Graph<?,?> asGraph()
Description copied from interface:IncrementalConstructionRetrieves a graph view of the current state of the construction. The graph model should be backed by the construction, i.e., subsequent changes will be reflected in the graph model.- Specified by:
asGraphin interfaceIncrementalConstruction<I,O>- Returns:
- a graph view on the current state of the construction
-
lookup
public boolean lookup(Word<? extends I> word, List<? super O> output)
Description copied from interface:MealyBuilderRetrieves the output word for the given input word. If no definitive information for the input word exists, the output for the longest known prefix will be returned.- Specified by:
lookupin interfaceMealyBuilder<N,I>- Parameters:
word- the input wordoutput- a consumer for constructing the output word- Returns:
trueif the information contained was complete (in this case,word.length() == output.size()will hold),falseotherwise.
-
findSeparatingWord
public @Nullable Word<I> findSeparatingWord(MealyMachine<?,I,?,O> target, Collection<? extends I> inputs, boolean omitUndefined)
Description copied from interface:IncrementalConstructionChecks the current state of the construction against a given target model, and returns a word exposing a difference if there is one.- Specified by:
findSeparatingWordin interfaceIncrementalConstruction<N,I>- Parameters:
target- the target automaton modelinputs- the set of input symbols to consideromitUndefined- if this is set totrue, then undefined transitions in thetargetmodel will be interpreted as "unspecified/don't know" and omitted in the equivalence test. Otherwise, they will be interpreted in the usual manner (e.g., non-accepting sink in case of DFAs).- Returns:
- a separating word, or
nullif no difference could be found.
-
asTransitionSystem
public MealyTransitionSystem<?,I,?,O> asTransitionSystem()
Description copied from interface:IncrementalConstructionRetrieves a transition system view of the current state of the construction. The transition system model should be backed by the construction, i.e., subsequent changes will be reflected in the transition system.- Specified by:
asTransitionSystemin interfaceIncrementalConstruction<N,I>- Specified by:
asTransitionSystemin interfaceMealyBuilder<N,I>- Returns:
- a transition system view on the current state of the construction
-
-