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

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

1
ハノイの塔の複雑さ
私はハノイの塔の複雑さについて次の疑問にぶつかりました。 NPにありますか? 回答の試行:ペギー(証明者)が問題を解決し、ビクター(検証者)に提出したとします。ビクターはソリューションの最終状態が(線形時間で)正しいことを簡単に確認できますが、ペギーの各移動を確認して、彼女が違法な移動を行わなかったことを確認する以外に選択肢はありません。Peggyは最低2 ^ | disks |を作成する必要があるため -1移動(証明可能)、ビクターも追随する必要があります。したがって、Victorには多項式時間検証(NPの定義)がないため、NPに含めることはできません。 PSPACEにありますか?そのように思えますが、私は上記の推論を拡張する方法を考えることができません。 PSPACE完全ですか?そうではないようですが、私にはあいまいな考えしかありません。ToHが特定のインスタンスである自動計画は、PSPACE完全です。PlanningにはToHよりもはるかに難しいインスタンスがあると思います。 更新:入力=、ディスクの数。出力=各ステップでのディスク構成。これを更新した後、私はこの入力/出力形式が意思決定の問題に適合しないことに気付きました。この種の問題に対するNP、PSPACEなどの概念を取り込むための正しい形式化についてはわかりません。nnn アップデート#2:KavehとJeffのコメントの後、私は問題をより正確にすることを余儀なくされました。 入力intのペアとするディスクの数です。ディスクが行った一連の移動が、最初の移動から(disk-number、from-peg、to-peg)(disk-number、from-peg、to-peg)...の形式で書き留められている場合最後に、バイナリでエンコードされ、番目のビットを出力します。(n,i)(n,i)(n,i)nnniii エンコードについてより具体的にする必要があるかどうかを教えてください。この場合、Kavehのコメントが当てはまると思いますか?

3
逆アッカーマンよりも成長が遅い関数は、実行時の境界に表示されますか?
一部の複雑なアルゴリズム(union-find)には、漸近時間の複雑さに現れるほぼ一定の逆アッカーマン関数があり、ほぼ一定の逆アッカーマン項が無視される場合、最悪の場合の最適時間です。 最もよく知られている最悪の場合の時間を与える、逆アッカーマンよりも基本的に遅くなる関数(多項式または指数などの変換の下でアッカーマンと等価ではない関数の逆関数)を含む実行時間を持つ既知のアルゴリズムの例はありますか根本的な問題を解決するための複雑さ?

3
離散対数を見つけるのはどれくらい難しいですか?
bbba c Nab=cmodNab=cmodNa^b=c \bmod NaaacccNNN これはどの複雑なグループ(例:古典的なコンピューターや量子コンピューター)で、どのタスク(アルゴリズム)がこのタスクを達成するのに最適なのでしょうか。 上記のウィキペディアのリンクは、実際に非常に具体的なランタイムを提供していません。私は、そのようなものを見つけるための最もよく知られている方法と同じようなものを望んでいます。

1
疎グラフの周囲を見つけるための最適なアルゴリズム?
疎な無向グラフの周囲をどのように見つけるか疑問に思います。スパースとは。最適とは、時間の複雑さが最も低いことを意味します。|E|=O(|V|)|E|=O(|V|)|E|=O(|V|) 無向グラフのためのTarjanのアルゴリズムの変更について考えましたが、良い結果が見つかりませんでした。実際、で2連結成分を見つけることができれば、最初の部分から達成できる何らかの誘導により、胴回りを見つけることができると考えました。ただし、間違った方向に進んでいる可能性があります。Θ (| V | 2)(つまりo (| V | 2))よりも漸近的に優れたアルゴリズムを歓迎します。O(|V|)O(|V|)O(|V|)Θ(|V|2)Θ(|V|2)\Theta(|V|^2)o(|V|2)o(|V|2)o(|V|^2)

