算法2:基于EWH的最近邻搜索算法

输入:一个生物查询数据 q = ( q 1 , , q n ) ,索引数据表 F ,一组权重 { μ 0 , , μ e } ,相似度阈值 θ

输出:查询 q 的最近邻

1) 初始化数据库中的所有数据分数为0

2) 对于每一个 i ( 1 i l ) ,计算 q k i : h 0 ( i ) = H ( q k i ) ,并将(行,列)值等于 { h 0 ( i ) , i } 的所有数据赋值为 α 0

3) 对于误差r从1到e,计算集合 { h r ( i ) : h r ( i ) = H ( q k i ( r ) ) } ,其中 q k i ( r ) 是与 q k i 有r比特误差的向量

4) 将(行,列)值等于 { h r ( i ) , i } 的所有数据分数增加 α r

5) 当所有的 f i 遍历完上述步骤后,都被赋予了一定的分数。我们选择分数大于β的数据作为最近邻候选者

6) 最后穷举所有的最近邻候选者,计算它们的汉明距离并返回最近邻