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

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

1
シフト解決解析-質問
私は最近、タイトルで言及されている解析手法を説明する論文に出くわしました。残念ながら、上記の論文で使用されている用語は、私の理解をいくらか超えているため、構築アルゴリズムをより直感的に把握するように努めています。私は成功したと思います(このプレゼンテーションはah-haモーメントのソースでした)が、このテクニックに慣れている人またはそこに含まれる用語のどちらかからの正しさの検証は非常にありがたいです。 ソリューションに対する私の見方を説明し(それが正しい場合は、この手法を理解しようとしている他の人々の助けになると思います)、後で追加の質問をします。:何の誤解がありません確実にするために、私は次の標準表記法を使用するつもりだ、B 、Cを、。。。∈ T、A 、B 、C 、。。。∈ N、、と、紙のようにはルール番号を示しますA 、B 、C 、。。。∈ Ta,b,c,...∈Ta, b, c, ... \in TA 、B 、C、。。。∈ NA,B,C,...∈NA, B, C, ... \in Nα 、β 、γ 、。。。∈ { N ∪ T } * A I → ω I。。。バツ、Y、Z∈ N∪ T...X,Y,Z∈N∪T... X, Y, Z \in N \cup Tα 、β、γ、。。。∈ { …

4
GCD = 1の最小サブセットのサイズを見つける
これは、ポーランドの大学プログラミングコンテスト2012の練習セッションの問題です。メインコンテストの解決策は見つかりましたが、この問題の解決策はどこにも見当たりません。 問題は次のとおりです以下の異なる正の整数のセットが与えられたら、1以外の公約数を持たない最小サブセットのサイズを見つけますは最大で500であり、解が存在すると仮定できます。10 9 m NNNN10910910^9mmmNNN 私はそれを示すために、管理。私の推論は次のとおりです。サイズがで、gcd = 1の最小サブセットがあるとします。次に、すべての9サブセットはgcd> 1でなければなりません。そのようなサブセットは正確に10あり、それらのgcdはペアワイズでなければなりませんcoprime。これらのgcdをとすると、i \ neq jに対してになります。その場合、Sの最大数はg_2g_3 ... g_ {10}です。しかし、g_2g_3 ... g_ {10} \ ge 3 \ times5 \ times7 \ times11 \ times ... \ times29 = 3234846615> 10 ^ 9、これは矛盾です。S | S | = 10 S 1 < g 1 < g 2 …

1
複数日の割り当て問題
割り当て問題に帰着できる問題があります。(前の質問で、その方法を見つけました。) つまり、エージェントのセットとタスクのセットT、およびコスト関数c (i 、j )があることを意味します。総コストが最小になるように割り当てを見つける必要があります。あAATTTc (i 、j )c(i,j)c(i,j) ハンガリーのアルゴリズムは、少なくともにおける最適解を見つけることができます。いいですね。O (n4)O(n4)O(n^4) 私の新しい問題は:与えられた日数があります。私は毎日の割り当て問題を解決する必要があるので、すべてのタスクが毎日実行され、エージェントが同じタスクを2回実行することはありません。 私が試した内容:ハンガリーのアルゴリズムを毎日個別に実行し、前日の結果に基づいて可能な組み合わせの数を制限できます。しかし、これにより、後日、実現可能な解決策を見つけることが不可能になる可能性が最も高いいくつかの日に問題が発生します。 別のアイデアは、ローカル検索を何らかの方法で統合して、前日に行われた決定を変更することです。でも、これに頼ることはできないと思います。 私が直面しなければならない問題のインスタンスはどこかにあります。コストマトリックスC (i 、j )には、同じ値が多数含まれます(たとえば、ほとんどが1または無限大で、2または3しかありません)。したがって、ハンガリーのアルゴリズムでは、1日のさまざまな最適解を作成するための多くのスペースがあります。| A | = | T| =500|A|=|T|=500|A| = |T| = 500C(私、j )C(i,j)C(i,j) 問題の適切な解決策を見つけるためのアイデアやアドバイスを喜んで提供します。前もって感謝します。

2
高速k不一致文字列マッチングアルゴリズム
高速なk不一致文字列マッチングアルゴリズムを探しています。長さmのパターン文字列Pと長さnのテキスト文字列Tが与えられた場合、Pが最大でk個の不一致を持つTの部分文字列と一致するすべての位置を見つけるための高速(線形時間)アルゴリズムが必要です。これは、k差問題(編集距離)とは異なります。不一致は、部分文字列とパターンの最大k個の位置に異なる文字があることを意味します。本当に必要なのはk = 1(最大で1つの不一致)だけなので、k = 1の特定のケースに対する高速アルゴリズムでも十分です。アルファベットのサイズは26(大文字と小文字を区別しない英語のテキスト)であるため、スペースの要件はアルファベットのサイズに比例して大きくなりすぎないようにする必要があります(たとえば、FAASTアルゴリズムは、アルファベットのサイズで指数関数的にスペースを取るなど)。タンパク質および遺伝子配列にのみ適しています)。 ダイナミックプログラミングベースのアプローチは、最悪の場合O(mn)になる傾向があり、遅くなります。私はこのためのボイヤー・ムーアアルゴリズムの変更があると信じていますが、私はそのような論文を手に入れることができません。私は学術雑誌や出版物にアクセスするためのサブスクリプションを持っていないので、すべての参照はパブリックドメインにある必要があります。 私は、ポインタ、または自由に入手できるドキュメントへの参照、またはこの問題のアルゴリズム自体に大いに感謝します。

