我需要解决一个具体问题.
我有一个社交网络的代表.
每个节点都是一个人,每个边缘是两个人之间的连接.图表是无向的(如您所料).
每个人都有购买产品的个人“亲和力”(简化事情,假设只有一个产品涉及整个问题).
在每个“步骤”中,每个人独立地选择是否购买产品.
有可能在这里进行调查.一些参数被考虑在内:
>他个人对产品的亲和力,
>他已经购买该产品的朋友的百分比
购买该产品的人的收益是1美元.
问题是指出将在步骤0中接收产品的X人(比如5人),并且在Y步之后将最大化增益的总预期值(比方说,10步)
网络非常大.以天真的方式模拟所有选项是不可能的.
我应该使用什么工具/库/算法?
谢谢.
附:
在谷歌和维基百科上调查此事时,一些条款不断涌现:
>动态网络分析
>流行病模型
但它没有帮助我找到答案
最佳答案 一般来说,拥有最多邻居的人在购买东西时影响最大.
因此,我的启发式方法是先按照他们拥有的邻居数量(按降序排列),然后按每个邻居的邻居数量(按从高到低的顺序)排序,依此类推.您将需要最多Y级别的邻居计数,但在实践中可能更少.然后只需在此列表中选择第一个X人.
这只是一种启发式方法,因为例如如果一个人有很多邻居,但他们中的大部分或全部可能已经通过其他联系购买了产品,那么它可能会更高的期望选择一个拥有较少邻居的不同的人,但其邻居不太可能已经拥有产品.
您不需要构建整个列表然后对其进行排序;你可以构建列表然后将每个项目插入到heap中,然后只提取得分最高的X人.如果X很小,这将快得多.
如果X和Y与你建议的一样低,那么这个计算将非常快,所以值得做的是重复运行,而不是从拥有该产品的前X人开始,每次运行你随机选择最初的X所有者根据取决于它们在列表中的位置的概率(在列表的下方,概率越低).