web-dev-qa-db-ja.com

指数関数的な時間の複雑さの実際の例

私が話している話を解決するために(最悪の場合)指数関数的な時間の複雑さを必要とする問題の直感的で現実的な例を探しています。

ここに私が思いついた他の時間の複雑さの例があります(それらの多くは this SO question )から取られます):

  • O(1)-数値が奇数か偶数かを判別
  • O(log N) - finding a Word in the dictionary (using binary search)
  • O(N)-本を読む
  • O(N log N) - sorting a deck of playing cards (using merge sort)
  • O(N ^ 2)-トロリーのショッピングリストにすべてが揃っているかどうかの確認
  • O(infinity)-コインが頭に着くまでコインを投げます

何か案は?

31
del
  • O(10^N): trying to break a password by testing every possible combination (assuming numerical password of length N)

ps最後の例が複雑な理由O(infinity)?線形探索ですO(N) ..世界で70億人未満です。

24
Aziz

巡回セールスマン問題の強引な解はO(n!)であり、これはおよそO(N ^ N)です。

1
Brett Walker

力ずくで素朴なn-クイーン問題の解決策。

他の人に奪われないようにするには、n * nボードにn個のクイーンを配置する必要があります。

while there are untried configs, go to next solution and test it

すべてのクイーンが特定の行にあると仮定すると、クイーンが配置される可能性はn、他の(n-1)クイーンはnの可能性があります(重複する行はチェックされないため)。

したがって、O(n ^ n)の複雑さがあります。

1
Cydonia7

それらの合計が指定された値Xであるようなセット内の整数のサブセットを見つけることはどうでしょうか?

これは複雑であると思いますO(2 ^(n/2))

0
dmcshane784