これは私が最近インターネットで見つけたインタビューの質問です:
Facebookで2人の分離度をどのように見つけますか?さまざまなアイデア、アルゴリズム、およびトレードオフについて話し合います。(分離度の定義:http://en.wikipedia.org/wiki/Six_degrees_of_separation)
これが私がそれについて考えることです:
私が考えることができる候補アルゴリズムは、幅優先探索(BFS)、深さ優先探索(DFS)、深さ制限探索(DLS)、反復深化探索(IDS)です。
まず、DFSを考慮する必要があります。2人が接続している場合(つまり、分離度= 1)でも、アルゴリズムが間違ったパスを長時間検索し続ける可能性があります。
BFSは、最小の分離度を見つけることが保証されています(グラフは重み付けされていないため)。最大分岐係数がbであり、2人の対象者間の実際の分離度がdであると仮定すると、時間計算量と空間計算量の両方がO(b ^ d)になります。
可能な最大の分離度は不明であるため(6より高くなりすぎないようにする必要があります)、DLSを使用することはお勧めできません。ただし、IDSはBFSよりも優れたアイデアのようです。時間計算量もO(b ^ d)です(ただし、中間ノードに繰り返しアクセスするため、実際の時間はBFSよりも少し高くなります)が、空間計算量はO( bd)、これはO(b ^ d)よりもはるかに優れています。
結局のところ、私はIDSを選択します。それは面接で受け入れられる答えですか?上記の推論で間違いを犯しましたか?または、私が見逃したより良い解決策はありますか?
前もって感謝します。