summaryrefslogtreecommitdiff
path: root/utils/d_ary_heap.h
diff options
context:
space:
mode:
authorgraehl <graehl@ec762483-ff6d-05da-a07a-a48fb63a330f>2010-09-23 00:10:52 +0000
committergraehl <graehl@ec762483-ff6d-05da-a07a-a48fb63a330f>2010-09-23 00:10:52 +0000
commit3a802d691a34fe4a75af110fc8c4a771f18b7641 (patch)
tree1d1494a1a1c1a1def5b05893f0d4dac9ae904c13 /utils/d_ary_heap.h
parent6409c2c91b7fd3d3b42c6bb0d3376b83eb4d5611 (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.h16
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"