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

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

4
人々がお互いにプレゼントを購入するためのショッピング旅行の最小数
nnn人のグループがあります。グループ内の誰にプレゼントを買わなければならないかというリストが与えられます。一人一人がプレゼントをいくつでも買う必要があるかもしれません。ショッピング旅行では、人々のサブセットが同じ店に一緒に旅行し、店にいない人のためにプレゼントを購入します。彼らは同じ買い物で他の人にプレゼントを買わないかもしれません。人は複数の買い物旅行に行くかもしれません。みんなが必要なプレゼントを買うのに必要な買い物の回数をできるだけ少なくしたい。 例として、5人でグループ内の他のすべての人にプレゼントを購入する必要がある場合を考えます。人に1から5までの番号を付けます。これは、次のように4回の買い物で行うことができます。 旅行1:1、2、3、買い物に行く 旅行2:1、4、5は買い物に行く 旅行3:2、4、買い物に行く 旅行4:3、5買い物に行く この問題を解決するにはどうすればよいですか?入力を有向グラフで表すことができるのは明らかですが、そこからどこに行くべきかわかりません。誰かがビクリクカバーの問題を提起しましたが、似ていますが、この質問には答えません。 入力はn個の頂点の有向グラフと考えることができます。ここで、エッジ(u 、v )は、人uが人vのプレゼントを購入する必要があることを意味します。目標はbicliquesのセットを見つけることである(S 1、T 1)、... 、(SのK、TがK)ように、kが最小であり、エッジ集合Eグラフのがのサブセットである∪ I(S I × T 私GGGnnn(u,v)(u,v)(u,v)uuuvvv(S1,T1),…,(Sk,Tk)(S1,T1),…,(Sk,Tk)(S_1,T_1),\dots,(S_k,T_k)kkkEEE∪i(Si×Ti)∪i(Si×Ti)\cup_i (S_i \times T_i)。また、ビクリクの定義を有向グラフに拡張すると、ビクリク(Si,Ti)(Si,Ti)(S_i,T_i)は、SiSiS_iをマッピングするエッジのみが含まれますTiTiT_i。bicliqueカバーの問題からこれ異なり、我々はの部分グラフであることを各bicliqueを必要としないという点で、GGG(私たちは必要ありませんSi×Ti⊆ESi×Ti⊆ES_i \times T_i \subseteq Eそれぞれのiii)。 具体的には、次のいずれかの答えを受け入れます。 この問題がNP困難または この質問に正確に答える多項式時間アルゴリズムを提示します(近似または上限なし) 記録としては、この問題はどこにも見られませんでした。私は自分の好奇心のためにそれについて疑問に思っています。

2
そこにあるポイントの数を最大にするボールを見つけるための複雑さ
x1,…,xn∈R2x1,…,xn∈R2x_1, \ldots, x_n \in \mathbb{R}^2rrrrrr∑ni=11∥x−xi∥≤r∑i=1n1‖x−xi‖≤r\sum_{i=1}^n \mathbb{1}_{\|x - x_i\| \leq r} ブルートフォースアルゴリズムは、すべてのポイントを調べて、よりも小さい距離にあるポイントの数を数えることです。それは複雑さを与えます。rrrO(n2)O(n2)\mathcal{O}(n^2) より良いアプローチはありますか?

1
Earley Parserは、DFAのLevenshtein Automata Algoのようなファジーパーサーにできますか?
DFAと実行時に入力された単語のLevenshtein Automataを実行して、あいまいな解析を実行する方法があります(タイプミスがある場合でも文字列を受け入れます)。Earleyパーサーでも同様のことができますか?アルゴリズムを理解するのは難しいと思います。この質問に答えることは言うまでもありません。

2
この組み合わせ最適化の問題は、既知の問題と似ていますか?
問題は次のとおりです。 2次元の配列/数値のグリッドがあり、それぞれが「利益」または「利益」を表します。また、2つの固定整数とh(「幅」と「高さ」)と、固定整数nもあります。wwwhhhnnn ここで、これらの長方形のセルの値の合計が最大になるように、グリッドに次元w × hの長方形をオーバーレイします。nnnw×hw×hw \times h 次の図は、そのような2つの長方形が上に重ねられた2次元グリッドの例です(この図は、最適なソリューションを示していませんおよびn = 2の 1つの可能な重ね合わせのみです)。w=h=2w=h=2w = h = 2n=2n=2n = 2 長方形は交差できません(そうでなければ、1つの長方形の最適な位置を見つけて、すべての長方形をその位置に配置するだけで済みます)。 上記の例では、セルの値の合計は−2+4.2+2.4+3.14+2.3−1.4+1−3.1−2+4.2+2.4+3.14+2.3−1.4+1−3.1-2 + 4.2 + 2.4 + 3.14 + 2.3 -1.4 + 1 - 3.1 これは、組み合わせ最適化の既知の問題に似ていますか?読書を始めて、それを解決する方法を見つけることができるように。 興味のある人のためのいくつかの背景: これまでのところ、私が持っていた唯一のアイデアは、貪欲なアルゴリズム(最初の四角形の最適な場所を見つけ、次に2番目の四角形の重複しない場所を見つけるなど)または遺伝的アルゴリズムなどのメタヒューリスティックです。 実際には、約100万のセルと数万(または数十万)の長方形を持つグリッドでこの問題を解決したいと考えていますが、短時間で解決する必要はありません(つまり、アルゴリズムは数時間または数日かかる場合があります。)正確な解決策を期待していませんが、これらの制約を考慮して、可能な限り優れた解決策を求めています。 乾杯!

4
異なる棒から同じ棒を切る
あなたは持っている必ずしも不可欠ではない任意の長さの棒を、。nnn いくつかのスティックをカットすることで(1つのカットは1つのスティックをカットしますが、何度でもカットできます)、次のようなスティックを取得します。k&lt;nk&lt;nk<n これらのスティックはすべて同じ長さです。kkk すべてのスティックは、少なくとも他のすべてのスティックと同じ長さです。kkk カットを実行した後、スティックを取得することに注意してください。n+Cn+Cn + CCCC 必要なカットの数が最小限になるように、どのアルゴリズムを使用しますか?そして、その数は何ですか? 例として、と任意の考えます。次のアルゴリズムを使用できます。k=2k=2k=2n≥2n≥2n\geq 2 となるような長さの降順でスティックを並べます。L1≥L2≥…≥LnL1≥L2≥…≥LnL_1\geq L_2 \geq \ldots \geq L_n もしその後、カットスティック2等分に#1。長さ本の棒があり、少なくとも残りの棒同じ長さです。L1≥2L2L1≥2L2L_1\geq 2 L_2L1/2L1/2L_1 / 22…n2…n2 \ldots n それ以外の場合()、スティック#1を2つの等しくないサイズおよびます。これで、長さ 2つの棒があり、より長く、他の棒はです。L1&lt;2L2L1&lt;2L2L_1 < 2 L_2L2L2L_2L1−L2L1−L2L_1-L_2L2L2L_2L1− L2L1−L2L_1-L_23 … n3…n3 \ldots n どちらの場合も、1回のカットで十分です。 これをより大きなに一般化しようとしましたが、考慮すべき多くのケースがあるようです。エレガントなソリューションを見つけることができますか?kkk

1
最長のフィボナッチ部分文字列を見つけるための単純なアルゴリズムの複雑さ
2つの記号と与えられた場合、番目のフィボナッチ文字列を次のように定義してみましょう:aa\text{a}bb\text{b}kkk F(k)=⎧⎩⎨baF(k−1)⋆F(k−2)if k=0if k=1elseF(k)={bif k=0aif k=1F(k−1)⋆F(k−2)else F(k) = \begin{cases} \text{b} &\mbox{if } k = 0 \\ \text{a} &\mbox{if } k = 1 \\ F(k-1) \star F(k-2) &\mbox{else} \end{cases} 文字列の連結を示します。⋆⋆\star したがって、次のようになります。 F(0)=bF(0)=bF(0) = \text{b} F(1)=aF(1)=aF(1) = \text{a} F(2)=F(1)⋆F(0)=abF(2)=F(1)⋆F(0)=abF(2) = F(1) \star F(0) = \text{ab} F(3)=F(2)⋆F(1)=abaF(3)=F(2)⋆F(1)=abaF(3) = F(2) \star F(1) = \text{aba} …

3
フェルマー素数検定の代わりにミラーラビンが選ばれるのはなぜですか?
Miller-Rabinの証明から、数値がFermat素数性検定に合格した場合、同じ基数(証明の変数)でMiller-Rabin検定にも合格する必要があります。そして、計算の複雑さは同じです。aaa 以下は、Fermat素数テストからのものです。 カーマイケル数は素数よりもかなりまれですが、1フェルマーの素数検定が上記の形式で使用されないことが多いので十分です。代わりに、Baillie-PSW、Miller-Rabin、Solovay-Strassenなど、Fermatテストの他のより強力な拡張機能がより一般的に使用されます。 Miller-Rabinの利点は何ですか?なぜそれがFermat素数テストよりも強力であると言われているのですか?

1
線形計画法の強力な双対定理の短くて滑らかな証明
線形計画を考える Primal:Ax⃗ ≤b⃗ maxc⃗ Tx⃗ Primal:Ax→≤b→maxc→Tx→\begin{array}{|ccc|} \hline Primal: & A\vec{x} \leq \vec{b} \hspace{.5cm} & \max \vec{c}^T\vec{x} \\ \hline \end{array} Dual:c⃗ ≤y⃗ TAminy⃗ Tb⃗ Dual:c→≤y→TAminy→Tb→\begin{array}{|ccc|} \hline Dual: & \vec{c} \leq \vec{y}^TA \hspace{.5cm} & \min \vec{y}^T\vec{b} \\ \hline \end{array} 弱い双対定理は、とが制約を満たす場合、 あると述べています。線形代数を使用した簡潔で洗練された証明があります: 。x⃗ x→\vec{x}y⃗ y→\vec{y}c⃗ Tx⃗ ≤y⃗ Tb⃗ c→Tx→≤y→Tb→\vec{c}^T\vec{x} \leq \vec{y}^T\vec{b}c⃗ Tx⃗ ≤y⃗ …

3
配線長の最小化
私の問題は次のとおりです: 物理的なレイアウトをグラフで表示しています。ノードはワイヤーが固定できるフック/ダクトを表し、エッジはワイヤーが行くことができる2つのノード間の可能な接続です。 スプリッターと呼ばれるいくつかの特別なノードがあり、そこから1本のワイヤーを2つ以上kに分割できます。kは今のところ一定とすることができますが、ノードごとに異なります。すべてのノードがスプリッターであるとは限りません。 ワイヤーが出てくるところから電源の1つがあります。ソースです。ワイヤーはn個のシンクに接続する必要があります。 エッジは、任意の数のワイヤーをいずれかの方向に通過できます。 ワイヤーの全長を最小化する必要があります。 グラフ、平面またはユークリッドの性質は不明です。 例:以下はサンプルネットワークです。ノードには番号が付けられ、エッジには同じ重み1が付けられます。ソースはNode1、シンクはNode5、Node9、Node13です。1の場合、Node6はスプリッターノードです。2の場合、Node6とNode4はスプリッターノードです。スプリッターノードのk = 3、つまり、1つのワイヤーを取り込んで3つのワイヤーに分割できます。 事例1。1つのスプリッターノードのみ。Node6で分割することは理にかなっています。 事例2。2つのスプリッターノード。Node6ではなくNode4で分割することは理にかなっています。 この問題の一般的な解決策を見つけるためのさまざまな戦略を探しています。ここに示すグラフは、手元にある問題に比べてスケールが小さくなっています。グラフは静的で変更できません(つまり、ソリューションが新しいエッジを提案したり、新しいスプリッターの場所を提案したりしてはなりません)。この種の問題について発表された研究論文への言及も歓迎します。 事例3。2つのスプリッターノード。Node4とNode14で分割することは理にかなっています。このケースでは、エッジ8-12、6-10、および10-11のエッジの重みが変更されていることに注意してください。この場合の重要なことは、Node14から分割された後のワイヤーの再トレースです。

4
低次の項が実際の入力のランタイムを支配するアルゴリズムの例?
Big-O表記は一定の因子を隠しているため、項の係数が非常に大きいため、妥当な入力サイズでは実行できないアルゴリズムがいくつか存在します。nO(n)O(n)O(n)nnn ランタイムがである既知のアルゴリズムはありますが、低次項が非常に大きく、妥当な入力サイズの場合、ランタイムが完全に支配されますか?このようなアルゴリズムをアルゴリズムコースの例として使用したいと思います。これは、big-O表記がすべてではないという正当な理由を与えるからです。o (f (n ))O(f(n))O(f(n))O(f(n))o(f(n))o(f(n))o(f(n)) ありがとう!

3
n個の項目をテストするとき、すべてのtサブセットを可能な限り少数のsサブセットでカバーするにはどうすればよいですか?
この問題は、ソフトウェアのテストから発生しました。問題を説明するのは少し難しいです。最初に例を示し、次に問題を一般化してみます。 AからJまでの10項目のテストがあり、同時に3項目をテストできるテストツールがあります。テストツール内のアイテムの順序は関係ありません。もちろん、徹底的なテストを行うには、アイテムの組み合わせが必要です。10C310C3^{10}C_{3} 問題はより複雑です。追加の条件として、1組のアイテムを一緒にテストすると、同じペアを再度テストする必要がなくなるという条件があります。 たとえば、次の3つのテストを実行するとします。 ABC ADE BDF 実行する必要はありません: ABD ペアA、Bは最初のテストケースでカバーされ、A、Dは2番目のテストケースでカバーされ、B、Dは3番目のテストケースでカバーされたためです。 それで問題は、すべてのペアがテストされることを保証するために必要なテストケースの最小数は何ですか? 一般化するために、n個のアイテムがある場合、sを同時にテストでき、可能なすべてのtタプル(s&gt; tなど)をテストする必要があります。これは、必要なテストケースの最小数です。 n、s、tの項? そして最後に、必要なテストケースを生成するための良いアルゴリズムは何でしょうか?


2
どのようにして、0と1の数が等しいすべてのバイナリシーケンスを効率的に生成しますか?
バイナリシーケンスの長さだけ順序付けられたシーケンスである各ようにのいずれかであるまたは。このようなすべてのバイナリシーケンスを生成するには、次の方法で明らかなバイナリツリー構造を使用できます。ルートは「空」ですが、左の子はそれぞれ既存の文字列にを追加し、右の子を追加し。ここで、各バイナリシーケンスは、ルートで始まり、リーフで終わる長さパスです。x 1、… 、x n x j 0 1 0 1 n + 1nnnx1,…,xnx1,…,xnx_1,\ldots,x_nxjxjx_j000111000111n+1n+1n+1 これが私の質問です: 正確にゼロと 1 を持つ、長さすべてのバイナリ文字列のみを生成したい場合は、もっと良いことはありますか?n n2n2n2nnnnnnn 「もっと上手くできるか」ということは、最初に上のツリー全体を構築し、次に「左」と「右」のエッジの数が等しいパスを見つけようとする愚かなアルゴリズムよりも複雑さを低くする必要があることを意味します。

1
ペブル問題
Pebblingは、無向グラフでプレイされるソリティアゲームで、各頂点には0個以上の小石があります。単一の小石の移動は、頂点vから2つの小石を削除し、1つの小石をvの任意の隣接に追加することで構成されます。(明らかに、頂点vは移動前に少なくとも2つの小石を持っている必要があります。)PebbleDestruction問題は、シーケンスがあるかどうか、各頂点vのグラフG = (V ; E )と小石カウントp (v )が与えられると尋ねます1つを除くすべての小石を削除する小石の動きの。PebbleDestructionがNP完全であることを証明します。GGGvvvvvvG=(V;E)G=(V;E)G = ( V; E )p(v)p(v)p ( v )vvv まず、多項式時間で解を検証できるので、それがNPであることを示します。1つの小石から小石の数をさかのぼって追跡できます。 次に、多項式時間削減の基礎としてどの問題を使用するかについてのアイデアは何ですか? 頂点カバーのようなものは機能しますか?または異なるサイズの頂点カバー? もしそうなら、それはどのように各移動で小石のさまざまな数を処理できますか? ありがとうございました。 From:http : //courses.engr.illinois.edu/cs473/sp2011/hw/disc/disc_14.pdf

1
コードグラフ与えられた場合、簡約クリークグラフの計算の複雑さはどのですか?
グラフは、長さが以上のサイクルを引き起こさない場合、弦です。クリークツリーのツリーの頂点の最大クリークされた木である。のエッジは最小のセパレーターに対応します。別個のクリークツリーの数は、コードグラフの頂点の数で指数関数的になる可能性があります。GGG444TTTGGGGGGTTT 減少クリークグラフ 、すべてのクリーク木の組合である。つまり、すべて同じ頂点とすべての可能なエッジがあります。与えられたを計算する複雑さは何ですか?Cr(G)Cr(G)C_r(G)GGGCr(G)Cr(G)C_r(G)GGG が証明なしで時間で計算できると主張するプレゼンテーションを見たことがあります。これは、クリークツリーを計算するのと同じくらい簡単であることを意味します。これを確認する、またはそれを計算するためのより遅いアルゴリズムを与えるリファレンスはありますか?Cr(G)Cr(G)C_r(G)O(m+n)O(m+n)O(m+n)GGG

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