<blockquote>
  <p>Locality-sensitive hashing (LSH) reduces the dimensionality of
  high-dimensional data. LSH hashes input items so that similar items
  map to the same “buckets” with high probability:</p>
</blockquote>

<p><a href="https://en.wikipedia.org/wiki/Locality-sensitive_hashing" rel="nofollow">https://en.wikipedia.org/wiki/Locality-sensitive_hashing</a></p>

<p>Also see: <a href="https://en.wikipedia.org/wiki/Perceptual_hashing" rel="nofollow">https://en.wikipedia.org/wiki/Perceptual_hashing</a></p>

<p>Here is a nice example of perceptual hashing on DNA sequences: </p>

<p><a href="http://arxiv.org/pdf/1412.5517.pdf" rel="nofollow">http://arxiv.org/pdf/1412.5517.pdf</a></p>
Hash function that maps similar inputs to similar outputs?
<p>Is there a hash function where small changes in the input result in small changes in the output? For example, something like:</p>

<pre><code>hash("Foo") =&gt; 9e107d9d372bb6826bd81d3542a419d6
hash("Foo!") =&gt; 9e107d9d372bb6826bd81d3542a419d7 &lt;- note small difference
</code></pre>