首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何对数值向量进行排序?

如何对数值向量进行排序?
EN

Stack Overflow用户
提问于 2009-07-13 04:55:33
回答 5查看 382关注 0票数 0

现在,有很多有序的数值向量(大约50维)。每个维度都是0到200之间的整数。我希望对它们进行排序,以确保相同存储桶中的相似向量,相邻存储桶中的所有向量也具有一定程度的相似性。例如,<1,24,25,78,9>和<2,24,24,78,9>应该在同一个存储桶中(存储桶编号为010),但是<3,29,26,74,11>和<4,28,29,75,10> (它们也在同一个存储桶中)在相邻的存储桶中(存储桶编号为011)

如何设计这样的排序函数?

EN

回答 5

Stack Overflow用户

发布于 2009-07-13 05:30:24

你想要一个Morton code。它交错了每个维度的位,以帮助将相似的值保持在一起。这通常适用于二维和三维,但它适用于任何维度。

将每个D值表示为B比特的二进制字,然后交织这些比特以形成新的D*B比特长数字。这是你的查找表号。如果你想要一个较小的数字,丢弃较低的位以获得较少的存储箱。

一个更好的(但计算起来麻烦得多)函数是multidimensional Hilbert curve mapping.,这在实践中很难使用,但它确实拥有您能得到的最好的索引位置。

票数 2
EN

Stack Overflow用户

发布于 2009-07-13 05:02:33

你所描述的并不是一个正常意义上的“好的”散列函数。

您能更具体地说明如何从这些特定序列到这些存储桶编号(010,011)吗?您的散列函数基本上将是相同的过程。

票数 0
EN

Stack Overflow用户

发布于 2009-07-13 05:42:16

您想要的与散列正好相反:对于散列,您希望避免相似的值出现在相同的存储桶中。

看起来你正在寻找一棵树;R-spatial index听起来是最有前途的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1117758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档