7
時間複雑度アルゴリズムの特徴は何ですか?
アルゴリズムの時間の複雑さを慎重に調べることで、簡単に特定できる場合があります。 2つのネストされたループを持つアルゴリズムは、明らかにN 2です。2つの値のNグループのすべての可能な組み合わせを探索するアルゴリズムは、明らかに2 Nです。NNNN2N2N^2NNN2N2N2^N しかし、複雑さを持つアルゴリズムを「見つける」方法はわかりません。たとえば、再帰的なマージソートの実装は1つです。mergesortまたは他のΘ (N log N )アルゴリズムの一般的な特性は、分析するときに手がかりになりますか?Θ (NログN)Θ(Nlog⁡N)\Theta(N \log N)Θ (NログN)Θ(Nlog⁡N)\Theta(N \log N) アルゴリズムが複雑ななる方法は複数あると思いますので、ありとあらゆる答えがありがたいです。ところで、厳密な証拠ではなく、一般的な特性とヒントを探しています。Θ (NログN)Θ(Nlog⁡N)\Theta(N \log N)


2
二次時間を必要とする可能性のある問題
入力に対してΩ(|x|2Ω(|x|2\Omega(|x|^2)の下限を持つ問題の例を探しています。xxx 問題には次のプロパティが必要です。 Ω(n2)Ω(n2)\Omega(n^2)任意のアルゴリズムのランタイムプルーフ-最初の優先順位は、可能な限り単純な下限引数を持つことです。 O(n2)O(n2)O(n^2)アルゴリズム、可能であれば、単純なアルゴリズム。 (またはそれ以下)の出力サイズ。明らかに、長さの出力を必要とする問題には、少なくとも同様の実行時間が必要でしたが、それは私が探しているものではありません。決定の問題がここに収まることに注意してください。O(n)O(n)O(n)Ω(n2)Ω(n2)\Omega(n^2) (可能であれば)「自然な」問題。正式な定義がなければ、CSの卒業生が認識する問題が望ましいです。 私は最近そのような問題について尋ねられましたが、簡単な問題を思い付くことができませんでした。最初に思い浮かんだ問題は、これはランタイムの問題であると思われました。これは十分に単純ではなく、さらに、この共役は最近偽りであることが証明されました:o。3SUM3SUM3SUMΩ(n2)Ω(n2)\Omega(n^2) 極めて不自然な問題に行く、私は入力決定論TMおよび入力として取得する問題と考えてい⟨M⟩,x⟨M⟩,x\langle M \rangle,x、および後にテープヘッドの位置を出力(|M|+|x|)2(|M|+|x|)2(|M|+|x|)^2、それはだときの手順実行すると、xxxおそらく質問に答えます。 どうしても必要な場合は、シングルテープTMモデルを使用していることに同意してください。ただし、ランタイムが正確なモデルに依存しない問題をお勧めします(合理的なモデルであれば)。 したがって、実行時間がある単純な(証明する)自然な(よく知られている)問題を見つけることができますか?Θ(n2)Θ(n2)\Theta(n^2)

2
チューリング削減によってNP硬度を示すことはできますか?
Ramírez-Alfonsínによる論文「フロベニウス問題の複雑さ」では、チューリング縮約を使用して問題がNP完全であることが証明されました。それは可能ですか?正確にどのように?これは、多項式時間の多倍数削減によってのみ可能だと思いました。これに関する参照はありますか? NP硬度、さらにはNP完全性という2つの異なる概念がありますか?しかし、実際の観点から、私の問題がNP困難であることを示したい場合、私はどちらを使用するのですか? 彼らは次のように説明を始めました: 問題から減少チューリング多項式時間P1P1P_1 別の問題に 解くアルゴリズムAで 「解決するための仮想的なサブルーチンAを使用して、 のための多項式時間アルゴリズムであったAが場合は、そのような」 次いでAは多項式であろう時間アルゴリズム 。 はチューリングを還元できると 言い ます。P2P2P_2P1P1P_1P2P2P_2P2P2P_2P1P1P_1P1P1P_1P2P2P_2 問題 は、NP完全決定問題 があり、 をチューリング還元してできる 場合、NP困難(チューリング)と呼ばれます。P1P1P_1P2P2P_2P2P2P_2P1P1P_1 そして、彼らはNP完全問題からのそのようなチューリング簡約を使用して、他の問題のNP完全性を示します。

2
垂直方向の可視性問題のための効率的なアルゴリズム
1つの問題を考えると、次のタスクを解決する効率的なアルゴリズムを作成する必要があることに気付きました。 問題:辺が軸に平行な辺 2次元の正方形の箱が与えられます。頂上から見ることができます。ただし、水平セグメントもあります。各セグメントには整数座標()および()があり、ポイントおよび(下の写真)。m個のY 0 ≤ Y ≤ N X 0 ≤ X 1 &lt; X 2 ≤ N (X 1、Y )、 (X 2、Y )nnnmmmyyy0≤y≤n0≤y≤n0 \le y \le nxxx0≤x1&lt;x2≤n0≤x1&lt;x2≤n0 \le x_1 < x_2 \le n(x1,y)(x1,y)(x_1,y)(x2,y)(x2,y)(x_2,y) ボックスの上部にある各ユニットセグメントについて、このセグメントを覗いた場合にボックス内をどのくらい深く見ることができるかを知りたいと思います。 正式には、場合、。x∈{0,…,n−1}x∈{0,…,n−1}x \in \{0,\dots,n-1\}maxi: [x,x+1]⊆[x1,i,x2,i]yimaxi: [x,x+1]⊆[x1,i,x2,i]yi\max_{i:\ [x,x+1]\subseteq[x_{1,i},x_{2,i}]} y_i 例:次の図のようにn=9n=9n=9およびm=7m=7m=7セグメントがある場合、結果は(5,5,5,3,8,3,7,8,7)(5,5,5,3,8,3,7,8,7)(5, 5, 5, 3, 8, 3, 7, 8, …

3
一定時間の操作で賢いメモリ管理?
固定サイズのブロックを含む2つの基本的なメモリ割り当て操作を実行できるメモリセグメント(必要に応じてファイルのようにサイズが拡大または縮小できる)を考えてみましょう。 1つのブロックの割り当て 使用されなくなった以前に割り当てられたブロックを解放します。 また、要件として、メモリ管理システムは現在割り当てられているブロックを移動することはできません。インデックス/アドレスは変更しないでください。 最も単純なメモリ管理アルゴリズムは、グローバルカウンタ(初期値0)をインクリメントし、その新しい値を次の割り当てのアドレスとして使用します。ただし、割り当てられたブロックがわずかしか残っていない場合、セグメントを短くすることはできません。 より良いアプローチ:カウンターを保持しますが、割り当て解除されたブロックのリスト(一定時間で実行可能)を維持し、空でない限り、新しい割り当てのソースとして使用します。 次は何?メモリセグメントを可能な限り短く保つ、一定の時間の割り当てと割り当て解除の制約があるにもかかわらず、できる賢いことはありますか? (目標は、現在割り当てられていないブロックを最小のアドレスで追跡することですが、一定の時間では実現できないようです…)

2
なぜ大きな整数を因数分解するのが難しいと考えられますか?
私はどこかで、最も効率的なアルゴリズムが時間で因子を計算できることを読みましたが、私が書いたコードは、除算とモジュラスの速さに応じて、または場合によってはです。どこかで誤解したことは確かですが、どこにあるのかわかりません。擬似コード形式で記述しました。O(exp((64/9⋅b)1/3⋅(logb)2/3)O(exp⁡((64/9⋅b)1/3⋅(log⁡b)2/3)O(\exp((64/9 \cdot b)^{1/3} \cdot (\log b)^{2/3})O(n)O(n)O(n)O(nlogn)O(nlog⁡n)O(n \log n) function factor(number) -&gt; list factors = new list if number &lt; 0 factors.append(-1) number = -number i = 2 while i &lt;= number while number % i == 0 factors.append(i) number /= i i++ return factors

3
ループが再帰よりも速いのはなぜですか?
実際には、再帰はループとして書くことができ(逆も同様です)、実際のコンピューターで測定すると、同じ問題に対してループが再帰よりも速いことがわかります。しかし、この違いをもたらす理論はありますか、それとも主に経験的ですか?

2
密なNP完全言語はP = NPを意味します
ような多項式が存在する場合、言語は密であると言いますすべての換言すれば、任意の所与な長さのためにの長さの唯一の多項式多くの単語が存在ではないJ⊆Σ∗J⊆Σ∗J \subseteq \Sigma^{*}ppp|Jc∩Σn|≤p(n)|Jc∩Σn|≤p(n) |J^c \cap \Sigma^n| \leq p(n)n∈N.n∈N.n \in \mathbb{N}.nnnnnnJ.J.J. 私が現在勉強している問題は、次のことを示すように求めています 密な完全言語が存在する場合、NPNPNPP=NPP=NPP = NP テキストが示唆しているのは、 -への多項式簡約を検討し、要素も生成しながら、指定された式を満たそうとするアルゴリズムを構築すること333SATSATSATCNFCNFCNFJc.Jc.J^c. 私が思っているのは もっと直接的な証拠はありますか?この概念はより一般的な設定で知られていますか?

1
ブルートフォースドローネ三角形分割アルゴリズムの複雑
Mark de Berg等の著書「Computational Geometry:Algorithms and Applications」には、ドロネー三角形分割を計算するための非常に単純なブルートフォースアルゴリズムがあります。このアルゴリズムは、無効なエッジの概念を使用します。有効なドローネ三角形分割では表示されず、他のエッジに置き換える必要があるエッジです。各ステップで、アルゴリズムはこれらの不正なエッジを検出し、不正なエッジがなくなるまで必要な変位(エッジフリップと呼ばれる)を実行します。 アルゴリズムLegalTriangulation(TTT) 入力。いくつかの三角TTT点セットのPPP。 出力。法的三角形分割PPP。 一方、 違法なエッジが含まれているP I 、P jの DOTTTpipjpipjp_ip_j \quadしてみましょうとP I 、P J P lは隣接する2つの三角形ことのp のi のp J。pipjpkpipjpkp_i p_j p_kpipjplpipjplp_i p_j p_lpipjpipjp_ip_j \quadTから削除し、代わりにp k p lを追加します。Tを返します。pipjpipjp_ip_jTTTpkplpkplp_kp_l TTT このアルゴリズムは最悪の場合O(n2)O(n2)O(n^2)時間で実行されると聞きました。ただし、この記述が正しいかどうかは明確ではありません。はいの場合、この上限をどのように証明できますか?

2
この明らかにO(n lg n)乗算アルゴリズムの間違いはどこにありますか?
等間隔の3つを見つけることに関する最近のパズルブログの投稿で、私はO(n lg n)時間内にそれを行うと主張するトップアンサーを持つstackoverflowの質問に導かれました。興味深い部分は、解が多項式の2乗を伴い、O(n lg n)時間でそれを行う方法を説明する論文を参照することです。 現在、多項式の乗算は、数値の乗算と実質的に同じです。唯一の本当の違いは、キャリーがないことです。しかし...キャリーはO(n lg n)時間で行うこともできます。例えば: var value = 100; // = 0b1100100 var inputBitCount = value.BitCount(); // 7 (because 2^7 &gt; 100 &gt;= 2^6) var n = inputBitCount * 2; // 14 var lgn = n.BitCount(); // 4 (because 2^4 &gt; 14 =&gt; 2^3) var c = …

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