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 normalIncrementalMealyTreeBuilder
which 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 void
addAlphabetSymbol(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.void
insert(Word<? extends I> input, Word<? extends O> outputWord)
Incorporates a pair of input/output words into the stored information.boolean
lookup(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:IncrementalMealyBuilder
Incorporates a pair of input/output words into the stored information.- Specified by:
insert
in interfaceIncrementalMealyBuilder<I,O>
- Parameters:
input
- the input wordoutputWord
- the corresponding output word
-
addAlphabetSymbol
public void addAlphabetSymbol(I symbol)
Description copied from interface:SupportsGrowingAlphabet
Notifies 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, aGrowingAlphabetNotSupportedException
can be thrown.- Specified by:
addAlphabetSymbol
in interfaceSupportsGrowingAlphabet<I>
- Parameters:
symbol
- the symbol to add to the alphabet.
-
asGraph
public Graph<?,?> asGraph()
Description copied from interface:IncrementalConstruction
Retrieves 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:
asGraph
in 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:MealyBuilder
Retrieves 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:
lookup
in interfaceMealyBuilder<N,I>
- Parameters:
word
- the input wordoutput
- a consumer for constructing the output word- Returns:
true
if the information contained was complete (in this case,word.length() == output.size()
will hold),false
otherwise.
-
findSeparatingWord
public @Nullable Word<I> findSeparatingWord(MealyMachine<?,I,?,O> target, Collection<? extends I> inputs, boolean omitUndefined)
Description copied from interface:IncrementalConstruction
Checks the current state of the construction against a given target model, and returns a word exposing a difference if there is one.- Specified by:
findSeparatingWord
in 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 thetarget
model 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
null
if no difference could be found.
-
asTransitionSystem
public MealyTransitionSystem<?,I,?,O> asTransitionSystem()
Description copied from interface:IncrementalConstruction
Retrieves 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:
asTransitionSystem
in interfaceIncrementalConstruction<N,I>
- Specified by:
asTransitionSystem
in interfaceMealyBuilder<N,I>
- Returns:
- a transition system view on the current state of the construction
-
-