1
編集距離計算のためのマイクロ最適化:それは有効ですか?
上ウィキペディア、編集距離のためのボトムアップの動的プログラミングスキームの実装が与えられています。それは完全に定義に従っていません。内部セルはこうして計算されます: if s[i] = t[j] then d[i, j] := d[i-1, j-1] // no operation required else d[i, j] := minimum ( d[i-1, j] + 1, // a deletion d[i, j-1] + 1, // an insertion d[i-1, j-1] + 1 // a substitution ) } ご覧のとおり、一致がある場合、アルゴリズムは常に左上隣から値を選択し、一部のメモリアクセス、ALU操作、および比較を保存します。 ただし、削除(または挿入)の結果、値が小さくなる可能性があるため、アルゴリズムはローカルで正しくありません。つまり、最適性の基準に違反しています。しかし、おそらく間違いは最終結果を変えない-それはキャンセルされるかもしれない。 このマイクロ最適化は有効ですか、そしてなぜ(そうではない)のでしょうか?

2
時間と空間の特定の数の決定(最悪の場合)
\newcommand\ldotd{\mathinner{..}}と仮定する整数であるようにすべてに対して、それぞれの出現特定の数を除く数は奇数です。発生が偶数である番号を見つけてください。A[1..n]A[1..n]A[1\ldotd n]0≤A[k]≤m0≤A[k]≤m0\le A[k]\le m1≤k≤n1≤k≤n1\le k\le nA[1..n]A[1..n]A[1\ldotd n] あり私たちはソート:アルゴリズムに、ブレーク要素の値がある多くの部分、には、同じため、各要素の出現回数を数えることができます。Θ(nlogn)Θ(nlog⁡n)\Theta(n\log n)A[1..n]A[1..n]A[1\ldotd n]B[1..n]B[1..n]B[1\ldotd n]B[1..n]B[1..n]B[1\ldotd n] 最悪の場合 -time-and- -spaceアルゴリズムを見つけたい。O(n)O(n)O(n)O(n)O(n)O(n) するとおよび、したがって、基数ソート許容されません。 ように、バイナリビット演算がます。m=Ω(n1+ϵ)m=Ω(n1+ϵ)m=\Omega(n^{1+\epsilon})ϵ>0ϵ>0\epsilon>0\DeclareMathOperator{\xor}{xor}A[1]xorA[2]A[1]xor⁡A[2]A[1]\xor A[2]

