Home | History | Annotate | Download | only in lib

Lines Matching refs:Arc

33 template <class Arc, class Queue, class ArcFilter>
35 typedef typename Arc::StateId StateId;
38 ArcFilter arc_filter; // Arc filter (e.g., limit to only epsilon graph)
54 template<class Arc, class Queue, class ArcFilter>
57 typedef typename Arc::StateId StateId;
58 typedef typename Arc::Weight Weight;
61 const Fst<Arc> &fst,
63 const ShortestDistanceOptions<Arc, Queue, ArcFilter> &opts,
78 const Fst<Arc> *fst_;
93 template <class Arc, class Queue, class ArcFilter>
94 void ShortestDistanceState<Arc, Queue, ArcFilter>::ShortestDistance(
141 for (ArcIterator< Fst<Arc> > aiter(*fst_, s);
144 const Arc &arc = aiter.Value();
145 if (!arc_filter_(arc) || arc.weight == Weight::Zero())
147 while ((StateId)distance_->size() <= arc.nextstate) {
153 while ((StateId)sources_.size() <= arc.nextstate)
155 if (sources_[arc.nextstate] != source) {
156 (*distance_)[arc.nextstate] = Weight::Zero();
157 rdistance_[arc.nextstate] = Weight::Zero();
158 enqueued_[arc.nextstate] = false;
159 sources_[arc.nextstate] = source;
162 Weight &nd = (*distance_)[arc.nextstate];
163 Weight &nr = rdistance_[arc.nextstate];
164 Weight w = Times(r, arc.weight);
168 if (!enqueued_[arc.nextstate]) {
169 state_queue_->Enqueue(arc.nextstate);
170 enqueued_[arc.nextstate] = true;
172 state_queue_->Update(arc.nextstate);
187 // The state queue discipline, arc filter, and convergence delta are
198 template<class Arc, class Queue, class ArcFilter>
200 const Fst<Arc> &fst,
201 vector<typename Arc::Weight> *distance,
202 const ShortestDistanceOptions<Arc, Queue, ArcFilter> &opts) {
204 ShortestDistanceState<Arc, Queue, ArcFilter>
229 template<class Arc>
230 void ShortestDistance(const Fst<Arc> &fst,
231 vector<typename Arc::Weight> *distance,
233 typedef typename Arc::StateId StateId;
234 typedef typename Arc::Weight Weight;
237 AnyArcFilter<Arc> arc_filter;
239 ShortestDistanceOptions< Arc, AutoQueue<StateId>, AnyArcFilter<Arc> >
243 typedef ReverseArc<Arc> ReverseArc;