比较两个十六进制文件签名的相似性的最佳方法是什么。更具体地说,我想做的是采用.exe文件的十六进制表示形式,并将其与一系列病毒签名进行比较。对于这种方法,我计划将文件(exe)十六进制表示分解为N个字符(即10个十六进制字符)的各个组,并对病毒签名执行相同的操作。我的目标是执行某种启发式方法,因此统计检查此exe文件是否与已知病毒签名具有X%的相似性。我想到的最简单且可能非常错误的方法是,将exe[n,n-1]与病毒[n,n-1]进行比较,其中数组中的每个元素都是一个子数组,因此exe1[0,9]对抗病毒1[0,9]。每个子集都将进行统计评分。如您所知,将进行大量比较,因此非常非常慢。
我一直在程序中使用boost::geometry库,主要用于处理多边形对象。我现在正在尝试优化我的代码以更好地缩放更大的多边形。我的一个函数检查给定多边形和给定点(通常在多边形内部)点和多边形外环之间的最小和最大距离。我通过在多边形边上循环来实现:polygonpol;pointmyPoint;doublemin=9999999,max=0;for(autoit1=boost::begin(bg::exterior_ring(pol));it1!=boost::end(bg::exterior_ring(pol));++it1){doubledistance=bg::distance(
我刚刚在一些遗留代码中发现了对不同容器的迭代器之间的std::distance的严重滥用。包括代码之类的东西。现在恐怕有人可能在代码的其他部分犯了同样的错误。有没有办法在编译或运行时检测到这种错误?//badcodetoexplaintheproblemstd::vectorv1={1};autoiterv1=v1.begin();std::vectorv2=v1;intnDist=std::distance(v2.begin(),iterv1);//errordistancecalculatedbetween2containers 最佳答案
我正在尝试用C++编写8拼图游戏解算器,但在执行过程中遇到了很多问题。该程序目前正在运行,但解决难题需要太多步骤。我的意思是,有时它可以找到最优解,有时需要多达400步才能解决。我的主要疑问如下。想象一下我有这张图(这只是草稿):我使用曼哈顿距离作为启发式函数。在第一步之后我们有两个状态f(n)=5,所以我扩展了树。扩展后我仍然有f(n)=2的两个状态。这是我的疑问。我是否还需要扩展树直到获得唯一的最低f(n)?提前致谢! 最佳答案 DoIstillneedtoexpandthetree你不能贪婪地解决这个难题:总是选择具有较低启发
在汉明距离=1的情况下,制作字典中单词图的最有效方法是什么? 最佳答案 汉明距离仅针对长度相等的单词定义,因此您实际上会为字典中的每个单词长度创建一个不相交的图表。如果你的意思是levenshteindistance,它允许插入和删除,那么你确实会有一个图。一个选择是构造一个BK-tree从你的字典。虽然严格来说不是图,但它允许您提出相同的问题(获取具有给定距离的元素列表),并且需要O(nlogn)的时间来构造。另一种选择是蛮力法:对于每个词,测试它与所有候选词的距离。您可以将候选词缩小到相同长度的词(或者长度少一或多一倍,用于le
我写了一个k-means聚类算法和一个颜色量化算法。它们在结果方面按预期工作,但我想让它们更快。在这两种实现中我都需要解决一个问题:在3D空间中有两个点数组,然后对于第一个数组中的每个点,你需要从第二个数组中找到最近的点。我这样做:size_tclosest_cluster_index;doublex_dif,y_dif,z_dif;doubleold_distance;doublenew_distance;for(autopoint=points.begin();point!=points.end();point++){//FIX//assuggestedbyjuvian//K=1i
我有两个intvectors像a[100],b[100].计算它们的汉明距离的简单方法是:std::vectora(100);std::vectorb(100);doubledist=0;for(inti=0;i我想问一下,在C++中有没有更快的方法来完成这个计算,或者如何使用STL来完成同样的工作? 最佳答案 您要求更快的方法。这是embarrassinglyparallelproblem,因此,对于C++,您可以通过两种方式利用它:线程并行性和通过优化进行矢量化。//Thefollowingflagsallowcpuspecif
又是一些相对简单的东西,但对于他们想要什么感到困惑。在笛卡尔坐标系上求距离的方法是距离=sqrt[(x2-x1)^2+(y2-y1)^2]但是我如何在这里应用它呢?//Requires:testColortobeavalidColor//Effects:returnsthe"distance"betweenthecurrentPixel'scolorand//thepassedcolor//usesthestandardmethodtocalculate"distance"//usesthesameformulaasfindingdistanceona//Cartesiancoordi
我有一个点类:classPoint{public:intx,y;Point(intx1,inty1){x=x1;y=y1;}};和点列表:std::listpointList;std::list::iteratoriter;我正在将点推送到我的pointList(尽管如果尚未推送任何点,该列表可能还不包含任何点)。我有两个问题:如何从列表中删除最接近任意点(x,y)的点?假设我有x,y(5,12),我想在列表中找到最接近该点的点并将其从STD::List中删除。我知道我必须使用距离公式并且我必须使用迭代器遍历列表但是我在概念化如何在我迭代时跟踪哪个点最近时遇到了一些问题通过列表。如何返
我正在寻找一种有效的算法来检查一个点是否在3D中的另一个点附近。sqrt((x2-x1)^2+(y2-y1)^2+(z2-z1)^2)这似乎并不太快,实际上我不需要这么大的精度。我还能怎么做? 最佳答案 对距离求平方,并放弃对sqrt()的调用,这样会快得多:(((x2-x1)^2+(y2-y1)^2+(z2-z1)^2当然,在许多情况下,至少可以提前计算出radius*radius并存储为例如squaredRadius。 关于algorithm-3D中点A是否靠近点B-距离检查,我们在