In the [[theory of computation]], a '''generalized nondeterministic finite state machine''' or '''generalized nondeterministic finite automaton (GNFA)''' is a [[nondeterministic finite state machine|NFA]] where each transition may be labeled with any regular expression. The GNFA reads blocks of symbols from the input which constitute a string as defined by the regular expression on the transition.
==Formal definition==
A GNFA can be defined as a [[n-tuple|5-tuple]], (''S'', Σ, ''T'', ''s'', ''a''), consisting of
where ''R'' is the collection of all [[regular expressions]] over the alphabet Σ.
A [[deterministic finite automaton|DFA]] or [[nondeterministic finite automaton|NFA]] can easily be converted into a GNFA and then the GNFA can be easily converted into a [[regular expression]] by repeatedly collapsing parts of it to single edges until ''S'' = {''s'', ''a''}. Similarly, GNFAs can be reduced to NFAs by changing regular expression operators into new edges until each edge is labelled with a regular expression matching a single string of length at most 1. NFAs, in turn, can be reduced to DFAs using the [[powerset construction]]. This shows that GNFAs recognize the same set of [[formal language]]s as DFAs and NFAs.