commit 04d5a87eff88e401e347ada88b89a593d33e3d85 Author: Daniel Swanson Date: Mon Jun 14 21:21:01 2021 -0500 incorporate optimizations from #114 diff --git a/lttoolbox/transducer.cc b/lttoolbox/transducer.cc index 99ea468..2944e48 100644 --- a/lttoolbox/transducer.cc +++ b/lttoolbox/transducer.cc @@ -337,6 +337,11 @@ Transducer::determinize(int const epsilon_tag) int t = 0; + set finals_state; + for(auto& it : finals) { + finals_state.insert(it.first); + } + while(size_Q_prime != Q_prime.size()) { size_Q_prime = Q_prime.size(); @@ -344,11 +349,6 @@ Transducer::determinize(int const epsilon_tag) for(auto& it : R[t]) { - set finals_state; - for(auto& it2 : finals) - { - finals_state.insert(it2.first); - } if(!isEmptyIntersection(Q_prime[it], finals_state)) { double w = default_weight; @@ -396,8 +396,8 @@ Transducer::determinize(int const epsilon_tag) t = (t+1)%2; } - transitions = transitions_prime; - finals = finals_prime; + transitions.swap(transitions_prime); + finals.swap(finals_prime); initial = initial_prime; }