2017-10-24 3 views
-1

次のuseridは私は、フォーム のuserIdの巨大なデータセットを持って

1 - > 2(IE)が1は、以下の2

1 - > 3

3 - > 5

2 - > 3

アイデアは、私は二人が目の例では を持っているどのように多くの一般的な信者を知りたいです上記の場合、ユーザ1とユーザ2の両方がユーザ3に従うので、ユーザ1とユーザ2の間の相互フォロワの数は1です。

巨大なデータセットに対してこれを実装する最も良い方法は何ですか?ユーザーIDで簡単に収集してから、結合を実行しても機能しません。私はいくつかのグラフ手法を使うことを考えています。

+0

これはインタビューの質問であれば、おそらく自分で終了してください。 :-) –

答えて

0

たとえば、隣接関係リストとして表されたグラフがあります。そして、このグラフの操作はget a list of the neighbors of a given vertexです。頂点P1は一人称、頂点P2 - 二人目です。今、あなたは次に何をすることができます(高速の交差点のハッシュセットを使用する必要があります):

p1_follows = HashSet(neighbors(P1)) 
p2_follows = neighbors(P2); 
mutual_followers = p1_follows.intersect(p2_follows) 

あなたが使用GraphFrameを使用する場合は、あなたがMotif findingに行くことができます - ここでの例Motif Finding: Counting Mutual Friendsです。

関連する問題