Algorithms
This page documents library components that are all basically just implementations of
mathematical functions or algorithms that don't fit in any of the other pages
of the dlib documentation. So this includes things like checksums, cryptographic hashes,
sorting, etc.
hash_similar_angles_64
dlib/lsh.h
dlib/lsh/hashes_abstract.h
This object is a tool for computing locality sensitive hashes that give
vectors with small angles between each other similar hash values. In
particular, this object creates 64 random planes which pass though the
origin and uses them to create a 64bit hash.
hash_similar_angles_128
dlib/lsh.h
dlib/lsh/hashes_abstract.h
This object is a tool for computing locality sensitive hashes that give
vectors with small angles between each other similar hash values. In
particular, this object creates 128 random planes which pass though the
origin and uses them to create a 128bit hash.
hash_similar_angles_256
dlib/lsh.h
dlib/lsh/hashes_abstract.h
This object is a tool for computing locality sensitive hashes that give
vectors with small angles between each other similar hash values. In
particular, this object creates 256 random planes which pass though the
origin and uses them to create a 256bit hash.
hash_similar_angles_512
dlib/lsh.h
dlib/lsh/hashes_abstract.h
This object is a tool for computing locality sensitive hashes that give
vectors with small angles between each other similar hash values. In
particular, this object creates 512 random planes which pass though the
origin and uses them to create a 512bit hash.
hash_samples
dlib/graph_utils_threaded.h
dlib/graph_utils/find_k_nearest_neighbors_lsh_abstract.h
This is a simple function for hashing a bunch of vectors using a
locality sensitive hashing object such as hash_similar_angles_128.
It is also capable of running in parallel on a multi-core CPU.
bigint
dlib/bigint.h
dlib/bigint/bigint_kernel_abstract.h
This object represents an arbitrary precision unsigned integer. It's pretty simple.
It's interface is just like a normal int, you don't have to tell it how much memory
to use or anything unusual. It just goes :)
bigint_kernel_1
dlib/bigint/bigint_kernel_1.h
This implementation is done using an array of unsigned shorts. It is also reference counted.
For further details see the above link. Also note that kernel_2 should be
faster in almost every case so you should really just use that version of the bigint object.
kernel_1a
is a typedef for bigint_kernel_1
bigint_kernel_2
dlib/bigint/bigint_kernel_2.h
This implementation is basically the same as kernel_1 except it uses the
Fast Fourier Transform to perform multiplications much faster.
kernel_2a
is a typedef for bigint_kernel_2
crc32
dlib/crc32.h
dlib/crc32/crc32_kernel_abstract.h
This object represents the CRC-32 algorithm for calculating checksums.
gaussian_random_hash
dlib/hash.h
dlib/general_hash/random_hashing_abstract.h
This function uses hashing to generate Gaussian distributed random values
with mean 0 and variance 1.
uniform_random_hash
dlib/hash.h
dlib/general_hash/random_hashing_abstract.h
This function uses hashing to generate uniform random values in the range [0,1).
murmur_hash3
dlib/hash.h
dlib/general_hash/murmur_hash3_abstract.h
This function takes a block of memory and returns a 32bit hash. The
hashing algorithm used is Austin Appleby's excellent
MurmurHash3.
murmur_hash3_128bit
dlib/hash.h
dlib/general_hash/murmur_hash3_abstract.h
This function takes a block of memory and returns a 128bit hash. The
hashing algorithm used is Austin Appleby's excellent
MurmurHash3.
kalman_filter
dlib/filtering.h
dlib/filtering/kalman_filter_abstract.h
This object implements the Kalman filter, which is a tool for
recursively estimating the state of a process given measurements
related to that process. To use this tool you will have to
be familiar with the workings of the Kalman filter. An excellent
introduction can be found in the paper:
An Introduction to the Kalman Filter
by Greg Welch and Gary Bishop
rls_filter
dlib/filtering.h
dlib/filtering/rls_filter_abstract.h
This object is a tool for doing time series prediction using
linear recursive least squares. In particular,
this object takes a sequence of points from the user and, at each
step, attempts to predict the value of the next point.
projection_hash
dlib/lsh.h
dlib/lsh/projection_hash_abstract.h
This is a tool for hashing elements of a vector space into the integers.
It is intended to represent locality sensitive hashing functions such as
the popular random projection hashing method.
create_random_projection_hash
dlib/lsh.h
dlib/lsh/create_random_projection_hash_abstract.h
Creates a random projection based locality sensitive
hashing function. The projection matrix
is generated by sampling its elements from a Gaussian random number generator.
create_max_margin_projection_hash
dlib/lsh.h
dlib/lsh/create_random_projection_hash_abstract.h
Creates a random projection based locality sensitive
hashing function.
This is accomplished using a variation on the random hyperplane generation
technique from the paper:
Random Maximum Margin Hashing by Alexis Joly and Olivier Buisson
In particular, we use a linear support vector machine to generate planes.
We train it on randomly selected and randomly labeled points from
the data to be hashed.
hash
dlib/hash.h
dlib/general_hash/hash_abstract.h
This is a set of convenience functions for invoking murmur_hash3
on std::strings, std::vectors, std::maps, or dlib::matrix objects.
As an aside, the hash() for matrix objects is defined here.
It has the same interface as all the others.
count_bits
dlib/hash.h
dlib/general_hash/count_bits_abstract.h
This function counts the number of bits in an unsigned integer which are
set to 1.
hamming_distance
dlib/hash.h
dlib/general_hash/count_bits_abstract.h
This function returns the hamming distance between two unsigned integers.
That is, it returns the number of bits which differer in the two integers.
rand
dlib/rand.h
dlib/rand/rand_kernel_abstract.h
This object represents a pseudorandom number generator.
disjoint_subsets
dlib/disjoint_subsets.h
dlib/disjoint_subsets/disjoint_subsets_abstract.h
This object represents a set of integers which is partitioned into
a number of disjoint subsets. It supports the two fundamental operations
of finding which subset a particular integer belongs to as well as
merging subsets.
running_stats
dlib/statistics.h
dlib/statistics/statistics_abstract.h
This object represents something that can compute the running mean,
variance, skewness, and kurtosis statistics of a stream of real numbers.
running_stats_ex.cpp.html
kcentroid_ex.cpp.html
running_covariance
dlib/statistics.h
dlib/statistics/statistics_abstract.h
This object is a simple tool for computing the mean and
covariance of a sequence of vectors.
running_scalar_covariance
dlib/statistics.h
dlib/statistics/statistics_abstract.h
This object is a simple tool for computing the covariance of a
sequence of scalar values.
mean_sign_agreement
dlib/statistics.h
dlib/statistics/statistics_abstract.h
This is a function for computing the probability that
matching elements of two std::vectors have the same sign.
correlation
dlib/statistics.h
dlib/statistics/statistics_abstract.h
This is a function for computing the correlation between
matching elements of two std::vectors.
covariance
dlib/statistics.h
dlib/statistics/statistics_abstract.h
This is a function for computing the covariance between
matching elements of two std::vectors.
r_squared
dlib/statistics.h
dlib/statistics/statistics_abstract.h
This is a function for computing the R squared coefficient between
matching elements of two std::vectors.
mean_squared_error
dlib/statistics.h
dlib/statistics/statistics_abstract.h
This is a function for computing the mean squared error between
matching elements of two std::vectors.
random_subset_selector
dlib/statistics.h
dlib/statistics/random_subset_selector_abstract.h
This object is a tool to help you select a random subset of a large body of data.
In particular, it is useful when the body of data is too large to fit into memory.
randomly_subsample
dlib/statistics.h
dlib/statistics/random_subset_selector_abstract.h
This is a set of convenience functions for
creating random subsets of data.
hsort_array
dlib/sort.h
dlib/sort.h
hsort_array is an implementation of the heapsort algorithm. It will sort anything that has an
array like operator[] interface.
put_in_range
dlib/algs.h
dlib/algs.h
This is a simple function that takes a range and a value and returns the given
value if it is within the range. If it isn't in the range then it returns the
end of range value that is closest.
isort_array
dlib/sort.h
dlib/sort.h
isort_array is an implementation of the insertion sort algorithm. It will sort anything that has an
array like operator[] interface.
numeric_constants
dlib/numeric_constants.h
dlib/numeric_constants.h
This is just a header file containing definitions of common numeric constants such as pi and e.
qsort_array
dlib/sort.h
dlib/sort.h
qsort_array is an implementation of the QuickSort algorithm. It will sort anything that has an array like
operator[] interface. If the quick sort becomes unstable then it switches to a heap sort. This
way sorting is guaranteed to take at most N*log(N) time.
md5
dlib/md5.h
dlib/md5/md5_kernel_abstract.h
This is an implementation of The MD5 Message-Digest Algorithm as described in rfc1321.
median
dlib/algs.h
dlib/algs.h
This function takes three parameters and finds the median of the three. The median is swapped into
the first parameter and the first parameter ends up in one of the other two, unless the first parameter was
the median to begin with of course.
square_root
dlib/algs.h
dlib/algs.h
square_root is a function which takes an unsigned long and returns the square root of it or
if the root is not an integer then it is rounded up to the next integer.
set_intersection
dlib/set_utils.h
dlib/set_utils/set_utils_abstract.h
This function takes two set objects and
gives you their intersection.
set_union
dlib/set_utils.h
dlib/set_utils/set_utils_abstract.h
This function takes two set objects and
gives you their union.
set_difference
dlib/set_utils.h
dlib/set_utils/set_utils_abstract.h
This function takes two set objects and
gives you their difference.
set_intersection_size
dlib/set_utils.h
dlib/set_utils/set_utils_abstract.h
This function takes two set objects and tells you
how many items they have in common.
quantum_register
dlib/quantum_computing.h
dlib/quantum_computing/quantum_computing_abstract.h
This object represents a set of quantum bits. It can be used
with the quantum gate object to simulate
quantum algorithms.
quantum_computing_ex.cpp.html
gate
dlib/quantum_computing.h
dlib/quantum_computing/quantum_computing_abstract.h
This object represents a quantum gate that operates on a
quantum_register.
quantum_computing_ex.cpp.html