filipg/amu_automata_2011 — Issue #140: Napisać metodę, która buduje automat na podstawie tablicy przejść
Author: filipg
Created: 2011-10-26 07:05:40+00:00
State: open

Tzn. dodać klasę `FromTransitionTableMaker` i w niej statyczną metodę `void makeAutomaton(AutomatonSpecification spec, String alphabet, int transitionTable[][], Set finalStates)`, która wywołana dla pustego automatu `spec` doda odpowiednie stany i przejścia. `transitionTable` jest tablicą 2-wymiarową, `transitionTable[i][j]` oznacza numer stanu, jaki zostanie osiągnięty po przejściu od stanu numer `i` do znaku o indeksie `j` (tzn. `j`-tego znaku w `alphabet`). Zakładamy, że stan o numerze 0 jest stanem początkowym. Zbiór stanów końcowych jest przekazywany przez parametr `finalStates`.

Przykładowe wywołanie (tworzy automat akceptujący napisy "ab" i "ba"):

AutomatonSpecification spec = new NaiveAutomatonSpecification();
int [][] transitionTable = {
{ 1, 3 },
{ 4, 2 },
{ 4, 4 }
{ 2, 4 }
{ 4, 4 }
};
HashSet finalStates;
finalStates.add(2);
FromTransitionTableMaker.makeAutomaton(spec, "ab", transitionTable, finalStates);