计算最高的两边平均比赛

时间:2019-04-05 14:28:50

标签: excel algorithm sorting match

  

”“问题的第一部分致力于更好地解释概念,因此我们知道我们正在计算的内容。   如果您认为不必要,请跳到下面的后半部分。


1。问题的基本概述:

您好,我有一个应用程序,类似于一个约会网站。您可以打开各种用户个人资料,甚至可以根据兴趣爱好,城市和其他条件浏览数据并找到潜在的匹配项。

  

其计算方式与问题无关,但与   “ 查找匹配项”计算看起来像这样,排序列表   用户,具体取决于他们的适应程度(最后一列)

     

enter image description here

与该问题有关的主要是:

  • 第一列( ID -用户ID
  • 其他用户的最后一列( Zhoda -Match%,相对于当前选择的那个

2。我需要做的-目前如何做

我需要平均找出所有用户中最高的匹配项。如果我要用算法写这篇文章:

1. Loop through all users
2. For each user in our database calculate the potential matches
3. Store the score of selected user ID, against all the found user IDs
4. Once it's all calculated, pit all users against each other _
   and find the highest match on average
  

显然,这听起来很复杂/模糊,所以这里有一个   简化的例子。假设我已经完成了最初的3步骤,   得到了以下结果:

     

enter image description here

     

在这里,所需的结果将是:

User1 <- 46% -> User2
     

因为它们的平均合并百分比最高:

     
      
  • User1User230%
  •   
  • User2User162%

     User1 <- (30+62)/2 -> User2
    
  •   
     

没有其他可能的用户组合具有更高的match%平均水平


3。问题背后的目的:

现在显然您可能会问,如果我得到了后面的计算,那么为什么首先要问这个问题呢?嗯,原因是万物与万物的组合效率极低

假设我的数据库中有100个用户,而不是3个。我将不得不单独对100*100进行match%计算,更不用说随后针对每个用户检查average Match%了。

也许我可以用某种更好的方法来处理

  • 最小化我必须使用的数据
  • 一些排序算法,在这里我可以跳过某些计算以便更快
  • 一种用于计算最高average match%的总体更好的方法

所以要概括一下:

  • 我有一个用户数据库。
  • 每个用户相对于其他每个用户都有一定数量的Match%
  • 我需要找到两个用户,在所有可能的组合中,每个用户(双方)的Match%平均平均值最高。

如果您需要任何其他信息,请告诉我。
 我会尽量保持问题的最新状态。

1 个答案:

答案 0 :(得分:1)

当您提出问题时-不,您不能显着加快此速度。由于您已将match%表示为任意函数,并且仅受隐含范围的约束,因此您无法利用任何数学属性来减少最坏情况的搜索情况。

在给定的情况下,您能做的最好就是利用范围。首先,不要为“平均值”而烦恼:由于这些严格是二进制匹配,因此除以2只是在浪费时间。保留总数。

从挑选一对开始;做双向比赛。一旦发现总数超过100,请存储该值并将其用于修剪任何不合格的搜索。例如,如果到目前为止,您的最佳匹配总数为120,那么如果您发现一对match(A, B) < 20,那么您就不必担心计算match(B, A)

之间,您可以维护首个匹配项的排序列表( O(n log n));除非您有理由相信第二场比赛可能会超过您的最佳比赛,否则不要进行第二场比赛。

优化的其余部分包括收集有关匹配的统计信息,以便您可以平衡何时只进行双向匹配。例如,您可以将第二个匹配项推迟到比已推迟的第70个百分点低的任何第一个匹配项。这是希望找到一种更好的匹配方式,从而完全消除这种情况。


如果您收集有关match函数分布的统计信息,则可以更好地调整此往复过程。

如果您可以推导有关match函数的数学属性,则可能有方法利用这些属性来提高效率。但是,由于它已经不是正式的拓扑“距离”指标d(请参见下文),因此我对此抱有很大希望。

基本指标属性:

    所有(A,B)对都存在
  • d(A,B)
  • d(A,B)= d(B,A)
  • d(A,A)= 0 //不适用于二部图
  • d服从三角形不等式-它不直接适用,但对二部图具有间接影响。