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

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

1
クリーク問題の制限バージョン?
入力がサイズあり、サイズkのクリークを見つけるように求められる次のバージョンのClique問題を考えてみましょう。制限は、決定手順が入力グラフを他の表現に変更できず、他の表現を使用してlog (n knnnkkk余分なビットです。追加ビットは、たとえばブルートフォースアルゴリズムでクリークの徹底的な検索のステータスを追跡するために使用できますが、決定手順は、問題を決定する他の方法でそれらを使用することを歓迎します。log(nk)log⁡(nk)\log(n^k) これの複雑さについて、現時点で何か知られていますか?Cliqueの他の制限について何か作業が行われましたか?もしそうなら、そのような作業に私を導くことができますか?


4
入力が単項符号化されると、強くNP困難または完全な問題の複雑さが変わりますか?
入力がバイナリエンコードではなく単項の場合、強力なNPハードまたはNP完全問題(たとえば、ここで定義)の難易度は変わりますか? 強いNP困難問題の入力が単項符号化される場合、どのような違いが生じますか?例えば、弱いNP完全ナップザック問題を取り上げると、バイナリエンコードの場合はNP完全ですが、単項エンコードの場合は動的プログラミングによって多項式時間で解くことができます。多分、それは多項式時間階層のより高いレベルの硬度にいくつかの意味を持っていますか? 強く...という概念は、他の複雑度クラス、たとえば多項式時間階層の上位クラスにも当てはまりますか? 以前、stackoverflow.comでこの質問をしましたが、ここでより適切であることが指摘されました。

3
入力サイズを大きくするとインスタンスが難しくなるのはなぜですか?
以下では、無限テープチューリングマシンで作業していると仮定します。 時間の複雑さの概念を誰かに説明し、なぜそれがインスタンスの入力サイズに対して測定されるのかを説明するとき、私は次の主張に出くわしました。 [..]たとえば、2つの整数に3ビットを掛けるよりも、2つの整数に100000ビットを掛けるのに多くのステップが必要になるのは自然です。 主張は説得力がありますが、どういうわけか手を振っています。私が出会ったすべてのアルゴリズムで、入力サイズが大きいほど、必要なステップが多くなります。より正確に言えば、時間の複雑さは入力サイズの単調増加関数です。 時間の複雑さが常に入力サイズの増加関数であるということですか?もしそうなら、なぜそうなのですか?手を振る以上の証拠はありますか?

3
合計がNになるすべての4乗の組み合わせをどれくらい早く見つけることができますか?
Stack Overflowで質問がありました(こちら): 整数与えられると、方程式A 2 + B 2 + C 2 + D 2 = Nを解くA 、B 、CおよびDNNNの整数値のすべての可能な組み合わせを出力します。A,B,CA,B,CA,B,CDDDA2+B2+C2+D2=NA2+B2+C2+D2=NA^2+B^2+C^2+D^2 = N この質問は、もちろん、バチェットの数論における推測(彼の証明からラグランジュの四乗定理と呼ばれることもある)に関連しています。単一の解決策を見つける方法を議論するいくつかの論文がありますが、特定のNのすべての解決策を見つけることができる速さ(つまり、すべての順列ではなく、すべての組み合わせ)を見つけることについて話すものを見つけることができませんでした。NNN 私はそれについてかなり考えてきましたが、時間と空間で解決できるように思われます。ここで、Nは望ましい合計です。しかし、主題に関する事前情報が不足しているため、それが私の側の重要な主張なのか、ささいな、明白な、またはすでに知られている結果なのかわかりません。O(N)O(N)O(N)NNN それで、問題は、与えられたすべての4乗和をどれだけ速く見つけることができるかということです。NNN OK、私が考えていた(ほぼ)O(N)アルゴリズムです。最初の2つのサポート関数、最も近い整数平方根関数: // the nearest integer whose square is less than or equal to N public int SquRt(int N) { return (int)Math.Sqrt((double)N); } そして、0からNまでのすべてのTwoSquareペアを返す関数: // Returns a list of …

3
番目のフィボナッチ数を計算する効率的なアルゴリズム
フィボナッチ数目は、次の再発を用いて線形時間で計算することができます。nnn def fib(n): i, j = 1, 1 for k in {1...n-1}: i, j = j, i+j return i フィボナッチ数番目はまた、計算することができる[ φ N / √nnn。ただし、これにはnが比較的小さい場合でも丸めの問題があります。おそらくこれを回避する方法はありますが、私はそれをやめたいです。[φn/5–√][φn/5]\left[\varphi^n / \sqrt{5}\right]nnn 浮動小数点演算に依存しないn番目のフィボナッチ数を計算するための効率的な(値以上の対数)アルゴリズムはありますか?整数演算(+、−、×、/)を一定の時間で実行できると仮定します。nnnnnn+++−−-××\times///

1
絞り込みタイプの推測
職場では、動的言語に関する型情報を推論する必要があります。次のように、ステートメントのシーケンスをネストされたlet式に書き換えます。 return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } 一般的なタイプ情報から始めて、より具体的なタイプを推測しようとしているので、自然な選択は絞り込みタイプです。たとえば、条件演算子は、trueブランチとfalseブランチの型の和集合を返します。単純なケースでは、非常にうまく機能します。 ただし、次のタイプを推測しようとしたときに、思わぬ障害に遭遇しました。 function …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

2
リストの代わりに検索ツリーを使用したハッシュ
私はハッシュと二分探索木資料と格闘しています。そして、同じハッシュ値を持つエントリを格納するためにリストを使用する代わりに、バイナリサーチツリーを使用することも可能だと私は読んだ。そして、私は操作の最悪の場合と平均の場合の実行時間を理解しようとします insert、 find そして delete 価値があります。平均的なケース。リストに関しては改善されますか?

4
特定のバブルソートアルゴリズムの平均時間の複雑さを評価します。
このバブルソートの疑似コードを考えてみましょう: FOR i := 0 TO arraylength(list) STEP 1 switched := false FOR j := 0 TO arraylength(list)-(i+1) STEP 1 IF list[j] > list[j + 1] THEN switch(list,j,j+1) switched := true ENDIF NEXT IF switched = false THEN break ENDIF NEXT 平均的な時間の複雑さを評価するために覚えておかなければならない基本的なアイデアは何でしょうか?最悪のケースと最良のケースの計算はすでに完了していますが、内部ループの平均的な複雑さを評価して方程式を作成する方法を検討しています。 最悪の場合の方程式は次のとおりです。 ∑i=0n(∑j=0n−(i+1)O(1)+O(1))=O(n22+n2)=O(n2)∑i=0n(∑j=0n−(i+1)O(1)+O(1))=O(n22+n2)=O(n2) \sum_{i=0}^n \left(\sum_{j=0}^{n -(i+1)}O(1) + O(1)\right) = …

1
APXハード問題のコレクション
誰もが「Garey&Johnson」を知っています。これは、NP硬度の証明に変換するために問題を変換する必要があるときにいつでも参照できる私の参照です。しかし、最近、APX耐性の証明が必要であることに気づきました。APX耐性であることが示されている同様の(そして最新の..?)問題の集まりがあるのでしょうか。 誰かがこのようなことを知っていますか?そのような問題を体系的に収集しているウェブサイトがないとは思えませんが、Googleのスキルは不十分のようです。

1
Big-Oh時間の複雑性に複数の変数を含めることはできますか?
たとえば、2つの文字列の分析が必要な文字列処理を行っているとします。彼らの長さがどうなるかについての情報はありませんので、彼らは2つの異なる家族から来ています。アルゴリズムの複雑さをまたはと呼んでも問題ありませんか単純なアルゴリズムを使用するか、最適化されたアルゴリズムを使用するかによって異なります)。O (n + m )O (n ∗ m )O(n∗m)O(n * m)O (n + m )O(n+m)O(n + m) 同様に、選択したアルゴリズムが実際には2つのステージを必要とするとします。最初の文字列のセットアップフェーズでは、初期コストを発生させずに他の文字列をいくつでも処理できます。構造とそれに続く任意の数の計算があると言うのが適切だと考えられますか?O (m )O (n )O(n)O(n)O (m )O(m)O(m) どちらの計算も線形であるため、それらをと呼ぶのが適切でしょうか?O (n )O(n)O(n)


