首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >N维匹配算法

N维匹配算法
EN

Stack Overflow用户
提问于 2009-03-24 15:41:37
回答 5查看 4.5K关注 0票数 5

在这里寻求一些建议。有谁知道在n维空间中开始研究匹配算法的好地方。例如,任何交友网站都必须使用某种算法来匹配两个人。我读到的是,我们可以在n维数组中映射一个人的特征,每个特征都有一个点系统。一旦我们有了一个人的所有(可用)特征,我们就可以在n维数组中的一个点上表示这个人。然后,匹配2个人就像在这个n维数组中找到2个点之间的最短距离一样简单。有没有人对这些算法的实现有什么参考?写这类东西最好的语言是什么?

EN

回答 5

Stack Overflow用户

发布于 2009-03-24 15:59:10

如果你想为一个人找到最接近的匹配,Bentley & Shamos发表了一种多维的分而治之的方法:在O(N log N)时间内分而治之:Divide-and-conquer in multidimensional space发表在1976年第八届ACM年度计算理论研讨会论文集上。如果你找不到副本,this可能也会有帮助。

然而,对于您的示例应用程序,实际上找到最近的邻居似乎不是最大的问题-更棘手的是将输入映射到维度。例如,如果一个维度是“喜欢动物”,你对喜欢狗和猫但不能忍受马的人有什么价值?如果有人喜欢马,认为狗很好,被猫惹恼了,对金鱼感到矛盾,那该怎么办呢?

票数 6
EN

Stack Overflow用户

发布于 2009-03-24 15:50:03

首先,选择你最熟悉的语言。处理这种情况的算法相当简单,应该适用于任何现代语言。(只要有一些数组的概念,并且有可能是一个矩阵库,就应该没问题。)我以前用C、C++和C#实现过很多这样的代码,但见过python、vb.net等语言的实现。

根据您正在尝试做的事情,有几种选择。

也就是说,你想做什么取决于你的目标。如果只想找到最佳匹配,可以使用简单的距离计算(即:n维数组中每个维度/属性的平方和的sqrt ),可以选择加权每个属性的距离,并使用最近的点。

如果你想把人们分组在一起,你会想看看clustering algorithms。对于这样的数据,我怀疑某种形式的K-Means聚类或模糊c-means聚类将是最好的。

票数 1
EN

Stack Overflow用户

发布于 2012-05-07 13:46:37

下面的解决方案如何?

假设用户是U1、U2、U3、U4、U5....嗯。属性为A1、A2、A3、A4、A5.....上午

将这些存储为

A1 - U1,U2,U3...A2 - U4,U6,U7....A3 -

配置文件属性是索引并存储所有用户。现在,如果一个新用户来了,看看它的属性,对于这些属性,找到普通人。一个人出现在这些列表中的次数-更高的排名。

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

https://stackoverflow.com/questions/677987

复制
相关文章

相似问题

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