我在实施 minhashing 时遇到问题。在纸上和阅读中,我理解了这个概念,但我的问题是排列“技巧”。而不是置换集合和值的矩阵,实现的建议是:“选择 k(例如 100)个独立哈希函数”,然后算法说:
for each row r
for each column c
if c has 1 in row r
for each hash function h_i do
if h_i(r) is a smaller value than M (i, c) then
M(i, c) := h_i(r)
在不同的小例子和教学书中,他们只使用了 (h = a*x + b mod p) 形式的两个或三个哈希函数。这很容易找到,但在实践中怎么做,我怎样才能找到100个这样的独立函数。
在此处的 Java 示例中,仅从一个哈希函数而不是多个哈希函数生成哈希值,与行索引无关。区别在哪里?我现在的问题是如何找到这些独立的散列函数,或者如果有一种只有一个散列函数的方法如何在算法中处理这些值?