タグ付けされた質問 「big-o」

Big-O表記は、漸近的な上限を表すために使用されます。アルゴリズムの関連する時間または空間の複雑さについて説明します。Big-O分析は、問題の難易度の大まかな簡略化された見積もりを提供します。


30
O(log n)は正確にはどういう意味ですか?
Big O Notationの実行時間と償却時間について学習しています。私はO(n)線形時間の概念を理解しています。つまり、入力のサイズがアルゴリズムの成長に比例して影響を及ぼします...たとえば、二次時間O(n 2)などでも同じです、階乗によって成長するO(n!)回の置換ジェネレータなど。 たとえば、次の関数はO(n)です。これは、アルゴリズムが入力nに比例して大きくなるためです。 f(int n) { int i; for (i = 0; i < n; ++i) printf("%d", i); } 同様に、ネストされたループがある場合、時間はO(n 2)になります。 しかし、正確にはO(log n)とは何ですか?たとえば、完全な二分木の高さがO(log n)であるとはどういう意味ですか? ログ:私は対数はという意味で、あるもの(そうでないかもしれない非常に詳細で)知っている10 100 = 2を、私は対数時間で機能を特定する方法を理解することはできません。




4
PHP関数のBig-Oのリスト
しばらくPHPを使用した後、組み込みのすべてのPHP関数が期待どおりに高速であるとは限りません。キャッシュされた素数の配列を使用して、数値が素数であるかどうかを検出する関数のこれら2つの可能な実装を検討してください。 //very slow for large $prime_array $prime_array = array( 2, 3, 5, 7, 11, 13, .... 104729, ... ); $result_array = array(); foreach( $prime_array => $number ) { $result_array[$number] = in_array( $number, $large_prime_array ); } //speed is much less dependent on size of $prime_array, and runs much faster. $prime_array => …


12
フィボナッチ数列の計算の複雑さ
Big-O表記は理解できますが、多くの関数で計算する方法がわかりません。特に、フィボナッチ数列の単純なバージョンの計算の複雑さを理解しようと試みてきました。 int Fibonacci(int n) { if (n <= 1) return n; else return Fibonacci(n - 1) + Fibonacci(n - 2); } フィボナッチ数列の計算の複雑さはどのくらいで、どのように計算されますか?


5
再帰関数の複雑さの決定(Big O表記)
明日はコンピュータサイエンス中間期に参加します。これらの再帰関数の複雑さを判断する手助けが必要です。私は単純なケースを解決する方法を知っていますが、私はまだこれらの難しいケースを解決する方法を学習しようとしています。これらは、私が理解できなかった問題のほんの一例にすぎません。どんな助けでも大いに感謝され、私の研究に大いに役立ちます、ありがとう! int recursiveFun1(int n) { if (n <= 0) return 1; else return 1 + recursiveFun1(n-1); } int recursiveFun2(int n) { if (n <= 0) return 1; else return 1 + recursiveFun2(n-5); } int recursiveFun3(int n) { if (n <= 0) return 1; else return 1 + recursiveFun3(n/5); } void …

17
オブジェクトをRのリストに一定の償却時間O(1)で追加しますか?
Rリストがある場合はmylist、次のobjようにアイテムを追加できます。 mylist[[length(mylist)+1]] <- obj しかし、確かにもっとコンパクトな方法があります。私がRの初心者だったとき、次のlappend()ように書いてみました。 lappend <- function(lst, obj) { lst[[length(lst)+1]] <- obj return(lst) } しかしもちろん、Rの名前による呼び出しのセマンティクスのために機能しません(lst呼び出し時に効果的にコピーされるため、への変更lstはのスコープ外には表示されませんlappend()。R関数で環境ハッキングを実行して、関数のスコープと呼び出し環境を変更しますが、単純な追加関数を書くのは大きなハンマーのようです。 誰かがこれを行うより美しい方法を提案できますか?ベクトルとリストの両方で機能する場合、ボーナスポイント。
245 r  performance  list  append  big-o 



9
log(n!)=Θ(n・log(n))ですか?
私はそれを示すために午前ログを(N!)=Θ(nは・ログ(N)) 。 上限をn nで示し、下限を(n / 2)(n / 2)で示すべきであるというヒントが与えられました。これは私にはそれほど直感的に思えません。なぜそうなのでしょうか?n nをn・log(n)に変換する方法(つまり、方程式の両辺をログに記録する方法)は確実にわかりますが、それは一種の逆の作業です。 この問題に取り組むための正しいアプローチは何でしょうか?再帰ツリーを描画する必要がありますか?これについて再帰的なことは何もないので、それはありそうなアプローチとは思えません。

6
大きなӨ表記は正確に何を表していますか?
ビッグO、ビッグオメガ、ビッグシータの表記法の違いに本当に戸惑っています。 私は大きなOが上限で、大きなOmegaが下限であることを理解していますが、大きなӨ(シータ)は正確には何を表していますか? 私はそれがタイトなバウンドを意味することを読みましたが、それはどういう意味ですか

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.