Module org.chocosolver
Class FiniteAutomaton
- java.lang.Object
-
- org.chocosolver.solver.constraints.nary.automata.FA.FiniteAutomaton
-
- All Implemented Interfaces:
Cloneable
,IAutomaton
- Direct Known Subclasses:
CostAutomaton
public class FiniteAutomaton extends Object implements IAutomaton
Created by IntelliJ IDEA. User: julien Date: Mar 15, 2010 Time: 12:53:23 PM
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.chocosolver.solver.constraints.nary.automata.FA.IAutomaton
IAutomaton.NonDeterministicOperationException, IAutomaton.StateNotInAutomatonException, IAutomaton.Triple
-
-
Constructor Summary
Constructors Constructor Description FiniteAutomaton()
FiniteAutomaton(String regexp)
Create a finite automaton based on a regular expression.FiniteAutomaton(String regexp, int min, int max)
Create a finite automaton based on a regular expression.FiniteAutomaton(FiniteAutomaton other)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description ArrayList<int[]>
_removeSymbolFromAutomaton(int alpha)
void
addEpsilon(int source, int destination)
int
addState()
void
addToAlphabet(int a)
void
addTransition(int source, int destination, int... symbols)
FiniteAutomaton
clone()
FiniteAutomaton
complement()
FiniteAutomaton
complement(gnu.trove.set.hash.TIntHashSet alphabet)
FiniteAutomaton
concatenate(FiniteAutomaton otherI)
void
deleteTransition(int source, int destination, int symbol)
int
delta(int source, int symbol)
void
delta(int source, int symbol, gnu.trove.set.hash.TIntHashSet states)
void
fill(dk.brics.automaton.Automaton a, gnu.trove.set.hash.TIntHashSet alphabet)
gnu.trove.set.hash.TIntHashSet
getAlphabet()
static char
getCharFromInt(int i)
gnu.trove.set.hash.TIntHashSet
getFinalStates()
int
getInitialState()
static int
getIntFromChar(char c)
int
getNbStates()
int
getNbSymbols()
List<int[]>
getTransitions()
List<int[]>
getTransitions(int state)
FiniteAutomaton
intersection(IAutomaton otherI)
boolean
isDeterministic()
boolean
isFinal(int state)
boolean
isNotFinal(int state)
dk.brics.automaton.Automaton
makeBricsAutomaton()
static int
max(gnu.trove.set.hash.TIntHashSet hs)
void
minimize()
void
reduce()
void
removeDeadTransitions()
void
removeFromAlphabet(int a)
void
removeSymbolFromAutomaton(int symbol)
IAutomaton
repeat()
IAutomaton
repeat(int min)
IAutomaton
repeat(int min, int max)
boolean
run(int[] word)
void
setDeterministic(boolean deterministic)
void
setFinal(int state)
void
setFinal(int... states)
void
setInitialState(int state)
void
setNonFinal(int state)
void
setNonFInal(int... states)
String
toDot()
void
toDotty(String f)
String
toString()
FiniteAutomaton
union(FiniteAutomaton otherI)
-
-
-
Constructor Detail
-
FiniteAutomaton
public FiniteAutomaton()
-
FiniteAutomaton
public FiniteAutomaton(String regexp, int min, int max)
Create a finite automaton based on a regular expression. The regexp accepts digits and numbers, in [0,65535]. However, to distinguish a number from a suite of digits, the former must be surrounded by '<' and '>'. For instance, "12<34>" stands for a '1' (digit), followed by a '2' (digit) followed by a '34' (number).- Parameters:
regexp
- the regular expressionmin
- an overall minimum value for transitionsmax
- an overall maximum value for transitions
-
FiniteAutomaton
public FiniteAutomaton(String regexp)
Create a finite automaton based on a regular expression. The regexp accepts digits and numbers, in [0,65535]. However, to distinguish a number from a suite of digits, the former must be surrounded by '<' and '>'. For instance, "12<34>" stands for a '1' (digit), followed by a '2' (digit) followed by a '34' (number).- Parameters:
regexp
- the regular expression
-
FiniteAutomaton
public FiniteAutomaton(FiniteAutomaton other)
-
-
Method Detail
-
getIntFromChar
public static int getIntFromChar(char c)
-
getCharFromInt
public static char getCharFromInt(int i)
-
max
public static int max(gnu.trove.set.hash.TIntHashSet hs)
-
fill
public void fill(dk.brics.automaton.Automaton a, gnu.trove.set.hash.TIntHashSet alphabet)
-
getNbStates
public int getNbStates()
- Specified by:
getNbStates
in interfaceIAutomaton
-
getNbSymbols
public int getNbSymbols()
-
addState
public int addState()
-
removeSymbolFromAutomaton
public void removeSymbolFromAutomaton(int symbol)
-
addTransition
public void addTransition(int source, int destination, int... symbols)
-
deleteTransition
public void deleteTransition(int source, int destination, int symbol)
-
delta
public int delta(int source, int symbol) throws IAutomaton.NonDeterministicOperationException
- Specified by:
delta
in interfaceIAutomaton
- Throws:
IAutomaton.NonDeterministicOperationException
-
delta
public void delta(int source, int symbol, gnu.trove.set.hash.TIntHashSet states)
- Specified by:
delta
in interfaceIAutomaton
-
addToAlphabet
public void addToAlphabet(int a)
-
removeFromAlphabet
public void removeFromAlphabet(int a)
-
getInitialState
public int getInitialState()
- Specified by:
getInitialState
in interfaceIAutomaton
-
isFinal
public boolean isFinal(int state)
- Specified by:
isFinal
in interfaceIAutomaton
-
isNotFinal
public boolean isNotFinal(int state)
- Specified by:
isNotFinal
in interfaceIAutomaton
-
setInitialState
public void setInitialState(int state)
-
setFinal
public void setFinal(int state)
-
setFinal
public void setFinal(int... states)
-
setNonFinal
public void setNonFinal(int state)
-
setNonFInal
public void setNonFInal(int... states)
-
run
public boolean run(int[] word)
- Specified by:
run
in interfaceIAutomaton
-
makeBricsAutomaton
public dk.brics.automaton.Automaton makeBricsAutomaton()
-
repeat
public IAutomaton repeat()
-
repeat
public IAutomaton repeat(int min)
-
repeat
public IAutomaton repeat(int min, int max)
-
minimize
public void minimize()
-
reduce
public void reduce()
-
removeDeadTransitions
public void removeDeadTransitions()
-
union
public FiniteAutomaton union(FiniteAutomaton otherI)
-
intersection
public FiniteAutomaton intersection(IAutomaton otherI)
-
complement
public FiniteAutomaton complement(gnu.trove.set.hash.TIntHashSet alphabet)
-
complement
public FiniteAutomaton complement()
-
concatenate
public FiniteAutomaton concatenate(FiniteAutomaton otherI)
-
addEpsilon
public void addEpsilon(int source, int destination)
-
isDeterministic
public boolean isDeterministic()
-
setDeterministic
public void setDeterministic(boolean deterministic)
-
getFinalStates
public gnu.trove.set.hash.TIntHashSet getFinalStates()
-
toDotty
public void toDotty(String f)
-
toDot
public String toDot()
-
getAlphabet
public gnu.trove.set.hash.TIntHashSet getAlphabet()
-
getTransitions
public List<int[]> getTransitions()
- Specified by:
getTransitions
in interfaceIAutomaton
-
getTransitions
public List<int[]> getTransitions(int state)
- Specified by:
getTransitions
in interfaceIAutomaton
-
_removeSymbolFromAutomaton
public ArrayList<int[]> _removeSymbolFromAutomaton(int alpha)
-
clone
public FiniteAutomaton clone() throws CloneNotSupportedException
- Specified by:
clone
in interfaceIAutomaton
- Overrides:
clone
in classObject
- Throws:
CloneNotSupportedException
-
-