Deterministic Finite Automata (DFA) implementation in Go.
Should be able to compute any DFA.
One DFA is provided as proof.
considering:
DFA = (Q, Σ, δ, q0, F)
then:
Q = {q1, q2, q3, q4, q5, q6}
Σ = {a, b, c}
q0 = q1
F = {S, X, Y, Z, T, W, V, K, L, M}
δ:
S -> aS | K
K -> b | bX
X -> aY | L
L -> c | cZ
Y -> aY | K | L
Z -> bT | L
T -> bT | M
M -> c | cW
- palavras terminam apenas em 'b' ou 'c', nunca em 'a'
- b não pode ser concatenado a outro 'b' antes que surja um 'c'
- a aparição de qualquer 'c' permite concatenação de 'b's posteriores
- nenhum 'a' é permitido após qualquer 'c'
- qualquer palavra sempre termina com o simbolo de maior "valor" na palavra`