In computer science, in particular in formal language theory, a quotient automaton can be obtained from a given nondeterministic finite automaton by joining some of its states. The quotient recognizes a superset of the given automaton; in some cases, handled by the MyhillâÂÂNerode theorem, both languages are equal.
A (nondeterministic) finite automaton is a quintuple A = â¨ã, S, s<sub>0</sub>, ô, S<sub>f</sub>â©, where:
A string a<sub>1</sub>...a<sub>n</sub> â ã<sup>*</sup> is recognized by A if there exist states s<sub>1</sub>, ..., s<sub>n</sub> â S such that â¨s<sub>i-1</sub>,a<sub>i</sub>,s<sub>i</sub>â© â ô for i=1,...,n, and s<sub>n</sub> â S<sub>f</sub>. The set of all strings recognized by A is called the language recognized by A; it is denoted as L(A).
For an equivalence relation â on the set S of AâÂÂs states, the quotient automaton A/<sub>âÂÂ</sub> = â¨ã, S/<sub>âÂÂ</sub>, [s<sub>0</sub>], ô/<sub>âÂÂ</sub>, S<sub>f</sub>/<sub>âÂÂ</sub>â© is defined by
The process of computing A/<sub>âÂÂ</sub> is also called factoring A by âÂÂ.
For example, the automaton A shown in the first row of the table is formally defined by
It recognizes the finite set of strings { 1, 10, 100 }; this set can also be denoted by the regular expression "1+10+100".
The relation (âÂÂ) = { â¨a,aâ©, â¨a,bâ©, â¨b,aâ©, â¨b,bâ©, â¨c,câ©, â¨c,dâ©, â¨d,câ©, â¨d,dâ© }, more briefly denoted as aâÂÂb,câÂÂd, is an equivalence relation on the set {a,b,c,d} of automaton AâÂÂs states. Building the quotient of A by that relation results in automaton C in the third table row; it is formally defined by
It recognizes the finite set of all strings composed of arbitrarily many 1s, followed by arbitrarily many 0s, i.e. { õ, 1, 10, 100, 1000, ..., 11, 110, 1100, 11000, ..., 111, ... }; this set can also be denoted by the regular expression "1<sup>*</sup>0<sup>*</sup>". Informally, C can be thought of resulting from A by glueing state onto state b, and glueing state c onto state d.
The table shows some more quotient relations, such as B = A/<sub>aâÂÂb</sub>, and D = C/<sub>aâÂÂc</sub>.