mysql - 根据民意调查响应确定用户的 "uniqueness"的大 O 是什么?

标签 mysql database algorithm big-o time-complexity

我有一个 MySQL 表,其中包含用户对是/否投票问题的回答。看起来有点像这样:

| user_id    | poll_id    | response
| 111        | 1         | 'yes'
| 111        | 2         | 'no'
| 111        | 3         | 'no'
| 222        | 1         | 'yes'
| 222        | 2         | 'yes'
| 222        | 3         | 'yes'
| 333        | 1         | 'no'
| 333        | 2         | 'no'
| 333        | 3         | 'no'

对于给定的 user_id,我想计算他们的响应与其他每个用户的响应之间的相似度。因此,用户 111 和用户 222 的相似度为 0.333(因为他们有 3 个相同响应中的 1 个),而用户 111 和用户 333 的相似度为 0.666(因为他们有 3 个相同响应中的 2 个)。

然后,我想确定给定用户的中值相似度值,并将其与所有其他用户的中值相似度值进行排名,以得出该用户的“独特性”的衡量标准。

这种操作的时间复杂度是多少?

*(注:目前,我的响应表中有大约 25,000 个 user_ids、400 个 poll_ids 和大约 500,000 行。显然,并非所有用户都响应每个 poll 问题。这会影响时间复杂度计算吗?)*

最佳答案

对于每个用户,你必须计算与所有其他用户的相似度;即 n2 - n,或者实际上是 n2。但您还必须对这些结果进行排序才能找到中位数。因此,假设您的排序为 n log n,则主导项将为 n2 log n

如果你使用平均值,而不是中位数,你可以摆脱排序;那么时间复杂度将为O(n2)

关于mysql - 根据民意调查响应确定用户的 "uniqueness"的大 O 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10335269/

相关文章:

php - Laravel 多对多/从数据库中选择与另一个不相关的条目

c - if else 递归最差时间复杂度

algorithm - 我的 Power 方法的运行时复杂性

java - 使用 Java 连接到 mySQL 数据库

php - 从数据库中获取值并存储在变量中

database - 使用 Excel 作为 ODBC 数据库

c# - 内部连接 ​​4 个表 mysql C#

php - 如何通过工厂制作点柱的假坐标?

algorithm - 分析5^(log2N)和N^(1/2)之间的大O关系,如何证明?

sql - 我如何获得今天日期的 mysql 结果?