2
HORN-SATはLINにありますか。もしそうなら、それはなぜP =​​ LINを示していないのですか?
Complexity Zooは、を決定論的チューリングマシンが線形時間で解決できる決定問題のクラスであると定義しています。L INLINLIN L IN⊆ PLIN⊆PLIN \subseteq P HORN-SATは解けるため(命題ホーン公式の充足可能性をテストするための線形時間アルゴリズム(1984)に示されているように)O (n )O(n)O(n) (命題)ホーン公式が満足できるかどうかを決定するための新しいアルゴリズムが提示されます。ホーン式の場合含まK異なる命題文字をし、それらが正確であると仮定すると、P 1、... 、P K、時間にこの紙実行に提示2つのアルゴリズムO (N )、Nを発生回数の合計でありますAのリテラルの。あAAKKKP1、… 、PKP1,…,PKP_1,…, P_KO (N)O(N)O(N)NNNあAA なぜそれを結論づけられないのかしら L IN= PLIN=PLIN = P HORN-SATもログスペース削減の下で完全であることが証明されていることを考えると?私は何かを逃しているに違いない。それともよく知られた事実ですか?PPP (私はまだ1984年の論文を徹底的に調べたので、線形時間でHORN-SATを解くためのアルゴリズムを完全に理解していないため、その意味を誤解している可能性があります。)

