ボゴソートの平均的なケースの実行時間について、誰かが完全に説明してもらえますか?
アルゴリズムの擬似コード:
while not isInOrder(deck):
shuffle(deck)
順列がありn!
、そのうちの1つだけが正しい(別個の要素を想定)。O(n!)
したがって、手を振るという意味では、約反復後に正しい答えを選択することが期待されます。* ただし、各シャッフル/チェック操作はそれ自体O(n)
です。したがって、O(n.n!)
全体的に。
操作の平均試行回数は、各試行が成功する確率に反比例します。
要素n!
をシャッフルする方法があります。n
すべての要素が異なる場合、並べ替えられた出力を生成する方法は 1 つだけです。したがって、ソート シャッフルの確率は で1/n!
あり、試行の平均回数は ですn!
。
各シャッフルにはO(n)
時間がかかります (Fisher-Yates シャッフルまたは同等に合理的なものを想定)。
したがって、時間計算量はO(n!*n)
です。