本文整理汇总了C++中bit_vector::calc_hamming_distance方法的典型用法代码示例。如果您正苦于以下问题:C++ bit_vector::calc_hamming_distance方法的具体用法?C++ bit_vector::calc_hamming_distance怎么用?C++ bit_vector::calc_hamming_distance使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类bit_vector
的用法示例。
在下文中一共展示了bit_vector::calc_hamming_distance方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: neighbor_row_from_hash
void euclid_lsh::neighbor_row_from_hash(
const bit_vector& bv,
float norm,
vector<pair<string, float> >& ids,
uint64_t ret_num) const {
jubatus::util::lang::shared_ptr<const column_table> table = get_const_table();
jubatus::core::storage::fixed_size_heap<pair<float, size_t> > heap(ret_num);
{
const_bit_vector_column& bv_col = lsh_column();
const_float_column& norm_col = norm_column();
const float denom = bv.bit_num();
for (size_t i = 0; i < table->size(); ++i) {
const size_t hamm_dist = bv.calc_hamming_distance(bv_col[i]);
const float theta = hamm_dist * M_PI / denom;
const float score = norm_col[i] * (norm_col[i] - 2 * norm * cos(theta));
heap.push(make_pair(score, i));
}
}
vector<pair<float, size_t> > sorted;
heap.get_sorted(sorted);
ids.clear();
const float squared_norm = norm * norm;
for (size_t i = 0; i < sorted.size(); ++i) {
ids.push_back(make_pair(table->get_key(sorted[i].second),
sqrt(squared_norm + sorted[i].first)));
}
}
示例2: ranking_hamming_bit_vectors
void ranking_hamming_bit_vectors(
const bit_vector& query,
const const_bit_vector_column& bvs,
vector<pair<uint64_t, float> >& ret,
uint64_t ret_num) {
storage::fixed_size_heap<pair<uint32_t, uint64_t> > heap(ret_num);
for (uint64_t i = 0; i< bvs.size(); ++i) {
const size_t dist = query.calc_hamming_distance(bvs[i]);
heap.push(make_pair(dist, i));
}
vector<pair<uint32_t, uint64_t> > sorted;
heap.get_sorted(sorted);
ret.clear();
const float denom = query.bit_num();
for (size_t i = 0; i < sorted.size(); ++i) {
ret.push_back(make_pair(sorted[i].second, sorted[i].first / denom));
}
}