假设我有关于用户的以下数据
User1: {location: "Topeka, KS", school: "University of Texas", interests: ["running"] }
User2: {location: "Austin, TX", school: "University of Texas", interests: ["knitting", "running"] }
User3: {location: "Topeka, KS", school: "University of Kansas" interests: ["kayaking"]}
鉴于此信息,我正在编写一个匹配算法,将“最佳”用户组合在一起。有一些标准 -
并非所有属性都具有相同的权重。假设“位置”的权重远远超过任何其他财产。在上面,即使用户1和2共享两个属性(学校和“正在运行”),用户1的最佳匹配仍然是用户3,因为位置的重量很高
算法在大规模运行时应该具有相当的性能。这意味着我想避免将每个用户单独地与每个其他用户进行比较。对于N个用户,这是O(N ^ 2)操作。理想情况下,我想开发某种“分数”,我可以为每个用户单独生成,因为这只涉及遍历所有用户一次。然后,我可以找到具有相似分数的其他用户,并根据此确定最佳匹配。
提前知道利益,地点,学校等的名单......它们由外部API提供,字面上可以是任何字符串。
是否存在以这种方式优化配对的任何已知算法?
谢谢!