We examine the efficiency of hash-coding and tree-search algorithms for retrieving from a file of k-letter words all words which match a partially-specified input query word (for example, retrieving all six-letter English words of the form S**R*H where “*” is a “don’t care” character). We precisely characterize those balanced hash-coding algorithms with minimum average number of lists examined. Use of the first few letters of each word as a list index is shown to be one such optimal algorithm. A new class of combinatorial designs (called associative block designs) provides better hash functions with a greatly reduced worst-case number of lists examined, yet with optimal average behavior maintained. Another efficient variant involves storing each word in several lists. Tree-search algorithms are shown to be approximately as efficient as hash-coding algorithms, on the average. In general, these algorithms require time about O(n(k - s)/k ) to respond to a query word with s letters specified, given a file of nk-letter words. Previous algorithms either required time O(s · n/k) or else used exorbitant amounts of storage.
No takes yet. Share an insight, caveat, or question.
Ronald L. Rivest (1976) studied this question.
Synapse has enriched 3 closely related papers on similar clinical questions. Consider them for comparative context: