C++ Bloom Filter Library  release
Classes | Public Member Functions | Public Attributes | List of all members
bloom_parameters Class Reference

#include <bloom_filter.hpp>

Collaboration diagram for bloom_parameters:
[legend]

Classes

struct  optimal_parameters_t
 

Public Member Functions

 bloom_parameters ()
 
virtual ~bloom_parameters ()
 
bool operator! ()
 
virtual bool compute_optimal_parameters ()
 

Public Attributes

unsigned long long int minimum_size
 
unsigned long long int maximum_size
 
unsigned int minimum_number_of_hashes
 
unsigned int maximum_number_of_hashes
 
unsigned long long int projected_element_count
 
double false_positive_probability
 
unsigned long long int random_seed
 
optimal_parameters_t optimal_parameters
 

Detailed Description

Definition at line 45 of file bloom_filter.hpp.

Constructor & Destructor Documentation

◆ bloom_parameters()

bloom_parameters::bloom_parameters ( )
inline

Definition at line 49 of file bloom_filter.hpp.

50  : minimum_size(1),
51  maximum_size(std::numeric_limits<unsigned long long int>::max()),
53  maximum_number_of_hashes(std::numeric_limits<unsigned int>::max()),
56  random_seed(0xA5A5A5A55A5A5A5AULL)
57  {}
unsigned long long int random_seed
unsigned long long int minimum_size
unsigned int maximum_number_of_hashes
double false_positive_probability
unsigned int minimum_number_of_hashes
unsigned long long int maximum_size
unsigned long long int projected_element_count

◆ ~bloom_parameters()

virtual bloom_parameters::~bloom_parameters ( )
inlinevirtual

Definition at line 59 of file bloom_filter.hpp.

60  {}

Member Function Documentation

◆ compute_optimal_parameters()

virtual bool bloom_parameters::compute_optimal_parameters ( )
inlinevirtual

Definition at line 108 of file bloom_filter.hpp.

References bits_per_char, maximum_number_of_hashes, maximum_size, minimum_number_of_hashes, minimum_size, bloom_parameters::optimal_parameters_t::number_of_hashes, optimal_parameters, projected_element_count, and bloom_parameters::optimal_parameters_t::table_size.

Referenced by main().

109  {
110  /*
111  Note:
112  The following will attempt to find the number of hash functions
113  and minimum amount of storage bits required to construct a bloom
114  filter consistent with the user defined false positive probability
115  and estimated element insertion count.
116  */
117 
118  if (!(*this))
119  return false;
120 
121  double min_m = std::numeric_limits<double>::infinity();
122  double min_k = 0.0;
123  double k = 1.0;
124 
125  while (k < 1000.0)
126  {
127  const double numerator = (- k * projected_element_count);
128  const double denominator = std::log(1.0 - std::pow(false_positive_probability, 1.0 / k));
129 
130  const double curr_m = numerator / denominator;
131 
132  if (curr_m < min_m)
133  {
134  min_m = curr_m;
135  min_k = k;
136  }
137 
138  k += 1.0;
139  }
140 
141  optimal_parameters_t& optp = optimal_parameters;
142 
143  optp.number_of_hashes = static_cast<unsigned int>(min_k);
144 
145  optp.table_size = static_cast<unsigned long long int>(min_m);
146 
147  optp.table_size += (((optp.table_size % bits_per_char) != 0) ? (bits_per_char - (optp.table_size % bits_per_char)) : 0);
148 
149  if (optp.number_of_hashes < minimum_number_of_hashes)
150  optp.number_of_hashes = minimum_number_of_hashes;
151  else if (optp.number_of_hashes > maximum_number_of_hashes)
152  optp.number_of_hashes = maximum_number_of_hashes;
153 
154  if (optp.table_size < minimum_size)
155  optp.table_size = minimum_size;
156  else if (optp.table_size > maximum_size)
157  optp.table_size = maximum_size;
158 
159  return true;
160  }
static const std::size_t bits_per_char
unsigned long long int minimum_size
unsigned int maximum_number_of_hashes
double false_positive_probability
unsigned int minimum_number_of_hashes
unsigned long long int maximum_size
optimal_parameters_t optimal_parameters
unsigned long long int projected_element_count
Here is the caller graph for this function:

◆ operator!()

bool bloom_parameters::operator! ( )
inline

Definition at line 62 of file bloom_filter.hpp.

References false_positive_probability, maximum_number_of_hashes, maximum_size, minimum_number_of_hashes, minimum_size, projected_element_count, and random_seed.

63  {
64  return (minimum_size > maximum_size) ||
67  (0 == maximum_number_of_hashes) ||
68  (0 == projected_element_count) ||
70  (std::numeric_limits<double>::infinity() == std::abs(false_positive_probability)) ||
71  (0 == random_seed) ||
72  (0xFFFFFFFFFFFFFFFFULL == random_seed);
73  }
unsigned long long int random_seed
unsigned long long int minimum_size
unsigned int maximum_number_of_hashes
double false_positive_probability
unsigned int minimum_number_of_hashes
unsigned long long int maximum_size
unsigned long long int projected_element_count

Member Data Documentation

◆ false_positive_probability

double bloom_parameters::false_positive_probability

Definition at line 91 of file bloom_filter.hpp.

Referenced by main(), and operator!().

◆ maximum_number_of_hashes

unsigned int bloom_parameters::maximum_number_of_hashes

Definition at line 81 of file bloom_filter.hpp.

Referenced by compute_optimal_parameters(), main(), and operator!().

◆ maximum_size

unsigned long long int bloom_parameters::maximum_size

Definition at line 77 of file bloom_filter.hpp.

Referenced by compute_optimal_parameters(), and operator!().

◆ minimum_number_of_hashes

unsigned int bloom_parameters::minimum_number_of_hashes

Definition at line 80 of file bloom_filter.hpp.

Referenced by compute_optimal_parameters(), and operator!().

◆ minimum_size

unsigned long long int bloom_parameters::minimum_size

Definition at line 76 of file bloom_filter.hpp.

Referenced by compute_optimal_parameters(), and operator!().

◆ optimal_parameters

optimal_parameters_t bloom_parameters::optimal_parameters

Definition at line 106 of file bloom_filter.hpp.

Referenced by bloom_filter::bloom_filter(), and compute_optimal_parameters().

◆ projected_element_count

unsigned long long int bloom_parameters::projected_element_count

Definition at line 86 of file bloom_filter.hpp.

Referenced by compute_optimal_parameters(), main(), and operator!().

◆ random_seed

unsigned long long int bloom_parameters::random_seed

Definition at line 93 of file bloom_filter.hpp.

Referenced by main(), and operator!().


The documentation for this class was generated from the following file: