Synchronize
Description
This operation synchronizes a transducer. The result will be an
equivalent FST that has the property
that during the traversal of a path, the
delay is either zero or strictly increasing,
where the delay is the difference between the number of non-epsilon output
labels and input labels along the path.
For the algorithm to terminate, the input transducer must have bounded delay,
i.e., the delay of every cycle must be zero.
Usage
template <class Arc>
void Synchronize(const Fst<Arc> &ifst, MutableFst<Arc> *ofst);
|
[bad link?] |
template <class Arc> SynchronizeFst<Arc>::
SynchronizeFst(const Fst<Arc>& fst);
|
|
fstsynchronize a.fst out.fst |
|
Examples
A
:
/twiki/pub/FST/SynchronizeDoc/synchronize1.jpg
Synchronize of A
:
/twiki/pub/FST/SynchronizeDoc/synchronize2.jpg
Synchronize(A, &B);
SynchronizeFst<Arc>(A);
fstsynchronize a.fst out.fst
Complexity
Synchronize
:
-
A
has bounded delay: exponential
-
A
does not have bounded delay: does not terminate
SynchronizeFst
:
-
A
has bounded delay: exponential
-
A
does not have bounded delay: does not terminate
References
--
CyrilAllauzen - 22 Jun 2007