gpt4 book ai didi

algorithm - 我的哪些 friend 有相同的 'like' ?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:36:32 25 4
gpt4 key购买 nike

我有一个网络应用程序,每个用户都可以有 friend 。用户可以查看我网站上的不同页面,例如:

pizza.html
hamburger.html
etc..

如果我是用户 A,我正在查看页面“pizza.html”,我想知道我的哪些 friend 也“喜欢”这个页面。假设我想在加载 pizza.html 时显示此内容,我可以非常痛苦地按需执行它,例如:

User me;
Like current = "pizza.html";
List<User> friendsWhoAlsoLikePageImLookingAt;
for (User friend : me.getFriends()) {
for (Like like : friend.getLikes()) {
if (like == current) {
friendsWhoAlsoLikePageImLookingAt.add(friend);
}
}
}

// now friendsWhoAlsoLikePageImLookingAt contains all of my
// friends that like the page I'm viewing.

这会奏效,但随着 friend 和他们喜欢的人数量的增加,扩展性会很差。有没有我可以研究的算法来解决这个问题?

另一种方法是预先计算每个用户的所有喜欢(我认为这也不会很好地扩展)。例如,每个用户根据兴趣获得自己的 txt 文件,例如:

userA_pizza.txt
userB_pizza.txt
userA_hamburger.txt
userB_hamburger.txt
...

假设我是 userB 的 friend ,并且 userB 添加了“pizza.html”作为新的点赞 - 那么我将更新 userA_pizza.txt 文件,如下所示:

// userA_pizza.txt
userB // latest friend to also like this interest.
userX // previous friend likes
userY // previous friend likes

现在,每当我 (userA) 查看披萨页面时,我都可以打开“userA_pizza.txt”并直接转储所有 friend 的名字而不进行任何计算。现在每次用户喜欢一个页面,我都必须更新 N 个 txt 文件,其中 N 是他们的 friend 数。此外,每个用户都需要针对每个可能的兴趣(并且可能有数千个兴趣)的文本文件。如果一个用户有 10 万个 friend ,他们每个人都有 1000 个兴趣,这也可能是非常昂贵的!

是的,所以任何想法或想法都会很棒 -

谢谢

最佳答案

你不能只为每个“喜欢”的页面保留一个列表吗?然后,您不必遍历当前用户的每个 friend 的所有“喜欢”,您可以只遍历喜欢该用户当前所在页面的用户,并只列出与当前用户是 friend 的用户。

仍然是低效的并且不适合缩放,但是那样的话,当用户喜欢一个页面时,您只需要更新实际的“喜欢”页面而不是一大堆页面。您是否仅限于文本文件?数据库可以让这一切变得非常简单。

关于algorithm - 我的哪些 friend 有相同的 'like' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3344722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com