这类算法被称为最近邻或K最近邻。 除了余弦相似度,如果向量的方向很重要,则会起作用。 如果向量表示空间中的位置,则任何表示空间中距离的度量都可行。 例如欧几里得距离:取每个维度差的平方和的平方根。 这将为每个向量提供一个距离,然后按此距离对向量集进行升序排序。 这个过程的时间复杂度为O(N)。 如果速度太慢,您可能需要查看一些常见的K最近邻算法。
如果您的问题涉及大量数据: 我在ddj.com上发布了一篇相关算法,可以找到给定点最近的线: 加速搜索最近的线 您需要修改此算法,例如将给定向量转换为多个点。这将大大减少可能的匹配数量。然后必须对每个可能的匹配进行精确匹配检查,方法如下: 找到两个向量的交点,或者 获取从向量起点和终点到可能的匹配的距离,如文章中所述