in range(0, N, N/D): sub_query = Q[l:l+N/D] for subvector in sub_queryからsub_r以内の全subvector: for vector in hash[target_subvectors]: if distance(vector, query) <= r: yield vector 2, 3) 探索 hash = [{}] #D個のハッシュ for vector in data: for l in range(0, N, N/D): hash[l/(N/D)][vector[l:l+N/D]].append(vector) 1) 全データをハッシュに
セントロイドを、割り当てられたデータの平均に更新する • 2値であること、平均は各次元独立に計算できることに留意する と • 割り当てられたサンプルの各次元毎の和の正負で決定できる for centroid in centroids: summed = sum(そのcentroidに割り当てられたサンプル) #ただし、各サンプルの各次元は-1または1の2値を取るものとする for d in range(D): centroid[d] = 1 if summed[d] > 0 else -1