タグ付けされた質問 「algorithms」

アルゴリズムは、問題に対する抽象的な解決策を定義する明確に定義された一連のステップです。このタグは、問題がアルゴリズムの設計と分析に関連している場合に使用します。

2
決定的なforループを使用してフィボナッチ数列のn番目の項を見つけることは可能ですか?
私はJohn Zelle著の本の「Introduction to Computer Science」を使用しており、第3章(数値による計算)の最後に、おそらく決定的なforループを使用しているフィボナッチ数列のn番目の項を見つけるように求められます。構造はまだ導入されています。 これは可能ですか?思いつく限りのことを試しました。 **私はifステートメントなどを使用してそれを解決する方法を知っています。しかし、この本はまだ決定構造をカバーしていませんが、それでも私は(ユーザーから与えられた)n番目の用語を見つけるように求めてきます。これがこれまでカバーしてきたことなので、 "for"ループを使用してこれを行う方法を知っているとしか推測できません。

1
貪欲な選択とマトロイド(greedoids)
貪欲なアプローチについての資料を調べていたとき、マトロイド(貪欲)に関する知識が問題への適切なアプローチに役立つことを知りました。マトロイドについて読んだ後、私はマトロイドが何であるかを大まかに理解しました。しかし、与えられた最適化問題を解決するためにマトロイドの概念をどのように使用しますか? たとえば、活動選択問題を考えてみましょう。問題を解決するためにマトロイド理論を使用する手順は何ですか?

1
グラフをテストするアルゴリズム
グラフを与えられたアルゴリズムを探しています GGG そして自然数 ttt、決定する GGG です ttt-推移的。 この問題がP、NP、NPC、またはその複雑さのクラスに関するその他の興味深い事実にあるかどうかを知ることにも興味があります。

2
サボテングラフのエッジのバランスのとれた重み付け
与えられたサボテン、私たちは、このような方法という点で、その辺を重み付けしたいです 各頂点について、頂点に入射するエッジの重みの合計は1以下です。 すべてのエッジの重みの合計が最大化されます。 明らかにその答えは ん2ん2\frac{n}{2} ために んんn 頂点(Σd私= 2 DΣd私=2D\sum d_i = 2D どこ d私d私d_i 1つの頂点の合計であり、 DDDすべてのエッジの合計です)。この境界は、各エッジを1/2に重み付けすることにより、サイクルグラフで達成できます。 木に貪欲なアルゴリズムを見つけました。葉に付随するエッジに1を割り当て、繰り返しパスでグラフからそれらとその近傍を削除します。これにより、サボテンが相互接続された一連のサイクルまで剪定されます。この時点で、残りのサイクルは相互接続されておらず、各エッジに1/2の重みが付けられていると想定しました。これは9/10のテストケースを取得しましたが、もちろん不完全です。 では、サボテンの一般的な問題をどのように解決すればよいでしょうか?私は完全な解決策よりもヒントを好みますが、どちらでもかまいません。 この質問には、InterviewStreet CompanySprintからの問題が含まれます。私はすでに競争しましたが、問題についてのいくつかの考えが欲しいです(解決策はリリースされていません、そして私はこの問題について壁に頭をぶつけています)

1
3つの点が同一線上にある場合
セットを考える SSS ポイントの p1、。。、p2p1、。。、p2p_1,..,p_2 セットの3点が同一線上にあるかどうかを判断するための最も効率的なアルゴリズムを提供します。 問題は、一般的な定義から始めましたが、実際に問題を解決し続けることができません。 同一線上の点、一般的には3つの点について何が言えるか a 、b 、ca、b、ca,b,c 距離が同一線上にある場合 d(a 、c )= d(a 、b )+ d(b 、c )d(a、c)=d(a、b)+d(b、c)d(a,c) = d(a,b)+d(b,c) 場合 bbb は間に aaa そして ccc。 素朴なアプローチには O (n (n − 1 )(n − 2 ))= O (ん3)O(ん(ん−1)(ん−2))=O(ん3)O(n(n-1)(n-2))=O(n^3) 時間の複雑さ。 この問題を解決するには、次のステップは何ですか?

1
同時移動によるアルファベータ剪定?
私はいくつかのaiを作成しているゲームで、2人のプレイヤーが同時に移動するゲームを持っています。このゲームでは、1つだけの動きがあり、両方が同時にそれを行った場合、別々に行った場合とは結果が異なります(他のすべての動きはかなり独立しています)。 とにかく、私はそれを投げるための良いアルゴリズムを見つけようとしています。アルファとベータの剪定を伴うミニマックスは、プレーヤーが交互の動きではなく、交互の動きをしている場合に適しているようです。このトピックに関する論文(pdf)を見つけましたが、ちょっと頭がおかしいので、pseduocodeを読み込めません。 それで、誰かがそのアプローチを明確にするのを助けるか、そのようなゲームでアルファベータ剪定を達成する別の方法を提案するか、またはより良いアルゴリズムを完全に提案することができますか?


2
ポイントが凸包の頂点の場合
運動は 点と点セットが与えられます。場合、時間で決定しますSSSpppO(n)O(n)O(n)pppが次の点から形成される凸多角形の頂点であるSSS。 問題は、私が時間の複雑さと少し混乱していることです O(n)O(n)O(n)。より素朴な解決策は、O(nlogn)O(nlog⁡n)O(n\log n) そしてかどうかをテスト ppp 頂点の1つです。

