上一小节,我们对E2LSH代码主要的源码框架和用到的数据结构作了简单介绍(http://blog.csdn.net/jasonding1354/article/details/38331229),这一节我将简单介绍一下E2LSH的主要函数接口。
1、构建R-NN数据结构(定义在NearNeighbors.h)
输入为1-δ、R、d和数据集P,利用下面函数来构建:
PRNearNeighborStructT initSelfTunedRNearNeighborWithDataSet(RealT thresholdR, RealT successProbability, Int32T nPoints, IntT dimension, PPointT *dataSet, IntT nSampleQueries, PPointT *sampleQueries)
该函数会估计最优参数k,m,L并根据上述参数来构建R-NN数据结构
参数说明:
■ sampleQueries——查询样本数据集
sampleQueries可以是查询数据集中的数据,也可以是数据集P中的数据
■ nSampleQueries指明数据集sampleQueries的数据点个数
函数返回值为已构建的R-NN数据结构。
2、查询操作(定义在NearNeighbors.h)
Int32T getRNearNeighbors(PRNearNeighborStructT nnStruct, PPointT queryPoint, PPointT *(&result), IntT &resultSize)参数说明:
■ nnStruct——进行查询操作的R-NN数据结构
■ queryPoint——待查询数据点
■ result—— 最近邻存储的数组
■ resultSize——result数组的大小
该函数getRNearNeighbors返回查询的最近邻的个数。
3、估计最优参数(定义在SelfTuning.h)
RNNParametersT computeOptimalParameters(RealT R, RealT successProbability, IntT nPoints, IntT dimension, PPointT *dataSet, IntT nSampleQueries, PPointT *sampleQueries)
参数说明:
■ sampleQueries——查询样本数据集
sampleQueries可以是查询数据集中的数据,也可以是数据集P中的数据
■ nSampleQueries指明数据集sampleQueries的数据点个数
4、针对最优参数构建R-NN数据结构(定义在LocalitySensitiveHashing.h)
PRNearNeighborStructT initLSH_WithDataSet(RNNParametersT algParameters, Int32T nPoints, PPointT *dataSet)■ algParameters——指定R-NN结构的参数
转载请注明作者及文章出处:http://blog.csdn.net/jasonding1354/article/details/38356573
参考资料:
1、M.Datar,N.Immorlica,P.Indyk,and V.Mirrokni,“Locality-SensitiveHashing Scheme Based on p-Stable Distributions,”Proc.Symp. ComputationalGeometry, 2004.
2、A.Andoni,P.Indyk.E2lsh:Exact Euclidean locality-sensitive hashing.http://web.mit.edu/andoni/www/LSH/.2004.
【E2LSH源码分析】E2LSH函数接口,布布扣,bubuko.com
原文地址:http://blog.csdn.net/jasonding1354/article/details/38356573