0

我有几个项目(主题),每个项目都有几个子项目,如下所述......

应用

  • 微软词
  • 擅长
  • 视觉工作室

D B

  • mysql
  • mssql

我想比较其中几个组,并根据各自主题中有多少子项与其他主题中有多少子项,最好是在 1-10 的范围内为每个主题打分。这只是概念性的,不特定语言。我想比较数组,我只是不知道如何将每个数组与所有其他数组进行比较并在事后得出一个分数。谢谢你。

4

1 回答 1

0

这归结为计算联合。大多数现代语言都实现了数据类型来帮助解决这个问题。Python 有字典和集合,C++ 有 STL 映射和集合等。我会避免对联合进行任何手动计算,因为提供的数据类型在这方面效率更高。每个主题可以被认为是一组子主题,这些子主题的联合将决定有多少是共同的(即在每个主题中)。

如果您想找到每个项目(主题)之间的分数,并且如果您有 n 个主题,您将计算 n(n - 1) / 2 个分数。请注意,随着主题数量的增加,计算分数的数量将迅速增加。

至于计算分数,你会发现集合 A 和集合 B 之间的并集。这个并集可以

  • 包含所有项目(意味着 A 和 B 具有完全相同的集合);10分
  • 包含所有 1 组(意味着 B 包含所有 A,反之亦然)得分取决于一组独有的项目数
  • 包含小于 A 或 B 的最小大小

所以一个简单的计算可​​能是

(union.length / max(A.length, B.length)) * 10
于 2012-10-25T17:28:24.270 回答