1
片側誤差のある行列乗算の確率論的検定
3つの行列与えられた場合かどうかをテストします。算術演算および-が\ mathbb {Z}からの数値に適用される場合、一定の時間がかかると仮定します。A 、B 、C∈Zn × nA,B,C∈Zn×nA, B,C \in \mathbb{Z}^{n \times n}A B ≠ CAB≠CAB \neq C+++−−-ZZ\mathbb{Z} O (ん2)O(n2)O(n^2)時間で実行される片側エラーのあるアルゴリズムをどのように記述し、その正しさを証明できますか? 数時間試しましたが、うまくいきません。X ∈Zんx∈Znx \in \mathbb{Z}^nのベクトルの最大半分s \ in S = \ left \ {1、0 \ right \} ^ nS ∈ S={ 1 、0 }んs∈S={1,0}ns \in S = \left\{1, 0\right\}^n がx \ cdot sを満たすという事実を使用する必要があると思います= …

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 

1
KMPプレフィックス関数と文字列照合オートマトンの間の接続
LET文字列照合オートマトンパターンのための、ありますAP=(Q,Σ,δ,0,{m})AP=(Q,Σ,δ,0,{m})A_P = (Q,\Sigma,\delta,0,\{m\})P∈ΣmP∈ΣmP \in \Sigma^m Q={0,1,…,m}Q={0,1,…,m}Q = \{0,1,\dots,m\} δ(q,a)=σP(P0,q⋅a)δ(q,a)=σP(P0,q⋅a)\delta(q,a) = \sigma_P(P_{0,q}\cdot a) for all and a \ in \ Sigmaq∈Qq∈Qq\in Qa∈Σa∈Σa\in \Sigma σP(w)σP(w)\sigma_P(w)の最長プレフィックスの長さPPPの接尾辞であるwwwであり、 σP(w)=max{k∈N0∣P0,k⊐w}σP(w)=max{k∈N0∣P0,k⊐w}\qquad \displaystyle \sigma_P(w) = \max \left\{k \in \mathbb{N}_0 \mid P_{0,k} \sqsupset w \right\}。 さて、聞かせて\パイプレフィックス機能からクヌース-モリス-プラット法であるが、ππ\pi πP(q)=max{k∣k&lt;q∧P0,k⊐P0,q}πP(q)=最高{k|k&lt;q∧P0、k⊐P0、q}\qquad \displaystyle \pi_P(q)= \max \{k \mid k < q \wedge P_{0,k} \sqsupset P_{0,q}\}。 …

1
有向グラフの間に停止がある単純なパス
有向グラフのパスに関連する2つの問題があります。LETソースと有向グラフであると目標。ましょう内の別の頂点である。G=(V,E)G=(V,E)G=(V,E)s∈Vs∈Vs \in Vt∈Vt∈Vt \in Vv∈V∖{s,t}v∈V∖{s,t}v \in V \setminus \{s,t\}GGG からからまで単純な有向パス¹を見つけます。ssstttvvv 2つの固定エッジを通るからへの単純な有向パスを見つけます。ssstttGGG それらに多項式時間アルゴリズムがあるかどうかはわかりません。誰かがそれらの解決策や参照を持っていますか? 単純な有向パスでは、頂点が複数回出現することはありません。

1
線形方程式に正の解があるかどうかをチェックする複雑さ
線形方程式システムを考えます。ここで、は有理数のエントリを持つ行列です。のランクがであると仮定します。それが解決したかどうかを確認するためにcomplexiy何である、すべてのエントリが、そのようなことを(すなわち、0よりも大きいstricly正のベクトルである)は?もちろん、ガウスの消去法を使用できますが、これは最適ではないようです。Ax=0Ax=0Ax=0AAAn×nn×nn\times nAAA&lt;n&lt;n<nxxxxxxxxx

2
正方配列の「重複しない」数値の合計を最大化-証明に役立ちます
質問はスタックオーバーフローに掲載されたこの問題を解決するためのアルゴリズムを求めて: nxnの行列(Aと呼びます)があります。行列Aからポイントのサブセット(Bと呼びます)を選択します。サブセットはn個の要素で構成され、Aの各行と各列から1つだけの要素が取得されます。出力はソリューション( B)これらの制約を考慮して、Bを構成する要素の合計が可能な最大値になるようにします(たとえば、以下の例では25)。Bの複数のインスタンスが見つかった場合(つまり、同じ最大合計を与える異なるソリューション)、最大の最小要素を持つBのソリューションを選択する必要があります。 Bは、nxnの選択行列にすることもできますが、n個の目的の要素のみが非ゼロです。 例:A = |5 4 3 2 1| |4 3 2 1 5| |3 2 1 5 4| |2 1 5 4 3| |1 5 4 3 2| =&gt; Bは |5 5 5 5 5| 私は動的プログラミングソリューションを提案しましたが、これは他のソリューションと同じくらい効率的だと思います。以下の提案されたアルゴリズムをコピーして貼り付けました。 してみましょうの正方形アレイもでの数字。ああAんんnんんn LETの要素示しにおける行と列目を。あ私、jあ私、jA_{i,j}ああAij LETはの正方形サブアレイの数値非重複の最適和を表す行の交点を含むがにと列がに。S(私1:私2、j1:j2)S(私1:私2、j1:j2)S( i_1:i_2, j_1:j_2 )ああA私1私1i_1私2私2i_2j1j1j_1j2j2j_2 次に、重複しない数値の最適な合計が示さS( 1:n , 1:n )れ、次のように与えられます。 …

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