20 #ifndef FST_TOPSORT_H_ 21 #define FST_TOPSORT_H_ 43 : order_(order), acyclic_(acyclic) {}
63 for (
StateId s = 0; s < finish_.size(); ++s) {
66 for (
StateId s = 0; s < finish_.size(); ++s) {
67 (*order_)[finish_[finish_.size() - s - 1]] = s;
73 std::vector<StateId> *order_;
76 std::vector<StateId> finish_;
91 std::vector<typename Arc::StateId> order;
107 #endif // FST_TOPSORT_H_ constexpr uint64_t kCyclic
constexpr uint64_t kNotTopSorted
void DfsVisit(const FST &fst, Visitor *visitor, ArcFilter filter, bool access_only=false)
constexpr uint64_t kInitialAcyclic
bool TopSort(MutableFst< Arc > *fst)
constexpr uint64_t kTopSorted
bool BackArc(StateId, const Arc &)
constexpr bool TreeArc(StateId, const Arc &) const
constexpr uint64_t kAcyclic
virtual void SetProperties(uint64_t props, uint64_t mask)=0
constexpr bool ForwardOrCrossArc(StateId, const Arc &) const
constexpr bool InitState(StateId, StateId) const
TopOrderVisitor(std::vector< StateId > *order, bool *acyclic)
void InitVisit(const Fst< Arc > &fst)
void FinishState(StateId s, StateId, const Arc *)
bool StateSort(std::vector< IntervalSet< Label >> *interval_sets, const std::vector< StateId > &order)
typename Arc::StateId StateId