diff options
author | graehl <graehl@ec762483-ff6d-05da-a07a-a48fb63a330f> | 2010-09-23 00:10:52 +0000 |
---|---|---|
committer | graehl <graehl@ec762483-ff6d-05da-a07a-a48fb63a330f> | 2010-09-23 00:10:52 +0000 |
commit | 3a802d691a34fe4a75af110fc8c4a771f18b7641 (patch) | |
tree | 1d1494a1a1c1a1def5b05893f0d4dac9ae904c13 /utils/d_ary_heap.h | |
parent | 6409c2c91b7fd3d3b42c6bb0d3376b83eb4d5611 (diff) |
pausing earley best-first fsa work
git-svn-id: https://ws10smt.googlecode.com/svn/trunk@656 ec762483-ff6d-05da-a07a-a48fb63a330f
Diffstat (limited to 'utils/d_ary_heap.h')
-rw-r--r-- | utils/d_ary_heap.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/utils/d_ary_heap.h b/utils/d_ary_heap.h index 3a071772..1270638a 100644 --- a/utils/d_ary_heap.h +++ b/utils/d_ary_heap.h @@ -283,6 +283,22 @@ return false; } + distance_type best(distance_type null=0) const { + return empty() ? null : get(distance,data[0]); + } + distance_type second_best(distance_type null=0) const { + if (data.size()<2) return null; + int m=std::min(data.size(),Arity+1); +// if (m>=Arity) m=Arity+1; + distance_type b=get(distance,data[1]); + for (int i=2;i<m;++i) { + distance_type d=get(distance,data[i]); + if (better(d,b)) + b=d; + } + return b; + } + #include "warning_push.h" #pragma GCC diagnostic ignored "-Wtype-limits" |