大まかに言えば、時間計算量は、入力サイズが大きくなるにつれてアルゴリズムの操作数または実行時間がどのように増加するかを要約する方法です。
人生のほとんどのもののように、カクテルパーティーは私たちが理解するのを助けることができます。
オン)
パーティーに到着したら、みんなの手を振る必要があります(すべてのアイテムを操作します)。参加者の数がN
増えると、全員の手を振るのにかかる時間/作業が増えますO(N)
。
なぜO(N)
、そうではないのcN
ですか?
人と握手するのにかかる時間にはばらつきがあります。これを平均して、定数でキャプチャすることができc
ます。しかし、ここでの基本的な操作---全員と握手する---はO(N)
、何c
があったとしても、常にに比例します。カクテルパーティーに行くべきかどうかを議論するとき、私たちはしばしば、それらの会議がどのように見えるかについての詳細よりも、すべての人に会わなければならないという事実に関心があります。
O(N ^ 2)
カクテルパーティーの主催者は、誰もが他の人と出会う愚かなゲームをプレイすることを望んでいます。したがって、あなたはN-1
他の人に会う必要があり、次の人はすでにあなたに会っているので、彼らはN-2
人に会う必要があります。このシリーズの合計はですx^2/2+x/2
。参加者の数が増えるにつれて、x^2
用語は急速に大きくなるので、他のすべてを削除します。
O(N ^ 3)
あなたは他のみんなに会わなければなりません、そして、それぞれの会合の間に、あなたは部屋の他のみんなについて話さなければなりません。
O(1)
ホストは何かを発表したいと思っています。彼らはワイングラスを鳴らし、大声で話します。誰もがそれらを聞きます。参加者の数に関係なく、この操作には常に同じ時間がかかります。
O(log N)
ホストは全員をアルファベット順にテーブルに配置しました。ダンはどこ?あなたは彼がアダムとマンディの間のどこかにいなければならないと推論します(確かにマンディとザックの間ではありません!)。それを考えると、彼はジョージとマンディの間にいますか?いいえ。彼はアダムとフレッドの間、およびシンディとフレッドの間にいる必要があります。など...セットの半分を見てから、そのセットの半分を見ると、ダンを効率的に見つけることができます。最終的に、O(log_2 N)個の個体を調べます。
O(N log N)
上記のアルゴリズムを使用して、テーブルのどこに座るかを見つけることができます。一度に1人ずつ多数の人がテーブルに来て、全員がこれを行った場合、O(N log N)の時間がかかります。これは、アイテムのコレクションを比較する必要がある場合に、それらをソートするのにかかる時間であることがわかります。
ベスト/ワーストケース
あなたはパーティーに到着し、イニゴを見つける必要があります-それはどのくらいかかりますか?いつ到着するかによります。誰もが周りを練り歩き回っているなら、あなたは最悪のケースにぶつかります:それは時間がかかりO(N)
ます。ただし、全員がテーブルに座っている場合は、時間しかかかりませんO(log N)
。あるいは、ホストのワイングラスを叫ぶ力を活用することができ、それは時間しかかかりませんO(1)
。
ホストが利用できないと仮定すると、Inigo-findingアルゴリズムには、到着時のパーティの状態に応じて、のO(log N)
下限と上限があると言えます。O(N)
宇宙とコミュニケーション
同じアイデアを、アルゴリズムが空間または通信をどのように使用するかを理解するために適用できます。
クヌースは前者について「歌の複雑さ」というタイトルの素晴らしい論文を書いています。
定理2:複雑さO(1)の任意の長い曲が存在します。
証拠:(ケーシーとサンシャインバンドによる)。(15)で定義されたSkの曲を考えてみましょう。
V_k = 'That's the way,' U 'I like it, ' U
U = 'uh huh,' 'uh huh'
すべてのkについて。