automaton
.eliminate_state(
state
=-1)
In the Brzozowski-McCluskey procedure, remove one state.
Preconditions:
The labelset is oneset (i.e., the automaton is spontaneous).
The weightset is expressionset (i.e., the weights are expressions).
The
state
is indeed a state of the automaton, or it is -1, in which case a heuristics is used to select the next state.
See also:
Examples
The following examples will use this automaton as input.
We first need to convert this automaton into a spontaneous automaton labeled with expressions. That's the purpose of automaton.lift.
Explicit state elimination
Let's remove state 2:
Note that the result is a fresh automaton: the original automaton is not modified:
Let's eliminate state 1.
We can also remove the initial and final states.
Eventually, when all the states have been removed, you get a broken automaton, with no states, but a "lone transition" that bears the answer.
Rest assured that such automata (no states but with one transition) never occur in the normal course of use of Vcsn.
Using the heuristics
Use -1 (or no argument at all) to leave the choice of the next state to eliminate to Vcsn. This is how automaton.expression works.
Interactive Examples
You may use the following widgets to see, step by step, how state elimination works.