如果有更快的方法从向量列表中找到特定向量?我做矢量比较,这需要永远做,我有数百万记录。C++比较向量,更快的方式
我使用OpenMP
这是我迄今为止
#pragma omp parallel for
for(int i=0;i<crossed.size();i++){
#pragma omp flush (exit)
if(!exit && (crossed[i]== vectors)){
loop = i;
found = true;
exit = true;
#pragma omp flush (exit)
}
}
if(found == false){
crossed.push_back(vectors);
cross.push_back(0);
}
else{
cross[loop] = cross[loop]+1;
}
什么问题你在解决?也许有一种数据结构或算法比矢量矢量更适合。也许你可以对数据进行排序,然后进行二分搜索? – Jens
如果您必须比较这样的多个向量,则可以考虑存储每个向量的哈希信息并比较哈希值。您仍然需要将两个向量与哈希值相等进行比较,但是您可以立即清除不同的哈希值 - 这会为您带来很多速度。 –
我想弄清楚图形是否同构。为了做到这一点,我必须乘以阿尔法向量中的每个点,然后检查是否可以找到重复一次。然后我将它们计数并与其他图形进行比较以找到非同构图。如果你们了解数学,那么找出更快的算法会很有帮助 – Hans