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

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

2
単一リンクリストで実装されたキューのエンキューおよびデキューの時間の複雑さはどれくらいですか?
リンクリストデータ構造で実装されたキューの時間の複雑さを理解しようとしています。私の本では、次の方法でO(1)時間でキューを実装できると述べています。 奥に入れる 先頭でデキュー そしてそれはまた言います 要素を尾に追加するのは一定の時間ですが、新しい尾を見つける必要があるため、要素を尾から削除することはO(n)であることに注意してください 新しいノードをキューの先頭(エンキュー)に追加するには、ヘッドポインターがあるためO(1)がかかることを知っています。同様に、先頭のノードを削除すると(デキュー)、O(1)も使用されます。しかし、要素を後ろ(エンキュー)に追加するとO(1)がかかり、削除(デキュー)するとO(n)になる理由がわかりません。どちらの場合も(後ろでの追加/削除)はテールポインターを見つける必要があるため、トラバースする必要があるため、後ろでのキューへの登録がO(1)ではなくO(n)である場合、私にはより理にかなっています。リスト全体。

4
配列をに分割した場合の再帰の深さは何ですか
配列を入力として受け取る関数があります。配列を同じサイズの部分に分割しますは配列のサイズです。要素が2つだけ残るまで、各サブ配列を分割し続けます。この再帰の深さはどれくらいですか?log2(n)log2⁡(n)\log_2(n)nnn プロセスの例: 最初に要素があり、それらを同じサイズの部分に分割します。これらの各部分には、要素が含まれています。次のレベルの再帰では、各配列を同じサイズの部分に再度分割します。これらの各要素には、要素が含まれるようになります。そして、要素が2つしかないサブ配列に到達するまで、この方法で配列を分割し続けます。nnnlog2(n)log2⁡(n)\log_2(n)nlog2(n)nlog2(n)\frac {n} {log_2(n)}log2(nlog2(n))log2(nlog2(n))log_2(\frac {n} {log_2(n)})nlog2(n)log2(nlog2(n))nlog2(n)log2(nlog2(n))\frac {\frac {n} {log_2(n)}} {log_2(\frac {n} {log_2(n)})}

2
平方根の合計が整数より小さいことを見つけるための多項式時間アルゴリズムはありますか?
与えられた:のリストんんn整数および整数。バツ1、バツ2、… 、バツんバツ1、バツ2、…、バツんx_1,x_2,\dots,x_nkkk 決定しますです?バツ−−√1+バツ−−√2⋯バツ−−√ん≤ Kバツ1+バツ2⋯バツん≤k\sqrt x_1 + \sqrt x_2 \cdots \sqrt x_n \le k 質問:上記の問題に対する多項式時間アルゴリズムはありますか?はいの場合、アルゴリズムを指定します。そうでなければそれを証明します。

4
多項式時間の単純な(非数学的な)定義?
計算複雑性理論は複雑です。多項式時間についての私の理解は、非決定論的多項式時間などの他の時間複雑性クラスとの関係です。これはエンジニアや数学者には問題ありませんが、私は一般の人に適した簡単な用語の定義を探しています。 多項式時間を「(計算)演算で測定された時間」としてキャストするのは間違っているでしょうか? 明らかに、さまざまな時間複雑度クラスの後続の資格があり、時間複雑度は問題のサイズに基づいた比率であることが適切かもしれませんが、ここでも、ここで求めているものよりも少し複雑です。

1
時間通りに動くチューリングマシンはありますか
時間で実行される(確定的、シングルテープ)チューリングマシンは、通常の言語を決定することが知られています(たとえば、このリンクを参照)。したがって、時間で実行される同等のチューリングマシンが存在します。つまり、o(nlogn)o(nlog⁡n)o(n\log n)O(n)O(n)O(n)t(n)=o(nlogn)t(n)=o(nlog⁡n)t(n)=o(n\log n)場合DTIME(t(n))∖DTIME(n)=∅.DTIME(t(n))∖DTIME(n)=∅.\mathsf{DTIME}\left(t\left(n\right)\right)\backslash\mathsf{DTIME}\left(n\right)=\emptyset. 元のチューリングマシンがまだ間に合わなかった例があるのだろうかと思っていました O(n)O(n)O(n)。 まとめると、時間通りに動くチューリングマシンはありますか o(nlogn)o(nlog⁡n)o(n\log n)、 だがしかし O(n)O(n)O(n)?


