[解決済み] 定数時間や対数時間よりも、nやnlog(n)の方が良いのでしょうか?
質問内容
CourseraのPrincetonのチュートリアルで、講師がよく遭遇するorder-of-growth関数について説明しています。彼は、線形および線形ithmicの実行時間は我々が目指すものであり、その理由は入力サイズが大きくなると実行時間も大きくなるからだと言っています。私は以前、彼が効率的なアルゴリズムにとって線形成長順序は不満足であると言っているのを聞いたことがあるので、ここが彼の間違いであると思います。
また、講演中に、実行時間の違いをプロットしたグラフを見せましたが、実行時間が一定で対数の方が効率が良さそうでした。これは間違いなのか、それとも真実なのか?
どのように解決するのか?
あなたは、これらの発言がなされたはずの、より広い文脈を見逃しているのです。問題の種類によって要求されるものが異なり、また、多くの場合、どの程度の作業が必要かという理論的な下限値さえも存在します。 絶対に必要 どんな手段であれ、それを解決するために。
単純なコレクションのすべての要素をソートしたりスキャンしたりするような操作では、出力が入力のすべての要素に依存するので、それらの操作のためのコレクションの要素数のハードな下界を作ることができます。[1] したがって、O(n)またはO(n*log(n))が最良となる。
他の種類の操作、例えばハッシュテーブルやリンクリストの1つの要素にアクセスしたり、ソートされた集合の中を探したりする場合、アルゴリズムは入力をすべて調べる必要はありません。このような場合、O(n)演算は恐ろしく遅くなる。
[1] また、情報理論的な議論から、比較によるソートも n*log(n) の下界を持つことに注目する人もいるでしょう。ある種の入力に対して、比較によらないソートアルゴリズムがあり、これを打ち負かすことができます。
関連
-
[解決済み】なぜO(n)はO( nlog(n) )よりも優れているのでしょうか?)
-
[解決済み] 簡単:T(n)=T(n-1)+nを反復法で解く。
-
[解決済み] あるアルゴリズムの計算量がO(log log n)になる原因は何でしょうか?
-
[解決済み] O(log n)とは具体的にどのような意味ですか?
-
[解決済み] ヒープの構築はどうして時間計算量O(n)になるのですか?
-
[解決済み] 償却期間一定
-
[解決済み] なぜクイックソートはマージソートより優れているのですか?
-
[解決済み】アルゴリズムの時間複雑性を求めるには?
-
[解決済み】big-O時間複雑度の高いアルゴリズムが低いアルゴリズムより好ましいと思うケースはありますか?
-
[解決済み】固定長 6 int 配列の最速ソート
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Dijkstraのアルゴリズムが負の重みのエッジに対して機能しないのはなぜですか?
-
[解決済み] ポイントルック アット ポイント
-
[解決済み] クイックソートとヒープソートの比較
-
[解決済み] NPとco-NPの違いは何ですか?
-
[解決済み] DFS-Forest Componentとは?
-
[解決済み] CLRSの相対的漸近成長に関する問題(表)の解き方について教えてください。
-
[解決済み] アルゴリズムの教科書では、ソートされた配列について「増加」ではなく「非減少」を使っているのはなぜですか?
-
[解決済み] 与えられた数列の中に現れない最小の正の整数を求めよ。
-
[解決済み] あるアルゴリズムの計算量がO(log log n)になる原因は何でしょうか?
-
[解決済み] オブジェクトの配列で属性の最大値を求める