如果有更快的方法從向量列表中找到特定向量?我做矢量比較,這需要永遠做,我有數百萬記錄。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