2
私たちはより良いことができますか
この質問に対する答えは「いいえ」であると、私は(愚かにも判明しました)確信しています。なぜ私は尋ねるのですか? それは、EPFLの並列プログラミングコースのAleksandar Prokopec博士が、さまざまな特性を主張するデータ構造を導入しているためです。これらの特性は保持している場合、そうです、私により良いでバランスの取れたバイナリツリーを構築することが可能でなければならないこと時間。O ( nログn )O(んログ⁡ん)O(n\log n) 私はこれを信じていないので、私の考えのどこに欠陥があるのだろうと思います。 データ構造は、conc-treeリストです。標準形式では、通常のバイナリツリーのように見えconcat、ノードの左右のサブツリーの高さが2以上異なることがないことを保証する操作が付属しています。予想通りconcat、複雑さはです。O (ログn )O(ログ⁡ん)O(\log n) しかし、リストと呼ばれるコンクツリーリストのビルダーバリアントがありAppendます。このバリアントは、複数のサブツリーで一時的な高さの違いを可能にします。このバリアントでは、償却済み時間の追加が要求されます。O (1 )O(1)O(1) そのため、要素を追加すると複雑さが必要になるようです。んんnO (n )O(ん)O(n) ただし、このバリアントの特徴は、が2の累乗であるときは常に、完全にバランスのとれた二分木(これまでに挿入されたすべての要素を含む)になることです。したがって、一時的な不均衡は許容されますが、ツリーは2挿入のすべてのパワーで均衡になります。んんn このバリアントでは、ノードと呼ばれる新しいクラスのノードAppendが導入され、サブツリーの高さが1つ以上異なることが許可されているノードです。ただし、挿入ごとに、このような一時ノードはすべて削除されます。2k2k2^k Wikipediaのページのページは、(基本的なデータ構造の記述と見かなり簡潔なアルゴリズムを説明しappend、特定のメソッドを)。 したがって、が2の累乗の場合、要素を挿入するためのコストはあり、バランスのとれたバイナリツリーを構築しました。またはそうです。んんnO (n )O(ん)O(n) で別の質問私は、特定の値のためのアルゴリズムのためのステップ数を述べることができる場合、私は効果的に」尋ねのために例えば、、整数である、私は複雑さを述べるできるようにするには、この十分ですすべての値?」んんnn =2kん=2kn = 2^kkkkんんn Yuval Filmusの答えから、答えは「いいえ」であることがわかりますが、「多くの場合、はで単調であると予想されます。その場合、控除は成立します。」TTTんんn したがって、この場合、要素の挿入に複雑さあり、要素ごとに平衡バイナリツリーがある場合、このコンクツリーバリアントアプローチで平衡バイナリツリーを構築するコストは。んんnO (n)O(ん)O(n)2k2k2^kO (n )O(ん)O(n) ここで何が問題になっていますか?正直に言うと、このバリアントに対して要求された償却済み追加時間がわかりません。多くの場合、挿入にはコストがかかりますが、一時ノードで何が起こっているかを見ると、全体的な挿入コストは償却されたように見え。O (1 )O(1)O(1)O (1 )O(1)O(1)AppendO (ログん)O(ログ⁡ん)O(\log n) これが当てはまる場合、バランスの取れたバイナリツリーを構築すると、驚くほどのコストがかかります。O (nログn )O(んログ⁡ん)O(n\log n) 長い質問で申し訳ありませんが、問題のアルゴリズムについて詳しく説明していません。代わりに、ウィキペディアを見回してください。

1
部分ソートは配列のルックアップコストに役立ちますか?
並べ替えられていないリストで何かを調べることは、時間の複雑さ伴うタスクです。ただし、リストがソートされている場合、時間の複雑さはです。つまり、配列を並べ替える価値がある場合があります。ただし、ソートアルゴリズムの時間の複雑さはであるため、これはトレードオフです。O (n )O(n)O(n)O (ログ(n ))O(log⁡(n))O(\log(n))O (n ログ(n ))O(nlog⁡(n))O(n\log(n)) 私の知る限り、配列を 時間未満でソートすることはできません。しかし、それよりも短い時間で部分的に配列をソートできるアルゴリズムがあるかどうか疑問に思っていますか?私はあなたが時間でそのような部分的にソートされた配列の値を検索できないと確信していますが、よりもうまくできますか?O (n ログ(n ))O(nlog⁡(n))O(n\log(n))O (ログ(n ))O(log⁡(n))O(\log(n))O (n )O(n)O(n) つまり、よりも高速なアルゴリズムでソートされていない配列を処理して、ルックアップアルゴリズムがよりも高速に検索できるようにすることは可能ですが、ほど高速ではありません?O (n ログ(n ))O(nlog⁡(n))O(n\log(n))O (n )O(n)O(n)O(log(n))O(log⁡(n))O(\log(n))

3
理論的な複雑さと実際の効率の違い
この疑似コードがある場合: for i=0 to n/2 do for j=0 to n/2 do ... do anything .... 反復回数は ん2/ 4ん2/4n^2/4。 このプログラムの複雑さは何ですか?それは?O (ん2)O(ん2)O(n^2) その複雑さは、どのような直感的な公式/非公式なものですか? 次に、この他の疑似コードがある場合: for i=0 to n do for j=0 to n do ... do anything .... 再び複雑さは -それは正しいですか?O (ん2)O(ん2)O(n^2) この場合、実際の効率と理論上の複雑さの間に違いはありますか?これらの1つは他よりも高速ですか?

