我正在搜索长度为 12 的向量空间,条目为 0、1、2。例如,一个这样的向量是
001122001122。我有大约一千个好的向量和大约一千个坏向量。对于每个坏向量,我需要找到最接近的好向量。两个向量之间的距离只是不匹配的坐标数。好的向量排列得不是特别好,它们“好”的原因在这里似乎没有帮助。我的主要优先事项是算法要快。
如果我做一个简单的详尽搜索,我必须计算大约 1000*1000 的距离。这似乎很笨拙。
如果我首先使用好的向量应用 Dijkstra 算法,我可以计算空间中每个向量的最近向量和最小距离,因此每个坏向量都需要简单的查找。但是空间中有 3^12 = 531,441 个向量,因此预计算是一百万次距离计算。没有多少储蓄。
你能帮我想一个更好的方法吗?
编辑:因为人们认真地问是什么让他们“好”:每个向量代表六个等边三角形的六边形图片的描述,这是立方体 3D 排列的 2D 图像(想想广义 Q-bert)。等边三角形是立方体 (45-45-90) 面的一半,倾斜成透视图。其中六个坐标描述了三角形的性质(感知的地板、左墙、右墙),六个坐标描述了边的性质(感知的连续性,两种感知的不连续性)。1000 个好的向量是那些代表透视立方体时可以看到的六边形的向量。搜索的原因是对充满三角形的十六进制地图应用局部校正......