私はいくつかのことをいじっていて、 Kevin Baconの数を理解しようとするアイデアを思いつきました。この目的のためにソーシャルネットワークと見なすことができるサイトのデータがあります。Facebook だとしましょう (議論を簡単にするため)。私には人々がいて、彼らの友達のリストを持っているので、彼らの間のつながりがあります。ある人から別の人への距離 (基本的には、ケビン ベーコン数) を計算するにはどうすればよいですか?
私の最善のアイデアは、深さ制限のある双方向検索です(計算の複雑さを制限し、グラフで接続できない人々の問題を回避するため)が、これはかなり力ずくであることに気付きました。
小さなサブグラフ (Facebook のグループに相当するようなもの) を作成し、それらの間の最短距離を (おそらく前もって) 計算してから、THOSE を使用してリンクを見つけようとする方がよいでしょうか? これには事前計算が必要ですが、より少ないノードを検索できる可能性があります (ノードは個人ではなくグループである可能性があり、グラフがはるかに小さくなります)。ただし、これは依然として双方向検索になります。
また、特定の目的地の個人に接続する可能性が最も高い可能性があるため、最初に「人気のある」人々のノードを検索して、個人が接続している人の数を事前に計算することもできます。これは、可能な最短経路に対する速度のトレードオフになることを認識しています。他のケースで使用する予定の幅優先検索の代わりに、深さ優先検索も使用したいと思います。
誰かがこれを行うためのより簡単で高速な方法を考えられますか? 2 人の間の最短の長さを見つけられるようにしたいので、終点が常に同じであるほど簡単ではありません (Kevin Bacon の問題など)。
200人のチェーンを取得できるなどの問題があることは認識していますが、検索する深さに制限があるため、それは解決できます。