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

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

6
数値の基本的な操作に一定の時間がかかると仮定するにはどうすればよいですか?
通常、アルゴリズムでは、数値の比較、加算、減算を気にしません-それらが時間実行されると仮定します。たとえば、比較ベースの並べ替えがであると言うときにこれを想定しが、数値が大きすぎてレジスタに収まらない場合、通常は配列として表現するため、基本操作には要素ごとに追加の計算が必要です。O (n log n )O(1)O(1)O(1)O(nlogn)O(nlog⁡n)O(n\log n) で2つの数値(または他のプリミティブな算術関数)の比較ができることを示す証拠はありますか?そうでない場合、比較ベースの並べ替えがと言っているのはなぜですか?O (n log n )O(1)O(1)O(1)O(nlogn)O(nlog⁡n)O(n\log n) SOの質問に答えたときにこの問題が発生し、遅かれ早かれbig-intを処理する必要があるため、アルゴリズムがはないことに気付きました。また、擬似多項式時間アルゴリズムではなく、でした。PO(n)O(n)O(n)PPP

8
対数複雑度のアルゴリズムの直観
、、およびような複雑さを十分に把握していると思います。O(1)O(1)\mathcal{O}(1)Θ(n)Θ(n)\Theta(n)Θ(n2)Θ(n2)\Theta(n^2) リストに関しては、は定数ルックアップなので、リストの先頭を取得するだけです。 はリスト全体を検索する場所であり、はリスト内の各要素に対して1回ずつリストを検索します。O(1)O(1)\mathcal{O}(1)Θ(n)Θ(n)\Theta(n)Θ(n2)Θ(n2)\Theta(n^2) と間のどこかにあることを知る以外に、を把握する同様の直感的な方法はありますか?Θ(logn)Θ(log⁡n)\Theta(\log n)O(1)O(1)\mathcal{O}(1)Θ(n)Θ(n)\Theta(n)

8
整数配列の最速のソートアルゴリズムは何ですか?
私は高校時代に多くの分類アルゴリズムに出会いました。ただし、どれが最速かはわかりません(整数のランダム配列の場合)。だから私の質問は: 現在知られている最速のソートアルゴリズムはどれですか? 理論的には、さらに速いものがある可能性はありますか?それで、ソートの最小の複雑さは何ですか?

2
時間で並べ替えられていない配列の中央値を見つける
並べ替えられていない配列の中央値を見つけるには、n要素に対して時間で最小ヒープを作成し、中央値を取得するためにn / 2要素を1つずつ抽出します。ただし、このアプローチにはO (n log n )時間かかります。O (n ログn )O(nログ⁡n)O(n\log n)nnnn / 2n/2n/2O (n ログn )O(nログ⁡n)O(n \log n) 時間に何らかの方法で同じことを行うことはできますか?できるなら、どうやって?O (n )O(n)O(n)

3
決定問題と「はい」または「いいえ」ではない「実際の」問題
私はいくつかの問題は、(近似することが困難であることを多くの場所で読ん NP-ハード近づけるために それらを)。しかし、近似は決定問題ではありません:答えは実数であり、YesまたはNoではありません。また、各望ましい近似係数に対して、正しい多くの答えと間違った多くの答えがあり、これは望ましい近似係数によって変わります! それでは、この問題はNP困難であると言えるのでしょうか。 (第二弾に触発有向グラフ内の2つのノード間の単純なパスの数をカウントしているどのようにハード?)

