ZGen  0.2.0
a linearization system for natural language.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
span_types.h
Go to the documentation of this file.
1 #ifndef __ZGEN_BESTFIRST_SEARCH_SPAN_TYPES_H__
2 #define __ZGEN_BESTFIRST_SEARCH_SPAN_TYPES_H__
3 
4 #include <boost/unordered_set.hpp>
5 #include <boost/heap/priority_queue.hpp>
7 
8 namespace ZGen {
9 
10 namespace BestFirst {
11 
12 typedef boost::unordered_set<Span *, SpanPtrHash, SpanPtrEqual> SpanSet;
13 
14 typedef boost::heap::priority_queue<Span *, boost::heap::compare<SpanPtrLess> > SpanMaxHeap;
15 
16 typedef boost::heap::priority_queue<Span *, boost::heap::compare<SpanPtrGreater> > SpanMinHeap;
17 
18 class SpanKMaxHeap: public SpanMinHeap {
19 public:
21  }
22 
23  void init(int volumn) {
24  K = volumn;
25  SpanMinHeap::clear();
26  }
27 
28  bool insert(Span *span) {
29  if (SpanMinHeap::size() == K) {
30  if (span->score > SpanMinHeap::top()->score) {
31  SpanMinHeap::pop();
32  SpanMinHeap::push(span);
33  }
34  return false;
35  }
36  SpanMinHeap::push(span);
37  return true;
38  }
39 private:
40  int K;
41 };
42 
43 } // end for namespace Bestfirst
44 
45 } // end for namespace ZGen
46 
47 #endif // end for __ZGEN_BESTFIRST_SEARCH_SPAN_TYPES_H__
boost::unordered_set< Span *, SpanPtrHash, SpanPtrEqual > SpanSet
Definition: span_types.h:12
void init(int volumn)
Definition: span_types.h:23
SpanKMaxHeap()
Definition: span_types.h:20
boost::heap::priority_queue< Span *, boost::heap::compare< SpanPtrLess > > SpanMaxHeap
Definition: span_types.h:14
bool insert(Span *span)
Definition: span_types.h:28
Definition: span_types.h:18
Definition: span.h:13
floatval_t score
Definition: span.h:84
boost::heap::priority_queue< Span *, boost::heap::compare< SpanPtrGreater > > SpanMinHeap
Definition: span_types.h:16