首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >找到一个30维向量的10个最接近的匹配项,是什么数据结构?

找到一个30维向量的10个最接近的匹配项,是什么数据结构?
EN

Stack Overflow用户
提问于 2012-12-25 20:43:49
回答 1查看 257关注 0票数 0

我得到了一个有30个维度的向量,我想在我的数据库中找到10个最接近的匹配。我的数据库中有大约3000个向量,我必须将其与之进行比较。一些维度比其他维度更重要,所以我想给它们单独的权重。

这30个维度是RGB值的10倍。我把一张照片分成9块。所以9*3 (RGB) 27。最后三个值是图片的平均颜色的RGB。

我的问题是:如果可能的话,这是可能的吗?使此过程尽可能快速有效的最佳方法是什么?就我自己而言,我正在考虑一种树,但树太多了,我不知道哪一棵最适合我的问题。

编辑:

我想我并不完全清楚我想要实现什么。我有一个随机向量,我想将这个向量与数据库中的向量进行比较,找出10个闭合的向量。我有一个包含所有向量的数据库。我已经将它们存储在MySQL DB中,每一行都是一个向量。见下文

EN

回答 1

Stack Overflow用户

发布于 2012-12-25 23:52:42

这个问题类似于找到与参考点最接近的n个点的问题,当您有太多参考点时。

假设您知道如何比较两个向量以找到它们之间的“距离”,则可以使用最大堆。使用与随机向量的距离作为比较来自db的两个向量的关键字。那是,

  1. 查找随机向量与数据库中前10个向量的距离,并将它们存储在大小为10的最大堆中。因此,根将是到目前为止距离随机向量最远的向量。
  2. 逐个比较并找出随机向量与所有其他向量之间的距离。
  3. 对于每次比较,如果找到的距离小于最大堆的根,则从堆中提取最大元素并将最新的向量插入堆中。
  4. 在结束时,您将拥有堆中最接近的10个向量。

也就是说,你的问题空间看起来真的很小。所以,你可以按照评论中的建议使用暴力。

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

https://stackoverflow.com/questions/14030750

复制
相关文章

相似问题

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