1
これらの文字列操作をサポートする「文字列スタック」データ構造はありますか?
次の操作を実行できる文字セット文字列セットを格納するデータ構造を探しています。文字列のセットSを格納するデータ構造としてD(S )を示します。ΣΣ\SigmaD(S)D(S)\mathcal{D}(S)SSS Add-Prefix-Set上に:いくつかのセットの所定のT大き定数によって制限され、その文字列の長さが一定で、戻りによって囲まれている文字列(空)の、D({ T Sを| T ∈ T 、S ∈ S } )。これらの境界定数は両方ともグローバルです。これらはすべての入力Tで同じです。D(S)D(S)\mathcal{D}(S)TTTD({ts | t∈T,s∈S})D({ts | t∈T,s∈S})\mathcal{D}( \{ t s\ |\ t \in T, s \in S\} )TTT Get-Prefixes上の:リターン{ | S ∈ S 、∈ Σ }。O (| Σ |)時間でその内容を列挙できる限り、このセットにどの構造が使用されるかはあまり気にしないことに注意してください。D(S)D(S)\mathcal{D}(S){a | as∈S,a∈Σ}{a | as∈S,a∈Σ}\{ a \ | \ as \in S, …

4
グラフの直径を見つける時間の複雑さ
グラフの直径を見つける時間の複雑さは何 ですか?G=(V,E)G=(V,E)G=(V,E) O(|V|2)O(|V|2){O}(|V|^2) O(|V|2+|V|⋅|E|)O(|V|2+|V|⋅|E|){O}(|V|^2+|V| \cdot |E|) O(|V|2⋅|E|)O(|V|2⋅|E|){O}(|V|^2\cdot |E|) O(|V|⋅|E|2)O(|V|⋅|E|2){O}(|V|\cdot |E|^2) グラフの直径は、グラフ内のすべての頂点のペア間の最短パス距離のセットの最大値です。GGG 私はそれについて何をすべきか分かりません。このような問題を解決する方法について完全な分析が必要です。

2
償却時間での検索、挿入、削除を伴うデータ構造?
償却時間で次の操作をサポートする順序付きリストを維持するためのデータ構造はありますか?O(1)O(1)O(1) GetElement(k):リストの番目の要素を返します。kkk InsertAfter(x、y):新しい要素yをリストのxの直後に挿入します。 Delete(x):リストからxを削除します。 最後の2つの操作では、xがデータ構造への直接のポインターとして与えられていると仮定できます。InsertElementは、yに対応するポインターを返します。InsertAfter(NULL、y)は、リストの先頭にyを挿入します。 たとえば、空のデータ構造から始めて、次の操作は順序付きリストを次のように更新します。 InsertAfter(NULL、a) [a]⟹⟹\implies InsertAfter(NULL、b) [b、a]⟹⟹\implies InsertAfter(b、c) [b、c、a]⟹⟹\implies InsertAfter(a、d) [b、c、a、d]⟹⟹\implies Delete(c) [b、a、d]⟹⟹\implies これらの5つの更新後、GetElement(2)はdを返し、GetElement(3)はエラーを返します。

3
下限を証明することは本当に可能ですか?
計算上の問題がある場合、そのような計算の下限を見つけるタスクは本当に可能ですか?私はそれが単一の計算ステップがどのように定義され、どのモデルが証明に使用されるかを要約すると思いますが、それを考えると、実際に一般的に下限を証明しますか?私が意味することは、私たちは「問題のように何かを証明することができるであるより速く解くことができないではなく、」問題のある時間「で解決することができる時間またはより高速な」?XXXt(X)t(X)t(X)XXXt(X)t(X)t(X) 特に下限とその証拠に関する情報を見つけようとしましたが、興味のあるもの、主題に関する書籍/論文/ウェブサイトに関する推奨事項を実際に見つけることができませんか?

2
C ++ベクトルのpush_backが常に償却されるのはなぜですか?
私はC ++を学習していますが、ベクターのpush_back関数の実行時間が一定の「償却」であることに気付きました。文書にはさらに、「再割り当てが行われた場合、再割り当て自体が全体のサイズで線形になります」と記載されています。 これは、push_back関数がであることを意味するべきではありません。ここで、nはベクトルの長さです。結局のところ、最悪の場合の分析に興味がありますよね?O(n)O(n)O(n)nnn 決定的に、形容詞「償却」が実行時間をどのように変えるか理解していないと思います。

2
巡回セールスマン問題は多項式時間でどのように検証可能ですか?
だから、私は決定問題が次のように定義されているという考えを理解しています コストがCよりも低いパスPはありますか? そして、受け取ったパスを確認することで、これが正しいことを簡単に確認できます。 ただし、この基準に適合するパスがない場合はどうなりますか?最適なパスTSP問題を解決せずに、「いいえ」の答えをどのように検証し、最良の問題を見つけるにはCよりもコストがかかりますか?

6
in O(n)time:比較が推移的でないセット内で最大の要素を見つける
タイトルは質問を述べています。 入力として要素のリストがあり、比較することができます(どちらが最も大きいかを判断します)。要素を等しくすることはできません。 キーポイント: 比較は推移的ではありません(じゃんけんを考えてください):これは本当です:A> B、B> C、C> A (ここに有効な答えがないので、これは有効な入力ではないことに注意してください。非推移的比較」という意味) 各入力配列には答えがあることが保証されます 最大は、要素が他のすべての要素よりも大きくなければならないことを意味します 逆の性質が成り立つ、すなわちA> BはB <Aを意味する 例: Input: [A,B,C,D] A > B, B > C, C > A D > A, D > B, D > C Output: D O(n)時間でこれを行う方法がわかりません。私の最善の解決策はO(n ^ 2)です。 答えを確実にするために、要素が他のすべての要素と明示的に比較され、それが実際に答えであることを証明する必要があるという事実のために、すべてのアプローチにこだわっています(比較は推移的ではないため)。 これは、ヒープ、ソートなどの使用を除外します。

2
Digit Sumシーケンスの要素を効率的に見つける方法は?
興味をそそるだけで、プロジェクトオイラーの「最近の」カテゴリ(数字の合計シーケンス)から問題を解決しようとしました 。しかし、問題を効率的に解決する方法を考えることはできません。問題は次のとおりです(元の質問シーケンスでは最初に2つありますが、シーケンスは変更されません)。 Digit Sumシーケンスは、1,2,4,8,16,23,28,38,49 ....です。ここで、シーケンスのnthnthn^{th}項は、シーケンス内でその前にある数字の合計です。シーケンスの1015th1015th10^{15}th項を見つけます。 素朴なソリューションは多くの時間がかかるため実装できません。私はこの問題を行列の累乗の場合(時間がかかる)に減らすことを試みましたが、このシーケンスの繰り返しはかなり線形であるため、このような繰り返しを見つけることはできませんでした独特の。シーケンスは繰り返しによって管理されていることがわかります。O(log(1015))O(log(1015))O(log ( 10^{15})) an=an−1+d(an−1).....(1)an=an−1+d(an−1).....(1) a_n = a_{n-1} + d( a_{n-1} ) ..... (1 ) ここでanana_nはシーケンスのnthnthn^{th}項であり、dddは入力として自然数が与えられると、その数字の桁の合計を返す関数です(例:d(786)=21d(786)=21\;d(786)=21)。2番目のアプローチは、シーケンス内のパターンを見つけることでした。シーケンスの最初のいくつかの用語は、次のように記述できることがわかります。 a_1 = 1 a_2 = 1 + d( 1 ) a_3 = 1 + d( 1 ) + d( 1 + d( 1 ) ) a_4 = 1 + d( …

1
ロックのない、一定の更新時間の同時ツリーデータ構造?
私は最近少しの文献を読んでいて、かなり興味深いデータ構造を見つけました。 更新時間を最悪の場合の更新時間まで下げるさまざまな方法を調査しました[1-7]。O(1)O(1)\mathcal{O}(1) 最近、効率的な同時アクセスをサポートするために、ロックフリーのデータ構造の調査を開始しました。 これらの最悪の場合の更新時間技術は、ロックフリーデータ構造の実装に使用されていますか?O(1)O(1)\mathcal{O}(1) 私が尋ねるのは; 私には、それらはこの「理論的強化」の明らかな実際的な拡張のように思えます。 タージャン、ロバート・エンドレ。「O(1)ローテーションでのバランスの取れた検索ツリーの更新。」情報処理レター16、no。5(1983):253 – 257。 Driscoll、JR、N Sarnak、DD Sleator、およびRE Tarjan。「データ構造の永続化」。第18回コンピューティング理論に関する年次ACMシンポジウムの議事録、109–121。STOC '86。ニューヨーク、ニューヨーク、アメリカ:ACM、1986。 Levcopoulos、C。、およびMark H. Overmars。「O(1)最悪の場合の更新時間を備えたバランスの取れた検索ツリー。」Acta Inf。26、いいえ。3(1988年11月):269–277。 フライシャー、ルドルフ。O(1)ワーストケース更新時間を備えた単純なバランスの取れた検索ツリー ディーツ、ポールF、ラジーエフラマン。「一定の更新時間のフィンガー検索ツリー。」情報処理レター52、いいえ。3(1994):147 – 154。 Lagogiannis、George、Christos Makris、Yannis Panagis、Spyros Sioutas、Kostas Tsichlas。「最悪の場合の一定の更新時間を備えた新しい動的なバランスの取れた検索ツリー。」J. Autom。ラング。櫛。8、いいえ。4(2003年7月):607–632。 Brodal、GerthStølting、George Lagogiannis、Christos Makris、Athanasios Tsakalidis、Kostas Tsichlas。「ポインターマシンでの最適な指探索ツリー」。J。Comput。システム。科学 67、いいえ。2(2003年9月):381–418。

2
有向グラフで同じ長さの少なくとも2つのパスを見つける
有向グラフと2つのノードおよびBがあるとします。次の決定問題を計算するためのアルゴリズムが既にあるかどうかを知りたい:A BG = (V、E)G=(V,E)G=(V,E)AAABBB 同じ長さのAAAとBBBの間に少なくとも2つのパスがありますか? 複雑さはどうですか?多項式時間で解決できますか? グラフに新しい制約を追加したいのですが、おそらく問題はより解決可能です。隣接行列では、すべての列が空ではありません。したがって、すべてのノードには入力に少なくとも1つの矢印があり、少なくとも1つのノードが自身に接続されています。そのため、ノードが私ii番目のノードである場合、(i 、i )(i,i)(i,i)はグラフのエッジです。

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