大まかに言えば、時間の複雑さは、入力サイズが増加するにつれて、アルゴリズムの操作またはランタイムの数がどのように増加するかを要約する方法です。
人生のほとんどのものと同様に、カクテルパーティーは私たちが理解するのに役立ちます。
オン)
パーティーに到着したら、全員の手を振る(すべてのアイテムに対して操作を行う)必要があります。参加者の数が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(ログN)
ホストは全員をアルファベット順にテーブルに配置しました。ダンはどこですか あなたは彼がアダムとマンディの間にいるはずだと考えています(確かにマンディとザックの間にではありません!)。それを考えると、彼はジョージとマンディの間にいますか?いいえ、彼はアダムとフレッドの間、そしてシンディとフレッドの間でなければなりません。など...セットの半分を見て、次にそのセットの半分を見ると、効率的にDanを見つけることができます。最終的に、O(log_2 N)を調べます個人。
O(NログN)
上記のアルゴリズムを使用して、テーブルのどこに座るかを見つけることができます。多数の人が一度に1人ずつテーブルに来て、全員がこれを行った場合、O(N log N)がかかります。時間かかります。これは、比較する必要があるアイテムのコレクションを並べ替えるのにかかる時間です。
ベスト/ワーストケース
あなたはパーティーに到着し、イニゴを見つける必要があります-どのくらい時間がかかりますか?いつ到着するかによります。誰もがあなたの周りを粉砕している場合、あなたは最悪のケースに遭遇しました:それにはO(N)
時間がかかります。しかし、全員がテーブルに座っている場合、それはO(log N)
時間がかかります。または、ホストのワイングラスの叫びのパワーを活用でき、O(1)
時間はかかりません。
ホストが利用できないと仮定すると、到着時のパーティーの状態に応じて、Inigo検出アルゴリズムには下限と上限がO(log N)
ありO(N)
ます。
宇宙とコミュニケーション
アルゴリズムが空間や通信をどのように使用するかを理解するために、同じ考え方を適用できます。
Knuthは以前の"The Complexity of Songs"というタイトルの素晴らしい論文を書いています。
定理2:複雑なO(1)の任意の長さの曲が存在します。
証拠:(ケーシーとサンシャインバンドのため)。(15)で定義されている曲Skを考えますが、
V_k = 'That's the way,' U 'I like it, ' U
U = 'uh huh,' 'uh huh'
すべてのk