ビデオ: The Third Industrial Revolution: A Radical New Sharing Economy 2024
ダミーのチートシートのアルゴリズムの一部
アルゴリズムは複雑であることは既に知っています。しかし、複雑なものほど、実行に時間がかかりますので、アルゴリズムの複雑さを知る必要があります。次の表は、実行時間順に(最速から最速に)複雑さのさまざまなレベルを理解するのに役立ちます。
複雑さ | 説明 |
定数複雑度O(1) | 入力の量にかかわらず、実行時間は変わらない。各入力には1単位の実行時間が必要です。対数の複雑さO(log n) |
操作の数は入力よりも遅くなり、小さな入力ではアルゴリズムの効率が悪くなり、大きいものでは効率が高くなります。このクラスの典型的なアルゴリズムはバイナリ検索です。 | 線形複雑さO(n) |
入力は1:1の比率で増加します。典型的なアルゴリズムは反復です。入力を1回スキャンしてその各要素に操作を適用すると繰り返します。線形複雑さO(n log n)999は、対数と線形の複雑さとの混合である。 Mergesortsort、Heapsort、Quicksortなど、データの順序付けに使用されるいくつかのスマートなアルゴリズムの典型です。二次的複雑性O(n 999 2 999)999は、入力数の2乗として増加する。別の反復(コンピュータサイエンスのネストされた反復と呼ばれる)の中にある反復を持つとき、あなたは二次的な複雑さを持ちます。たとえば、名前のリストがあり、最も類似したものを見つけるために、それぞれの名前を他のすべての名前と比較します。効率の悪い発注アルゴリズムの中には、バブルソート、選択ソート、挿入ソートという複雑さがあります。このレベルの複雑さは、アルゴリズムがソリューションに達する前に数時間または数日間実行される可能性があることを意味します。立方体の複雑さO(n | 399) |
複数のネストされた反復を持つため、操作は二次的複雑さよりもさらに速くなります。アルゴリズムがこのような複雑さを持ち、適度な量のデータ(100,000要素)を処理する必要がある場合、アルゴリズムは何年も実行される可能性があります。入力の威力である操作の数が多い場合は、アルゴリズムを多項式時間で実行することが一般的です。指数関数的複雑度O(2 999 n 999)このアルゴリズムは、新たに追加されたすべての要素に対して2倍の前の演算を行う。アルゴリズムにこのような複雑さがある場合、小さな問題でさえも永遠にかかることがあります。網羅的な検索を行う多くのアルゴリズムは指数関数的に複雑です。しかし、この複雑さの古典的な例は、フィボナッチ数の計算です。このアルゴリズムは、要素間の可能な組み合わせの数が多いため、複雑さの実質的な悪夢を提示する。ちょっと想像してみましょう:あなたの入力が100個のオブジェクトで、コンピュータの操作が10 999 - 6 999秒(今日のすべてのコンピュータで妥当な速度)であれば、約10 140 999年(宇宙の年齢は10 999 14 999年と推定されるため、不可能な時間です)。有名な要因の複雑さの問題は、セールスマンが多くの都市を訪れて出発都市に戻るための最短ルートを見つけなければならない、旅行セールスマンの問題です。 |
|