タグ付けされた質問 「complexity-theory」

計算の複雑さの理論は、理論的なコンピューターサイエンスと数学における計算理論の分岐であり、固有の難易度に従って計算問題を分類することに焦点を当てています。プログラミングで特に一般的なのは、時間または空間の*償却分析*です。



9
アルゴリズムの時間の複雑さを見つける方法
質問 アルゴリズムの時間の複雑さを見つける方法は? SOに質問を投稿する前に何をしましたか? 私はこれ、これと他の多くのリンクを通過しました しかし、時間の複雑さを計算する方法についての明確でわかりやすい説明を見つけることができた場所はありませんでした。 私は何を知っていますか? 以下のコードのように単純なコードを言ってください: char h = 'y'; // This will be executed 1 time int abc = 0; // This will be executed 1 time 以下のようなループがあるとします。 for (int i = 0; i < N; i++) { Console.Write('Hello World !'); } int i = 0; これは一度だけ実行されます。時間は実際にi=0は宣言ではなく計算されます。 i …


17
ヒープの構築はどのようにしてO(n)時間の複雑さになりますか?
誰かがどのようにしてヒープを構築することがO(n)複雑になるかを説明するのを手伝ってくれる? アイテムをヒープに挿入することはO(log n)であり、挿入はn / 2回繰り返されます(残りはリーフであり、ヒーププロパティに違反することはできません)。つまり、これは複雑さがであることを意味しO(n log n)ます。 つまり、「ヒープ化」する各アイテムについて、これまでのヒープの各レベル(log nレベル)に対して1回フィルターをかける必要がある可能性があります。 何が欠けていますか?



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 …

6
「P = NP」とは何ですか?なぜそんなに有名な質問なのですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? Stack Overflowのトピックとなるように質問を更新します。 7年前休業。 この質問を改善する P = NPがコンピュータサイエンス全体でおそらく最も有名であるかどうかの問題。どういう意味ですか?そして、なぜそれがそんなに面白いのですか? ああ、そして追加の信用のために、声明の真実または虚偽の証拠を投稿してください。:)

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

30
バイナリツリーで2つのノードの最も低い共通祖先を見つける方法は?
ここでのバイナリツリーは、必ずしもバイナリ検索ツリーであるとは限りません。 構造は次のように解釈できます- struct node { int data; struct node *left; struct node *right; }; 友人と一緒に解決できる最大の解決策は、このようなものでした- この二分木を 考えてみましょう: 順序トラバーサルの利回り-8、4、9、2、5、1、6、3、7 そして、ポストオーダートラバーサルイールド-8、9、4、5、2、6、7、3、1 したがって、たとえば、ノード8と5の共通の祖先を見つけたい場合は、順序木走査で8と5の間のすべてのノードのリストを作成します。この場合、[4、9 、2]。次に、このリストのどのノードがポストオーダートラバーサルの最後に表示されるか(2)を確認します。したがって、8と5の共通の祖先は2です。 このアルゴリズムの複雑さは、O(n)(インオーダー/ポストオーダートラバーサルではO(n)、残りのステップは配列の単純な反復にすぎないため、残りのステップもO(n)である)と私は信じています。しかし、これが間違っている可能性が高いです。:-) しかし、これは非常に大雑把なアプローチであり、いくつかのケースで失敗するかどうかはわかりません。この問題に対する他の(おそらくより最適な)解決策はありますか?

5
2 ^ nとn * 2 ^ nは同じ時間の複雑さですか?
時間の複雑さについて私が見つけたリソースは、特に非多項式の例で、時間の複雑さの方程式の項を無視してもよいかについては不明です。 n 2 + n + 1の形式が与えられた場合、最後の2つの項は重要ではないことは明らかです。 具体的には、2つの分類2 nとn *(2 n)が与えられた場合、2 番目の分類は最初の分類と同じ順序ですか?追加のn乗算は重要ですか?通常、リソースは、x nが指数関数であり、はるかに速く成長するというだけです...次に進みます。 2 nがnを大幅に上回らないので、なぜそうならないのか理解できますが、2つを加算していないため、2つの方程式を比較するときに非常に重要です。実際、それらの差は常にnの因数となります。控えめに言っても重要なようです。

6
HashMap get / putの複雑さ
HashMap get/put操作はO(1)であると言うことに慣れています。ただし、ハッシュの実装によって異なります。デフォルトのオブジェクトハッシュは、実際にはJVMヒープの内部アドレスです。get/putO(1)であると主張するだけで十分でしょうか? 利用可能なメモリは別の問題です。javadocsからわかるHashMap load factorように、0.75 である必要があります。JVMに十分なメモリがなくload factor、制限を超えた場合はどうなりますか? したがって、O(1)は保証されていないようです。それは意味がありますか、それとも何か不足していますか?

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