2
P対NPと比較して、P対PSPACEでこれ以上の進展はありましたか?
これは少し曖昧な質問であることを理解していますが、オラクルを使用して質問を簡単に解決できないなど、P対NPの結果があります。P対NPについては示されているが、P対PSPACEについては示されていない、このような結果はありますか?したがって、特定の証明手法がP対NPを解決できない場合でも、P対PSPACEを解決できる可能性があります。また、P = PSPACEの場合、P = NPで必ずしも成立しない含意があると言う重要な結果はありますか?または、P!= NPを証明するよりもP!= PSPACEを証明する方が簡単であることを示唆する、文学の中で重要なものは何ですか?

1
通常の言語の時間の複雑さ
言語Lがo(nlog(n))で決定可能である場合、Lは正規でなければならないことを証明するにはどうしたらいいのでしょうか。 「決定可能」とは、おそらく「シングルテープの確定的チューリングマシンによって決定可能であること」を意味します。 よろしくお願いしますギジェルモ

2
Pのマシンは決定不能ですか?
チューリングマシンを考える MMM、私たちはそれを言う L(M)∈PL(M)∈PL(M) \in P機械によって決定された言語が多項式時間である機械によって決定されることができるかどうか。と言うM∈PM∈PM \in Pマシンが多項式時間で実行される場合。不必要に長く動作するが、言語を決定するマシンが存在する可能性があることに注意してくださいPPP。ライスの定理により、 {⟨M⟩∣M is a Turing machine such that L(M)∈P }{⟨M⟩∣M is a Turing machine such that L(M)∈P }\{ \langle M \rangle \mid M \mbox{ is a Turing machine such that }L(M) \in P \mbox{ } \}決定できません。次のことを知っていますか: {⟨M⟩∣M is a Turing machine such that M∈P …

2
バニラチューリングマシンで弦のインプレースリバースを間に合わせることができますか
バニラチューリングマシンとは、テープが1本のチューリングマシンを意味します(特別な入力テープや出力テープはありません)。 問題は次のとおりです。テープは最初は空ですが、 nnn 111砂 000s文字列の終わり文字で終了します。テープヘッドは、文字列の先頭から始まります。目標は、テープに元の文字列を逆の順序で格納し、文字列終了文字で終了し、チューリングマシンが最終的に停止すると、テープヘッドが文字列の先頭に戻るようにすることです。 チューリングマシンは、(それが含まれている限り)好きなだけ大きなアルファベットを使用できます。 000、 111、および文字列の終わりの文字)であり、好きなだけ状態を設定できます。このタスクを時間内に完了することができる固定チューリングマシンはありますかo(n2)o(n2)o(n^2)? これを間に合わせるのは簡単です O(n2)O(n2)O(n^2)いくつかの状態とシンボルのみを使用します。何かが一定の要因よりも速くそれを行うのを妨げていることは直感的に明らかであるように見えますが、それを証明することはできませんでした。対数高速化...

4
問題の時間の複雑さは、問題のエンコードによって変わりますか?
決定の問題があるとしましょう DDD そして私はそれを言語にエンコードします L⊂{0,1}∗L⊂{0,1}∗L \subset \{0,1\}^*。これで、別の言語にエンコードすることもできますL′L′L'。 の時間の複雑さに関する定理はありますか LLL そして L′L′L'? 同じ問題の異なるエンコーディングを使用すると、問題の時間の複雑さがどのように変化しますか?

2
量子コンピューター、並列計算、指数時間
私は、量子コンピューターが「特定の問題」を古典的なコンピューターよりも指数関数的に解決できることを読みました。私が理解していると思いますが、量子コンピュータがEXPTIME完全、2-EXPTIMEなどの問題を取り、それらを線形時間または一定時間に変換すると言っても同じではありません。 この問題についてもっと知りたいのですが。 量子コンピュータが指数以下の時間で指数問題を解決できる/できないのはなぜですか? EXPTIMEで完全な問題を一定の時間で解決できるコンピューター(量子またはその他)を想像することは、少なくとも理論的には可能ですか?それとも矛盾につながりますか? 3番目の関連アイテムを編集します。 量子コンピューターは並列計算を行うことができますか? 話題がコメントから出てきたので、並列計算についてのアイデア、それは量子計算機についての通常の/ポップなビジョンです、まるで量子計算機が与えられた問題の「すべての可能性」を計算できたかのようです(それが場合、因数分解アルゴリズムを発明するために偉大なピーターショアを呼び出す必要はありません!)次に、量子コンピュータに関する「なぜ」の質問は、並列計算を行うことができるか、できないかは、コンピュータ科学と物理学の質問の半分です。 ここで混乱の源:http : //physics.about.com/od/physicsqtot/g/quantumparallel.htm

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