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

入力サイズで表された問題を解決するために必要な時間リソース(アトミック操作またはマシンステップの数)。アルゴリズム分析に関する質問の場合は、代わりに[runtime-analysis]タグを使用してください。計算が*常に*終了するかどうかに関する質問の場合は、代わりに[computability]タグを使用してください。時間の複雑性は、おそらく複雑性理論の最も重要なサブトピックです。

2
が、ような2つの関数、
質問のタイトルは、私が探しているものを表しています。これは、非決定論的な時間階層定理の前提条件をよりよく理解するのに役立ちます たとえば、Arora-Barakの本では、およびを使用して定理を説明していますが、もわかります!そのため、が適切なサブセットになるように指定することで、「余分な」時間が保証されることをよりよく理解しようとしています、、ない ... g(n)=ng(n)=ng(n) = nG(n)=n1.5G(n)=n1.5G(n) = n^{1.5}n∈o(n1.5)n∈o(n1.5)n \in o(n^{1.5})NTIME(g(n))NTIME(g(n))\text{NTIME}(g(n))NTIME(G(n))NTIME(G(n))\text{NTIME}(G(n))g(n+1)=o(G(n))g(n+1)=o(G(n))g(n + 1) = o(G(n)) g(n)=o(G(n))g(n)=o(G(n))g(n) = o(G(n))


4
この関数の時間の複雑さはどれくらいですか?
これは私の講義ノートの例です。この関数は時間の複雑さを伴いますかO (n ログn )O(nlog⁡n)O(n \log n)?。最悪のケースは機能がelse分岐に入るので、時間の複雑性が2つの入れ子になったループログんlog⁡n\log n そして んnn、そうです O (n ログn )O(nlog⁡n)O(n \log n)。私は正しいですか? int j = 3; int k = j * n / 345; if(k > 100){ System.out.println("k: " + k); }else{ for(int i=1; i<n; i*=2){ for(int j=0; j<i; j++){ k++; } } }


2
文字列のセットに近い文字列はいくつありますか?
この質問は、高速なスペルチェッカーを構築するための効率的なデータ構造によって促されました。 2つの文字列が与えられた u,vu,vu,v、私たちは彼らがそうだと言います kkk-それらのダメラウ–レヴェンシュタイン距離 ¹が小さい場合、つまりLD(u,v)≥kLD⁡(u,v)≥k\operatorname{LD}(u,v) \geq k 固定の k∈Nk∈Nk \in \mathbb{N}。非公式に、LD(u,v)LD⁡(u,v)\operatorname{LD}(u,v) 変換に必要な削除、挿入、置換、および(隣接)スワップ操作の最小数です uuu に vvv。それはで計算することができますΘ(|u|⋅|v|)Θ(|u|⋅|v|)\Theta(|u|\cdot|v|)動的プログラミングによる。ご了承くださいLDLD\operatorname{LD}はメトリックであり、特に対称的です。 関心のある問題は次のとおりです。 セットを考える SSS の nnn ひも ΣΣ\Sigma 長さが最大 mmm、のカーディナリティは何ですか Sk:={w∈Σ∗∣∃v∈S. LD(v,w)≤k}Sk:={w∈Σ∗∣∃v∈S. LD⁡(v,w)≤k}\qquad \displaystyle S_k := \{ w \in \Sigma^* \mid \exists v \in S.\ \operatorname{LD}(v,w) \leq k \}? 同じ長さの2つの弦でも数が異なるため kkk-closestrings²一般的な式/アプローチは見つけるのが難しい(不可能?)場合があります。したがって、所定の数ごとに明示的に数を計算する必要があるかもしれませんSSS、主な質問に私たちを導きます: セットのカーディナリティを見つけることの(時間)複雑さは何ですか {w}k{w}k\{w\}_k (任意) w∈Σ∗w∈Σ∗w \in …

