我面临着以下问题:
假设你是一个社交网络用户,因此有一个朋友列表,f(u)。分区是一个函数f->g,其中g是一组组组,如高中、大学、工作等。
我需要想出划分f的算法:
输入是f,而且f(f)表示f中的每一个f(每个u的朋友的朋友列表)。
在运行过程中,允许算法询问u个问题(例如“对于某些特定用户v,什么是最好的组?”)是的。
问题的数量应该保持在最低限度(最低限度并不是一个明确的数字,但我认为5%的朋友似乎是对的)。
显然,生成的分区不是最优的,但是可以接受它作为以后改进的起点。
任何想法都将不胜感激
编辑:不,这不是家庭作业。我相信家庭作业会有更明确的要求和目标功能。不管怎样,这是我面临的现实问题。
另外,我可能把它简化了一点,但实际上一个用户可以是许多组的一部分(所以它更像f->p(g),其中p(g)是g的幂组,所以更好的算法可以做到这一点。

最佳答案

基本的想法是试着根据你的朋友是谁的朋友来把他们分成小组。
例如,如果你是鲍勃,你知道萨利和拉里,萨利和拉里都认识对方,他们可能在同一个“组”。你们还不知道那个团体是什么,但既然你们都认识对方,你们可能在同一个地方见过面——无论是工作、大学等。
可以将其实现为一个有向图,其中节点是人,边是连接。然后,您需要根据这些节点的连接情况将它们组合在一起。
一旦建立了组,那么只需查询组和潜在的不明确节点中的样本,就可以了解组的实际情况。
听起来像是家庭作业,所以我不会给你任何东西,但这应该让你开始。

07-24 09:55