Finite State Transducers
There are two ways that we can define FSTs: one that focuses on their use as methods for defining a relation and another that focuses on their use as methods for defining mappings from \(\Sigma^*\) to \(2^{\Gamma^*}\)–i.e. as mappings from strings in \(\Sigma^*\) to languages on \(\Gamma\).
The relation view
A Finite State Transducer (FST) is a grammar with 6 components:
- A set of states \(Q\)
- An input alphabet \(\Sigma\)
- An output alphabet \(\Gamma\)
- A transition function \(\delta : Q \times (\Sigma \cup \{\epsilon\}) \times (\Gamma \cup \{\epsilon\}) \rightarrow \mathcal{P}(Q)\)
- An initial state \(q_0\)
- A set of final states \(F \subseteq Q\)
The mapping view
Alternatively, a Finite State Transducer (FST) is a grammar with 7 components:
- A set of states \(Q\)
- An input alphabet \(\Sigma\)
- An output alphabet \(\Gamma\)
- A transition function \(\delta : Q \times (\Sigma \cup \{\epsilon\}) \rightarrow \mathcal{P}(Q)\)
- An output function \(\omega : Q \times (\Sigma \cup \{\epsilon\}) \times Q \rightarrow \Gamma\)
- An initial state \(q_0 \in Q\)
- A set of final states \(F \subseteq Q\)
FSTs in general are similar to vanilla FSAs:
- Closed under union
- Closed under concatenation
- Closed under Kleene star
But they are different in a few respects:
- Not all FSTs are determinizable.
- FSTs aren’t closed under intersection or complementation
- Conceptualizing FSTs as language tuple recognizers/generators, we can define projection.
- Conceptualizing FSTs as maps, we can define composition and inversion.