PERFECT HASHING OF VARIABLY-SIZED DATA
First Claim
1. A process for hashing variable-sized data, comprising:
- receiving set of variable-sized data elements;
for each data element, computing a corresponding offset vector address from an address of the data element;
for each offset vector address, computing a corresponding offset vector for populating an offset table;
for each data element, computing a corresponding hash table address from a combination of the address of the data element and the corresponding offset vector; and
hashing each data element to a contiguous block of one or more storage locations in the hash table beginning with the corresponding hash table address.
2 Assignments
0 Petitions
Accused Products
Abstract
A “Variable-Rate Perfect Hasher” maps sparse variable-rate data of one or more dimensions into a hash table using a perfect hash function. In various embodiments, perfect hash tables are populated by first computing offset table address for each data point of a domain of sparse variable-rate data elements. Offset vectors are then computed for each offset table address based in part on the size of each data element by evaluating offset vectors in order of a sum of the data point addresses mapping to each offset vector. These offset vectors are then stored in the offset table. For each data point, the corresponding offset vector is then used to compute a hash table address. Data elements are then perfectly hashed into the hash table using the computed hash table addresses. The resulting hash tables support efficient random access of the variable-sized data elements stored therein.
-
Citations
20 Claims
-
1. A process for hashing variable-sized data, comprising:
-
receiving set of variable-sized data elements;
for each data element, computing a corresponding offset vector address from an address of the data element;
for each offset vector address, computing a corresponding offset vector for populating an offset table;
for each data element, computing a corresponding hash table address from a combination of the address of the data element and the corresponding offset vector; and
hashing each data element to a contiguous block of one or more storage locations in the hash table beginning with the corresponding hash table address. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A computer-readable medium having computer executable instructions stored thereon for perfectly hashing image data into a hash table, said computer executable instructions comprising:
-
receiving a sparse grid-based image comprised of a plurality of neighboring cells, wherein a subset of the cells contain variable-rate image data and wherein the remaining cells do not contain data;
computing a binary mask over the grid-based image to identify each cell of the subset of cells that contain variable-rate image data;
in accordance with the binary mask, for each cell that contains variable-rate image data, determining a cell address and computing a corresponding offset vector address, each said offset vector address corresponding to one or more of the cells;
for each offset vector address, computing a corresponding offset vector for populating a corresponding entry in an offset table;
in accordance with the binary mask, for each cell that contains variable-rate image data, computing a corresponding hash table address from a sum of the cell address and the corresponding offset vector; and
in accordance with the binary mask, for each cell that contains variable-rate image data, hashing the contents of each cell to a contiguous block of one or more storage locations within the hash table beginning with the corresponding hash table address. - View Dependent Claims (12, 13, 14, 15, 16)
-
-
17. A method for performing a perfect hash of data sparsely populating a domain, comprising using a computing device to:
-
receiving set of variable-rate data elements, each data element corresponding to a populated data point within a sparse data domain;
determining an address for each populated data point and computing a corresponding offset vector address, each offset vector address corresponding to one or more of the populated data points;
computing and storing a corresponding offset vector for each offset vector address, wherein each computed offset vector ensures a perfect hash of the corresponding variable-rate data element of each of the corresponding populated data points;
for each populated data point, computing a corresponding hash table address from a sum of the data point address and the corresponding offset; and
hashing the spatially coherent variable-rate data element of each populated data point to a contiguous block of one or more storage locations within in a hash table beginning with the corresponding hash table address. - View Dependent Claims (18, 19, 20)
-
Specification