1
特定の文字列が文字列のコレクションとどの程度類似しているかを判断する
この質問がここにあるかどうかはわかりませんが、そうでない場合はお詫びします。私がやろうとしていることは、与えられた文字列が文字列のバッグに「属する」かどうかを確率論的に決定できるプログラム的な方法を開発することです。たとえば、10,000の米国の都市名のバッグがあり、「フィラデルフィア」という文字列がある場合、「フィラデルフィア」がすでに知っている米国の都市名に基づいて、米国の都市名である可能性を定量的に測定したいと思います。このコンテキストでは、実際の都市名と偽の都市名を区別できないことはわかっていますが、少なくとも、「123.75」や「速い赤狐が怠惰な茶色の犬を飛び越えた」などの文字列は除外されます。いくつかのしきい値。 開始するには、レーベンシュタイン距離を見て、それが少なくとも私が解決しようとしている問題と多少似ている問題にどのように適用されるかについて少し考えました。私が見つけた興味深いアプリケーションの1つは、盗作の検出でした。1つの論文では、変更されたSmith-WatermanアルゴリズムでLevenshtein距離がどのように使用され、特定のベースペーパーの盗聴されたバージョンである可能性に基づいて論文をスコア付けしました。私の質問は、誰かが私を助けるかもしれない他の確立されたアルゴリズムまたは方法論で私を正しい方向に向けることができるかどうかです。これは過去の誰かが解決しようとした問題かもしれないという感じがしますが、これまでのところ、Google-fuは失敗しました。

2
ポリゴンがラインに関して単調かどうかをテストするにはどうすればよいですか?
モノトーンポリゴンがポリゴンの三角形分割で重要な役割を果たすことはよく知られています。 定義: Aポリゴン平面では直線に関して単調と呼ばれるへのすべての行が直交する場合は、Lと交差P最も二回で。PPPLLLLLLPPP ラインLLLとポリゴンPが与えられたPPP場合、ポリゴンPPPがLに関して単調かどうかを判断する効率的なアルゴリズムはありLLLますか?

1
敵対的な引数を使用してk番目に小さい要素を見つけるための下限
多くのテキストでは、中央値を使用する引数を使用して、番目に小さい要素を見つけるための下限が導出されます。敵対的な議論を使用してどのように見つけることができますか?kkk ウィキペディアによると、トーナメントアルゴリズムはで実行され、は下限として与えられます。N - K + Σ N J = N + 2 - K ⌈ LGO(n+klogn)O(n+klog⁡n)O(n+k\log n)N - K + Σんj = n + 2 − k⌈ LGJ ⌉n−k+∑j=n+2−kn⌈lgj⌉n - k + \sum_{j = n+2-k}^{n} \lceil{\operatorname{lg}\, j}\rceil

1
Appelの隠線消去アルゴリズムの等高線を見つける方法
楽しみのために、私はDCPU-16のワイヤーフレームビューアーを作成しようとしています。ワイヤーフレームで非表示になっている線を非表示にする方法を除いて、すべての方法を理解しています。SOに関するすべての質問は、OpenGLへのアクセス権があることを前提としていますが、残念ながら、DCPU-16(またはあらゆる種類のハードウェアアクセラレーション)のようなものにはアクセスできません。 GoogleブックスでAppelのアルゴリズムについてかなり良い説明を見つけました。しかし、私が理解するのに苦労している1つの問題があります。 Appelは、前面と背面のポリゴンで共有されるエッジ、または閉じた多面体の一部ではない前面のポリゴンの共有されていないエッジとして輪郭線を定義しました。2つの前面ポリゴンで共有されるエッジは、可視性に変化を与えないため、等高線ではありません。図8.4では、エッジAB、EF、PC、GK、CHは等高線ですが、エッジED、DC、GIは等高線ではありません。 アルゴリズムのルールと、等高線が作成された後のアルゴリズムのしくみを理解していますが、エッジが「前向きポリゴンと後ろ向きポリゴンで共有されているかどうかを判断するために何をする必要があるかわかりません。コーディングの観点からは、閉じた多面体の一部ではない、正面を向いたポリゴンの共有されていないエッジ。私は形状を見ることができ、頭の中でどの線が等高線であるかを知ることができますが、その「理解」をコード化されたアルゴリズムに転送する方法についての手がかりはありません。 更新 等高線の決定にある程度の進歩がありました。コンピューターグラフィックスに関するバッファロー大学のクラスからのこれら 2つの講義ノートを見つけました。 エッジを考慮してください。これらは3つのカテゴリに分類されます。 2つの見えない面をつなぐエッジは、それ自体は見えません。これはリストから削除され、無視されます。 表示される可能性のある2つの面をつなぐエッジは「マテリアルエッジ」と呼ばれ、さらに処理する必要があります。 表示される可能性のある面と表示されない面を結ぶエッジは、「マテリアルエッジ」の特別なケースであり、「輪郭エッジ」とも呼ばれます。 上記の2つの情報を使用すると、これをコードとして書き出すことができるようになりますが、まだ長い道のりがあります。

