【发布时间】:2012-10-14 03:05:20
【问题描述】:
给定一个无向图 G=(V,E),每个节点 i 都与“Ci”个对象相关联。在每一步,对于每个节点 i,Ci 对象在 i 的邻居之间平均分配。经过K步,输出对象最多的前5个节点的对象个数。
以下是一步完成的一个示例:
A 的对象被 B 和 C 平分。
B 的对象被 A 和 C 平分。
C 的对象被 A 和 B 平分。
一些限制: |V|
我目前的想法是:用一个矩阵来表示每一步的变换。 这个问题转化为矩阵幂的计算。但是考虑到|V|,这个解决方案太慢了。可以是 10^5。
有没有更快的方法?
【问题讨论】:
-
评论你听说过PageRank吗?这似乎与您想要的 en.wikipedia.org/wiki/PageRank 相似,但需要进行一些修改...
-
单个对象可以关联多个节点吗?当您说“ Ci 对象将被 i 的邻居平均带走”时,您的意思是 i 的每个邻居都与与 i 关联的所有对象相关联吗?或者与 i 相关的对象是否以某种方式在 i 的邻居中分配?
-
|V|是 10^5 但矩阵不必取 |V|*|V|,如果使用邻接矩阵,矩阵将非常稀疏,带有 |E|最多非零单元格,因此如果您使用稀疏表示,您可能不会遇到问题。你知道你需要对矩阵进行对角化吗?
-
这个问题的根源是什么?
-
@rob mayoff 对象在我的邻居之间平均分配
标签: algorithm math graph matrix network-flow