Determinize

Description

This operation determinizes a weighted transducer. The result will be an equivalent FST that has the property that no state has two transitions with the same input label. For this algorithm, epsilon transitions are treated as regular symbols (cf. RmEpsilon).

The transducer must be functional. The weights must be (weakly) left divisible (valid for TropicalWeight and LogWeight for instance) and zero-sum-free.

Usage

template <class Arc>
void Determinize(const Fst<Arc> &ifst, MutableFst<Arc> *ofst);
doc
template <class Arc> DeterminizeFst<Arc>::
DeterminizeFst(const Fst<Arc> &fst);
doc
fstdeterminize a.fst out.fst
 

Examples

A:

determinize1.jpg

(TropicalWeight)

Determinize of A:

determinize2.jpg

Determinize(&A);
DeterminizeFst<Arc>(A);
fstdeterminize a.fst out.fst

Complexity

Determinize:
  • Determinizable: exponential (polynomial in the size of the output)
  • Non-determinizable: does not terminate
DeterminizeFst:
  • Determinizable: exponential (polynomial in the size of the output)
  • Non-determinizable: does not terminate

The determinizable automata include all unweighted and all acyclic input.

References

-- MichaelRiley - 20 Jun 2007

Topic attachments
I Attachment Action Size Date Who Comment
jpgjpg determinize1.jpg manage 12.5 K 21 Jun 2007 - 21:43 MichaelRiley  
jpgjpg determinize2.jpg manage 13.7 K 21 Jun 2007 - 21:43 MichaelRiley  
Topic revision: r10 - 06 Dec 2011 - 01:08:18 - MichaelRiley
 
This site is powered by the TWiki collaboration platformCopyright &© by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback