4

私は次
の問題に直面しています。たとえば、 uがソーシャルネットワークユーザーであり、友人のリストF(u)があるとします。パーティションは関数F->Gであり、Gは高校、大学、職場などのグループのセットです。F
を分割するアルゴリズムを考え出す必要があります:

  • 入力はFであり、Fのすべてのf ( uの各友達の友達のリスト)のF (f)でもあります。
  • 実行中、アルゴリズムはuの質問をすることができます(たとえば、「特定のユーザーvに最適なグループは何ですか?」)。
  • 質問の量は最小限に抑える必要があります(最小限の数は実際には明確な数ではありませんが、友人の数の5%はほぼ正しいように思われます)。

明らかに、結果のパーティションは最適ではありませんが、後の改良の開始点として受け入れられるはずです。

どんな考えでも大歓迎です

編集:いいえ、宿題ではありません。宿題には、より明確に定義された要件と目標機能があると思います。とにかくいいえ、これは実際に私が直面している現実の問題です。

また、私はそれを少し単純化したかもしれませんが、実際にはユーザーは多くのグループの一部である可能性があります(したがって、F-> P(G)のようになります。ここで、P(G)はGの場合のパワーグループです)、より良いアルゴリズムそれを行うことができるでしょう。

4

1 に答える 1

3

基本的な考え方は、どの友達がお互いに友達であるかに基づいて、それらをグループに分割しようとすることです.

たとえば、あなたが Bob で、Sally と Larry を知っていて、Sally と Larry がお互いを知っている場合、彼らはおそらく同じ "グループ" に属しています。そのグループが何なのかはまだわかりませんが、お互いをよく知っているので、職場や大学など、同じ場所で出会った可能性があります。

ノードが人でエッジが接続である有向グラフとしてこれを実装できます。次に、それらのノードがどれだけうまく接続されているかに基づいて、それらのノードをグループ化する必要があります。

グループを確立したら、グループと潜在的にあいまいなノードからサンプルをクエリして、グループが実際に何であるかを把握するだけです。

宿題のように聞こえるので、他に何も与えませんが、それで始められるはずです。

于 2009-11-04T22:07:10.723 に答える