TWiki> FST Web>FstQuickTour>StateMapDoc (revision 1)EditAttach

StateMap

Description

This operation transforms each state in the input FST. The transformation is specified by a function object called a state mapper.

For instance, `ArcSumMapper` combines arcs with the same input label, output label and destination state, summing their weights.

A list of available state mappers and instructions on how to create them are given here.

Usage

 ```template StateMap(MutableFst *fst, StateMapper *mapper); ``` [bad link?] ```template StateMap(MutableFst *fst, StateMapper mapper); ``` ```template StateMap(const Fst &ifst, MutableFst *ofst, StateMapper *mapper); ``` ```template StateMap(const Fst &ifst, MutableFst *ofst, StateMapper mapper); ``` ```template StateMapFst:: StateMapFst(const Fst &fst, StateMapper *mapper); ``` ```template StateMapFst:: StateMapFst(const Fst &fst, const StateMapper &mapper); ``` ```fstmap [--opts] in.fst out.fst -map_type (Map operation, one of: "identity", "arc_sum") type: string default: "identity" -weight (Weight parameter) type: string default: "" ```

Note `fstmap` also includes arc mappers.

Example

(Under construction).

`StateMap(&A, ArcSumMapper(A))`:

```StateMap(&A, ArcSumMapper<StdArc>(A));
StateMap(A, &B, ArcSumMapper<StdArc>(A));
StateMapFst B(A, ArcSumMapper<StdArc>(A));

fstmap --map_type=arc_sum a.fst b.fst
```

Complexity

`StateMap:`

• Time: O(c*V)
• Space: O(m)
where V = # of states, c = cost of processing one state by the mapper and m = total memory usage for the mapper.

`StateMapFst:`

• Time: O(c*v)
• Space: O(m)
where v = # of visited states, c = cost of processing one state by the mapper and m = total memory usage for the mapper. Constant time and space to visit an input state is assumed and exclusive of caching.

For instance in the case of `ArcSumMap`, we have c = O(D log(D)) and m = O(D), where D = maximum out-degree.

-- MichaelRiley - 05 Dec 2011

Edit | Attach | Watch | Print version |  | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r1 - 2011-12-05 - MichaelRiley

Copyright © 2008-2021 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback