Home | History | Annotate | Download | only in lib

Lines Matching refs:arc

40 template <class Arc, class Queue>
42 : public ShortestDistanceOptions<Arc, Queue, EpsilonArcFilter<Arc> > {
43 typedef typename Arc::StateId StateId;
48 : ShortestDistanceOptions<Arc, Queue, EpsilonArcFilter<Arc> >(
49 q, EpsilonArcFilter<Arc>(), kNoStateId, d), connect(c) {}
55 template <class Arc, class Queue>
58 typedef typename Arc::Label Label;
59 typedef typename Arc::StateId StateId;
60 typedef typename Arc::Weight Weight;
62 RmEpsilonState(const Fst<Arc> &fst,
64 const RmEpsilonOptions<Arc, Queue> &opts)
72 vector<Arc> &Arcs() { return arcs_; }
115 const Fst<Arc> &fst_;
119 ShortestDistanceState<Arc, Queue, EpsilonArcFilter<Arc> > sd_state_;
125 EpsilonArcFilter<Arc> eps_filter_;
129 vector<Arc> arcs_; // Arcs of state being expanded
136 template <class Arc, class Queue>
137 void RmEpsilonState<Arc,Queue>::Expand(typename Arc::StateId source) {
151 for (ArcIterator< Fst<Arc> > ait(fst_, state);
154 Arc arc = ait.Value();
155 arc.weight = Times((*distance_)[state], arc.weight);
157 if (eps_filter_(arc)) {
158 while ((StateId)visited_.size() <= arc.nextstate)
160 if (!visited_[arc.nextstate])
161 eps_queue_.push(arc.nextstate);
163 Element element(arc.ilabel, arc.olabel, arc.nextstate);
169 arcs_.push_back(arc);
173 w = Plus(w, arc.weight);
177 arcs_.push_back(arc);
201 template <class Arc, class Queue>
202 void RmEpsilon(MutableFst<Arc> *fst,
203 vector<typename Arc::Weight> *distance,
204 const RmEpsilonOptions<Arc, Queue> &opts) {
205 typedef typename Arc::StateId StateId;
206 typedef typename Arc::Weight Weight;
207 typedef typename Arc::Label Label;
219 TopOrderVisitor<Arc> top_order_visitor(&order, &acyclic);
220 DfsVisit(*fst, &top_order_visitor, EpsilonArcFilter<Arc>());
229 SccVisitor<Arc> scc_visitor(&scc, 0, 0, &props);
230 DfsVisit(*fst, &scc_visitor, EpsilonArcFilter<Arc>());
243 RmEpsilonState<Arc, Queue>
252 vector<Arc> &arcs = rmeps_state.Arcs();
287 template <class Arc>
288 void RmEpsilon(MutableFst<Arc> *fst, bool connect = true) {
289 typedef typename Arc::StateId StateId;
290 typedef typename Arc::Weight Weight;
291 typedef typename Arc::Label Label;
294 AutoQueue<StateId> state_queue(*fst, &distance, EpsilonArcFilter<Arc>());
295 RmEpsilonOptions<Arc, AutoQueue<StateId> >
419 // to visit an input state or arc is assumed and exclusive of caching.
432 typedef A Arc;