分析和理解这个算法

时间:2016-02-10 13:34:07

标签: algorithm mpi social-networking bigdata

我需要使用来自here的数据来实现找到here(第5页)的算法(选择facebook数据,如果您想深入挖掘,则只有KB大小)。算法是:

1: Ti ← 0 //Ti is pi’s count of triangles
2: for v ∈ Vi do
3:   for u ∈ Nv do
4:     if u ∈ Vi then
5:       S ← Nv ∩ Nu
6:       Ti ← Ti + |S| 
7:     else if u ∈ Vj then
8:       Send <data,Nv> to pj if not sent already
9:
10:  Check for incoming messages <t,X>:
11:  if t = data then
12:    Ti ← Ti+ SURROGATECOUNT(X, i)
13:  else
14:    Increment completion counter
15:
16: Broadcast <notifier,X> 
17: while completion counter < P-1 do
18:   Check for incoming messages <t,X>:
19:   if t = data then
20:     Ti ← Ti+ SURROGATECOUNT(X, i)
21:   else
22:     Increment completion counter
23:
24: MPIBARRIER
25: Find Sum T ← Pi Ti using MPIREDUCE
26: return T

据我所知,我需要一个二维数组。我需要查询if语句中的每个元素,并在Ti变量处执行+1。

第一个问题,S ← Nv ∩ Nu我该如何分配此变量S? 维基百科说:A ∩ B means the set that contains all those elements that A and B have in common.

第二个问题,如果您查看数据,我是否需要所有数据?我想我只需要.edges文件。

1 个答案:

答案 0 :(得分:1)

S ← Nv ∩ Nu
Ti ← Ti + |S|

您似乎只需要NvNu中的元素数量。所以只需按这个数字计算增加Ti。该算法似乎没有将S集用于其他任何内容。

看起来你不需要关于连接的大量信息,所以只需.edges就足够了。