1
制約プログラミングで、変数の変更の数を考慮に入れるモデルはありますか?
特定の変数の値を変更するとコストがかかるCSPモデルを考えてみます。目的関数が検索プロセス中に変数の値の変化の数も考慮する作業はありますか? 例:変更にコストがかかる変数が他のエージェントの制御下にある可能性があり、変数を変更するためにそのエージェントを関与させるオーバーヘッドがいくつかあります。別の例:変数は制約の1つに参加し、この制約の満足には、高価な関数(シミュレーターなど)の呼び出しが含まれます。たとえば、は制約で、は高価です。計算機能。したがって、とは変更が高価な変数です。z= f(x 、y)z=f(x,y)z = f(x, y)fffバツxxyyy

3
漸近表記の使用におけるエラー
次の再発の証拠で何が問題なのかを理解しようとしています T(N)≤2(C⌊NT(n)=2T(⌊n2⌋)+nT(n)=2T(⌊n2⌋)+n T(n) = 2\,T\!\left(\left\lfloor\frac{n}{2}\right\rfloor\right)+n T(n)≤2(c⌊n2⌋)+n≤cn+n=n(c+1)=O(n)T(n)≤2(c⌊n2⌋)+n≤cn+n=n(c+1)=O(n) T(n) \leq 2\left(c\left\lfloor\frac{n}{2}\right\rfloor\right)+n \leq cn+n = n(c+1) =O(n) という帰納的仮説があるため、ドキュメントには間違っていると記載されてい ます。T(n)≤cnT(n)≤cn T(n) \leq cn

1
文字列とCFGが与えられた場合、文字列の後に続くことができる文字(CFGの定型形式)は?
してみましょう、端末とのセットでNいくつかの文脈自由文法の非終端記号の集合G。ΣΣ\SigmaNNNGGG 私は文字列持っていると言うように、X 、A Y ∈ S(G )xは、yは∈ (Σ ∪ N )*およびS(Gは)のsentential形態であるG。a∈(Σ∪N)+a∈(Σ∪N)+a \in (\Sigma \cup N)^+xay∈S(G)xay∈S(G)x a y \in \mathcal{S}(G)x,y∈(Σ∪N)∗x,y∈(Σ∪N)∗x,y\in (\Sigma \cup N)^*S(G)S(G)\mathcal{S}(G)GGG 与えられた、Iセットを決定したいC = { B | W BをZ ∈ S(G )、B ∈ Σ ∪ N }を。GGGC= { b ∣ w a b z∈ S(G )、B ∈ Σ ∪ N}C={b∣wabz∈S(G),b∈Σ∪N}C …

2
この平方根境界検出アルゴリズムでループ不変量はどのように取得されますか?
もともとmath.SEにありましたが、そこには答えがありませんでした。 次のアルゴリズムを考えてみましょう。 u := 0 v := n+1; while ( (u + 1) is not equal to v) do x := (u + v) / 2; if ( x * x <= n) u := x; else v := x; end_if end_while ここで、u、v、およびnは整数であり、除算演算は整数除算です。 アルゴリズムによって計算されるものを説明します。 パートIに対する回答をアルゴリズムの事後条件として使用して、ループ不変式を確立し、アルゴリズムが終了して正しいことを示します。 クラスでは、事後条件があることが判明した及び不変である0 ≤ U 2 ≤ …

3
バイナリツリーが検索ツリーであるかどうかをテストし、完全なブランチをカウントするアルゴリズム
再帰的アルゴリズムを作成して、バイナリツリーがバイナリ検索ツリーであるかどうかを確認し、想定されるグローバルカウント変数を使用して、そこに完全なブランチがいくつあるか(左と右の両方の子ノードを持つ親ノード)を数える必要があります。これは私のデータ構造クラスの割り当てです。 これまでのところ void BST(tree T) { if (T == null) return if ( T.left and T.right) { if (T.left.data < T.data or T.right.data > T.data) { count = count + 1 BST(T.left) BST(T.right) } } } しかし、これを実際に理解することはできません。2番目のifステートメントがtrueでない場合、カウントはゼロになるため、このアルゴリズムは問題を解決しないことを知っています。 誰かがこれを手伝ってくれる?

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