English

Partial-Match Queries with Random Wildcards: In Tries and Distributed Hash Tables

Data Structures and Algorithms 2016-01-27 v2

Abstract

Consider an mm-bit query qq to a bitwise trie TT. A wildcard * is an unspecified bit in qq for which the query asks the membership for both cases =0*=0 and =1*=1. It is common that such partial-match queries with wildcards are issued in tries. With uniformly random occurrences of ww wildcards in qq assumed, the obvious upper bound on the average number of traversal steps in TT is 2wm2^w m. We show that the average does not exceed m+1w+1(2w+22w4)+m=O(2wmw), \frac{m+1}{w+1} \left( 2^{w+2} - 2 w - 4 \right) + m = O \left( \frac{2^w m}{w} \right), and equals the value exactly when TT includes all the mm-bit keys as the worst case. Here the query qq performs with the naive backtracking algorithm in TT. It is similarly shown that the average is O(kwmw)O \left( \frac{k^w m}{w} \right) in a general trie of maximum out-degree kk. Our analysis for tries is extended to a distributed hash table (DHT), which is among the most frequently used decentralized data structures in networking. We show, under a natural probabilistic assumption for the largest class of DHTs, that the average number of hops required by an mm-bit query qq to a DHT DD with random ww wildcards meets the same asymptotic bound. As a result, qq is answered with average O(2wmw)O \left( \frac{2^w m}{w} \right) hops rather than Θ(2wm)\Theta \left( 2^w m \right) in the four major DHTs Chord, Pastry, Tapestry and Kademlia. In addition, with a uniform key distribution for sufficiently many entries, we prove that a lookup request to the DHT Chord is answered correctly with O(m)O(m) hops and probability 12Ω(m)1 - 2^{-\Omega (m)}. To the author's knowledge, the probability 12Ω(m)1 - 2^{-\Omega (m)} of correct lookup in Chord has not been identified so far.

Cite

@article{arxiv.1601.04213,
  title  = {Partial-Match Queries with Random Wildcards: In Tries and Distributed Hash Tables},
  author = {Junichiro Fukuyama},
  journal= {arXiv preprint arXiv:1601.04213},
  year   = {2016}
}
R2 v1 2026-06-22T12:30:53.457Z