The transducer must be functional. The weights must be (weakly) left divisible (valid for TropicalWeight and LogWeight for instance) and zerosumfree.
template <class Arc> void Determinize(const Fst<Arc> &ifst, MutableFst<Arc> *ofst); 
[bad link?] 
template <class Arc> DeterminizeFst<Arc>:: DeterminizeFst(const Fst<Arc> &fst); 

fstdeterminize a.fst out.fst 
A
:
(TropicalWeight)
Determinize of A
:
Determinize(&A); DeterminizeFst<Arc>(A); fstdeterminize a.fst out.fst
Determinize
: DeterminizeFst:
The determinizable automata include all unweighted and all acyclic input.
Nonfunctional transducers can be handled by passing the 'disambiguate_output' option when the semiring has the path property (in a variant call to this function/class). In this case, only the shortest path output for each input is retained.
 MichaelRiley  20 Jun 2007
I  Attachment  History  Action  Size  Date  Who  Comment 

jpg  determinize1.jpg  r2 r1  manage  12.5 K  20070621  21:43  MichaelRiley  
jpg  determinize2.jpg  r2 r1  manage  13.7 K  20070621  21:43  MichaelRiley 