1

FacebookでXとYの2人がいる場合、このように定義された数を(効率的かどうかにかかわらず)見つける方法はありますか?XとYが友達の場合、1。XにYの友達の友達がいる場合、2。Xが友達Yの友達の友達の場合、3。など。

明確化:
これを行うプログラムは、Facebook上の任意の2人の名前XとYを入力として受け取ります。次に、彼らがお互いの友達リストに載っている場合、プログラムは1を出力します。
そうでない場合、それぞれに共通の友達がいる場合は、2を出力します。
友達ではなく、共通の友達がいないが、それぞれに友達である友達がいる場合は、出力3。
そうでない場合、Xにはフレンドxがあり、Yにはフレンドyがあり、xとyには共通のフレンドがある場合、出力4など。

また、友達同士のつながりがない場合は、0を出力します。

4

1 に答える 1

5

あなたは分離度と呼ばれるものを探しています。

それぞれのケースを埋める唯一の方法は、友達の友達の友達をできるだけ多くリストすることです...基本的にアプリケーションがFacebookグラフをカバーできる限り近くにあります。次に、Facebookユーザーをグラフ上のノードとして表し、AからBへのパスを計算します。したがって、Facebookからのすべてのデータがない限り、完全に機能するアプリケーションを作成することは実際には不可能です。あなたがそうしたと仮定すると、あなたはダイクストラのアルゴリズムを使うことができます。

骨抜きバージョンの場合、友達だけをチェックし、それからグラフを作成して、1より大きい度を見つけることができます。

次のようなクエリが必要になります

  • me/friendsグラフの作成を初期化するため

  • SELECT uid1, uid2 FROM friend WHERE uid1 = ' + uid1 + ' AND uid2 IN (SELECT uid2 FROM friend WHERE uid1=me())ネットワーク内で接続されている友達を見つけるため

現在のユーザーからユーザーへのパスを表示するためにこれが必要な場合は、JSSDKhttp://www.fbrell.com/saved/12bd86306fe69a2af6134fe2a9e645e3内に非表示のプラグインがあります

<fb:degrees href="http://facebook.com/zuck">

分離度

于 2012-11-11T22:07:03.547 に答える