2
PとNPの不平等の矛盾の証明?
私は、階層定理を使用して、NがNPと等しくないことを主張しようとしています。これは私の主張ですが、先生に見せて差し引いたところ、受け入れざるを得ない理由が見つからない問題があると彼は言いました。 まず、P=NPP=NPP=NP仮定します。それが生じることSAT∈PSあT∈P\mathit{SAT} \in P自体は、次に、以下のそのSAT∈TIME(nk)SあT∈T私ME(んk)\mathit{SAT} \in TIME(n^k)。現状では、NPNPNPすべての言語をSATSあT\mathit{SAT}減らすことができます。従って、NP⊆TIME(nk)NP⊆T私ME(んk)NP \subseteq TIME(n^k)。逆に、時間階層定理は、言語があるべきであると述べていますA∈TIME(nk+1)あ∈T私ME(んk+1)A \in TIME(n^{k+1})ではない、TIME(nk)T私ME(んk)TIME(n^k)。これは、という結論に私たちを導くでしょうAあAであるPPPないでいる間、NPNPNP私たちの最初の仮定に矛盾です。したがって、P≠NPP≠NPP \neq NPあるという結論に達しました。 私の証明に何か問題がありますか?

1
整数の大きなべき乗のビット数を計算する
バイナリ表現で2つの整数とが与えられた場合、ビットサイズを計算する複雑さは何ですか?n x nバツxxんnnバツんxnx^n これを行う1つの方法は、十分な精度で近似を計算することにより、を計算することです。これは、表示されるコンピューティングと精度のビットで行うことができる、長さの二つの整数の積を計算するのに必要な時間である。この利回り複雑さの(特別に単純ではない)アルゴリズムおよそ場合両方のビットサイズに拘束されおよび(私はエラーをしなかった場合)。ログ2(Xの)ログ2(X )K O (M (K )のログ・K )M (K )K O (S ログ2 s )s x n1 + ⌊ ログ2(xん)⌋ = 1 + ⌊ N ログ2(x )⌋1+⌊log2⁡(xn)⌋=1+⌊nlog2⁡(x)⌋1+\lfloor \log_2(x^n)\rfloor=1+\lfloor n\log_2(x)\rfloorログ2(x )log2⁡(x)\log_2(x)ログ2(x )log2⁡(x)\log_2(x)kkkO (M(k )ログk )O(M(k)log⁡k)O(M(k)\log k)M(k )M(k)M(k)kkkO (s ログ2s )O(slog2⁡s)O(s\log^2 s)sssバツxxんnn を打つことができますか?ここではとサイズです(それらが同等のサイズの場合)。この複雑さ以上を実現する簡単なアルゴリズムはありますか?s x nO (s ログ2(s ))O(slog2⁡(s))O(s\log^2(s))sssバツxxんnn 注:チューリングマシンなどの理論モデルの複雑さに興味があります。

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