Home | History | Annotate | Download | only in fst

Lines Matching refs:Subset

115   float delta;                // Quantization delta for subset weights
256 typedef slist<Element> Subset;
257 typedef map<Label, Subset*> LabelMap;
317 Subset *subset = new Subset;
318 subset->push_front(element);
319 return FindState(subset);
323 Subset *subset = subsets_[s];
325 for (typename Subset::iterator siter = subset->begin();
326 siter != subset->end();
337 // Finds the state corresponding to a subset. Only creates a new state
338 // if the subset is not found in the subset hash. FindState takes
339 // ownership of the subset argument (so that it doesn't have to copy it
343 // associative container subset_hash_ are of the form (subset,
344 // id(subset) + 1), i.e. subset_hash_[subset] > 0 if subset has been
346 // subset_hash_[subset] creates a new pair (subset, 0). As a result,
347 // subset_hash_[subset] == 0 iff subset is new.
348 StateId FindState(Subset *subset) {
349 StateId &assoc_value = subset_hash_[subset];
350 if (assoc_value == 0) { // subset wasn't present; create new state
351 StateId s = CreateState(subset);
355 delete subset;
360 StateId CreateState(Subset *subset) {
362 subsets_.push_back(subset);
364 out_dist_->push_back(ComputeDistance(subset));
370 Weight ComputeDistance(const Subset *subset) {
372 for (typename Subset::const_iterator siter = subset->begin();
373 siter != subset->end(); ++siter) {
397 // Constructs destination subsets per label. At return, subset
401 Subset *src_subset = subsets_[s];
403 for (typename Subset::iterator siter = src_subset->begin();
413 Subset* &dest_subset = (*label_map)[arc.ilabel];
415 dest_subset = new Subset;
422 // with subset DEST_SUBSET (as created by LabelSubsets).
423 void AddArc(StateId s, Label label, Subset *dest_subset) {
429 typename Subset::iterator oiter;
430 for (typename Subset::iterator diter = dest_subset->begin();
455 // Divides out label weight from destination subset elements.
458 for (typename Subset::iterator diter = dest_subset->begin();
472 // Comparison object for hashing Subset(s). Subsets are not sorted in this
485 bool operator()(Subset* subset1, Subset* subset2) const {
489 // Loads first subset elements in element vector.
490 for (typename Subset::iterator iter1 = subset1->begin();
499 // Checks second subset matches first via element vector.
500 for (typename Subset::iterator iter2 = subset2->begin();
509 for (typename Subset::iterator iter1 = subset1->begin();
524 // Hash function for Subset to Fst states. Subset elements are not
526 // under subset reordering.
529 size_t operator()(const Subset* subset) const {
531 for (typename Subset::const_iterator iter = subset->begin();
532 iter != subset->end();
544 float delta_; // Quantization delta for subset weights
553 // Maps from StateId to Subset.
554 vector<Subset *> subsets_;
556 // Hashes from Subset to its StateId in the output automaton.
557 typedef unordered_map<Subset *, StateId, SubsetKey, SubsetEqual>
820 float delta; // Quantization delta for subset weights.