2
行列乗算プログラムの入れ子ループの不変式
Hoareロジックを使用して2つの行列を乗算するためのプログラムの正確性を証明することについて、卒業論文を作成しています。これを行うには、このプログラムの入れ子ループの不変式を生成する必要があります。 for i = 1:n for j = 1:n for k = 1:n C(i,j) = A(i,k)*B(k,j) + C(i,j); end end end 私は最初に内部ループの不変式を見つけようとしましたが、今までは本当のものを見つけることができません。上記のプログラムの不変式を見つけるのを手伝ってくれる人はいますか?
7 algorithms  loop-invariants  correctness-proof  formal-languages  regular-languages  pumping-lemma  logic  logic  programming-languages  lambda-calculus  term-rewriting  operational-semantics  complexity-theory  time-complexity  computability  proof-techniques  reductions  digital-preservation  distributed-systems  storage  algorithms  dynamic-programming  check-my-algorithm  reference-request  cryptography  quantum-computing  formal-languages  regular-languages  context-free  formal-grammars  algorithms  graphs  network-flow  algorithms  data-structures  randomized-algorithms  lists  computability  proof-techniques  undecidability  terminology  distributed-systems  parallel-computing  artificial-intelligence  heuristics  search-problem  algorithms  computational-geometry  algorithm-analysis  asymptotics  recurrence-relation  mathematical-analysis  master-theorem  algorithms  algorithm-analysis  runtime-analysis  computability  reductions  turing-machines  formal-languages  context-free 

2
キャスタビリティとコンベクシティの関係
凸型ポリゴンとキャスタブルオブジェクトの間に何か関係があるのでしょうか。オブジェクトが凸多角形であることがわかっている場合、またはその逆であることがわかっている場合、オブジェクトのキャスト可能性についてどのように言えますか。 知っておくべき基本的なことをいくつか集めましょう。 型から取り外し可能な場合、オブジェクトはキャスタブルです。 多面体Pは、方向に平行移動することでモールドから削除できます d⃗ d→\vec{d} もしそうなら d⃗ d→\vec{d} 少なくとも角度を作る 90∘90∘90^{\circ} Pのすべての通常のファセットの外向きの法線。 任意のオブジェクトの場合、キャスタビリティーのテストには時間がかかります O(n2)O(n2)O(n^2)。私の意見では、凸状ポリゴンの場合、線形時間に改善できる場合、すべての新しいトップファセットについて、ベクトルがd⃗ d→\vec{d} 少なくとも角度を作る 90∘90∘90^{\circ} すべての外向き法線ではなく、Pの2つの隣接する通常のファセットのみ これが本当なら、少なくとも凸多角形の場合のキャスタビリティのテストで改善があります。 他に、キャスタビリティと凸性について述べることができます。キャスタビリティが凸性について何かを教えてくれるなら、特に興味深いことです。

3
最大のものを見つけることの複雑さ
以下は、私がそうであると信じるものでこれを行うための私のアルゴリズムです O(n)O(n)O(n)時間、そしてそれに対する私の証拠。私の教授はそれが実行されることに同意しませんO(n)O(n)O(n) 代わりにそれが実行されると考えています Ω(n2)Ω(n2)\Omega(n^2)時間。証明自体またはスタイルに関するコメント(つまり、私のアイデアは明確かもしれませんが、プレゼンテーションは明確ではありません)。 元の質問: 与えられた nnn 数、最大を見つける m≤nm≤nm \leq n そのうちに o(nlogn)o(nlog⁡n)o(n \log n)。あなたは他に何も想定しないmmm。 私の答え: 最初に並べ替え mmm配列の要素。これにはO(1)O(1)O(1) 時間、これは完全に依存しているため mmmではなく nnn。 それらをリンクされたリストに格納します(ソートされた順序を維持します)。これもかかりますO(1)O(1)O(1) 時間と同じ理由で。 配列内の他のすべての要素について、リンクリストの最小要素より大きいかどうかをテストします。これにはO(n)O(n)O(n) 時間として nnn 比較を行う必要があります。 数値が実際に大きい場合は、リンクされたリストの最初の要素(最小のもの)を削除し、リストを並べ替えられた順序で保持する場所に新しい数値を挿入します。これにはO(1)O(1)O(1) それは定数(mmm)上記のリストは拡大しません。 したがって、アルゴリズムの全体的な複雑さは O(n)O(n)O(n)。 リンクされたリストとは対照的に赤黒ツリーを使用すると、定数の点でより効率的であることを知っています(定数の上限が O(m⋅log2(m))O(m⋅log2⁡(m))O(m\cdot \log_2(m)) とは対照的に mmm (比較を容易にするために)ツリーの最下部の要素へのポインタを保持するという問題は非常に実行可能ですが、そのときは私には起こりませんでした。 私の証拠は何ですか?それを提示するより標準的な方法はありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.