Skip to content

Latest commit

 

History

History
72 lines (49 loc) · 1.83 KB

File metadata and controls

72 lines (49 loc) · 1.83 KB

Intersect

Description

This operation computes the intersection (Hadamard product) of two FSAs. Only strings that are in both automata are retained in the result.

The two arguments must be acceptors. One of the arguments must be label-sorted (or otherwise support an appropriate matcher).The weights need to form a commutative semiring (valid for TropicalWeight and LogWeight for instance).

Versions of this operation (not all shown here) accept options that allow choosing the matcher, composition filter, state table and, when delayed, the caching behaviour used by intersection.

Usage

template <class Arc>
void Intersect(const Fst<Arc> &ifsa1, const Fst<Arc> &ifsa2, MutableFst<Arc> *ofsa);
template <class Arc> IntersectFst<Arc>::
IntersectFst(const Fst<Arc> &fsa1, const Fst<Arc> &fsa2);

IntersectFst

fstintersect [--opts] a.fsa b.fsa out.fsa
  --connect: Trim output (def: true)

Examples

A:

Input FST A for Intersect operation.

B:

Input FST B for Intersect operation.

A ∩ B:

Result of Intersect(A, B).

Intersect(A, B, &C);
IntersectFst<Arc>(A, B);
fstintersect a.fsa b.fsa out.fsa

Complexity

Same as Compose.

Caveats

Same as Compose.

See Also

Composition Filters, Matchers, State Tables