public double GetJaccardIndex(MinHash other) { if (MinHashes.Length != other.MinHashes.Length) { throw new ArgumentException($"Hash length should be {MinHashes.Length}.", nameof(other)); } var count = MinHashes.Where((t, i) => t == other.MinHashes[i]).Count(); var estimate = (double)count / MinHashes.Length; return(estimate); }
public MinHash Merge(MinHash other) { var minHashes = new ulong[HashLength]; for (var i = 0; i < minHashes.Length; i++) { minHashes[i] = MinHashes[i] < other.MinHashes[i] ? MinHashes[i] : other.MinHashes[i]; } var hash = new MinHash(minHashes); return(hash); }