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

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

1
Brzozowskiのアルゴリズムの実装に関する問題
私はBrzozowskiのアルゴリズムを実装しようとしましたが、それが特定のクラスの入力に対して次善のオートマトンを作成し、結果に実際に必要なものよりも1つ多い状態があることを発見しました。自明なオートマトンでそれを示すことができます: a b a b a b a b a b >0 0 1 rev *0 0,2 - det >0 - 1 rev *0 - - det >0 1 2 1 1 2 --> 1 1 0 --> 1 2 5 --> 1 - 0,4 --> 1 1 2 *2 …

2
有向グラフで指定された2つの頂点間の単純なパスで頂点を見つける方法
有向グラフと2つの異なる頂点SおよびTが与えられた場合、SからTへの少なくとも1つの単純なパス上にあるすべての頂点を見つける多項式時間アルゴリズムはありますか? Sの後継でありTの先行でもあるすべての頂点を見つけることは難しくありませんが、これは上記のセットのスーパーセットにすぎません。たとえば、次のグラフについて考えてみます。S-> a; a-> b; b-> c; b-> T; c-> a a、b、cはすべてSの後継でTの前身ですが、SからTへcを通過する単純なパスはありません(cを経由するSからTへのすべてのパスには2回のaとbが含まれるため)。 密接に関連する問題は次のとおりです。有向グラフと3つの異なる頂点SおよびTとIが与えられた場合、SからTへの単純なパスがIを通過するかどうかを決定する多項式時間アルゴリズムがあります。 この後者の問題に対する多項式時間アルゴリズムは、前者に多項式アルゴリズムを構築するために使用できます。これは、Iをグラフ内のすべてのノードで置き換えることによって連続的に適用できるため(または、Sの後続ノードであるすべてのノードに対してより効率的にTの前身)。

3
フォレスト内のすべてのノードの高さを見つける
私にはフォレスト、つまり有向エッジがあり、サイクルがない(有向または無向)ノードがあります。頂点高さを、vvv入力エッジがない場合は0として定義するか、高さ0の頂点に到達するために逆方向に移動するエッジの最大数を定義します。 また、ノードの平均次数は小さな定数、たとえば2程度であることも知っています。すべての頂点の高さを見つけるには、2つのアルゴリズムを考えることができます。 歩行アルゴリズム 入力エッジのない頂点について、とマークしh = 0h=0h=0ます。 各頂点について、出て行くエッジをたどり、以前の高さがより小さければ、遭遇した各頂点の高さを更新します。h = 0h=0h=0 フロンティアアルゴリズム 通過マークのない着信エッジを持つ頂点の、およびフロンティアとしてこれらをマークします。h = 0h=0h=0 すべてのフロンティア頂点について、親がフロンティア以下に子を持っているかどうかを確認します。もしそうであれば、親に加え、その子の中で最大の高さがあることをマークします。親がフロンティアにいるとマークします。111 フロンティアを超えるものがなくなるまで、2を繰り返します。 私の質問: この問題に名前はありますか、そして最もよく知られている最速の解決策はありますか? 私はすべての頂点から単に上に行くことが最も速い解決策であると考える傾向があります。私は正しいですか?h = 0h=0h=0

1
高速なコンピューターと低速なコンピューターを考えると、低速アルゴリズムを実行する高速コンピューターは、高速アルゴリズムを実行する低速コンピューターよりもどのくらいのサイズになりますか?
この質問の出典は、私が受講している学部課程から来ています。これは、アルゴリズムの分析の概要をカバーしています。これは宿題ではなく、CLRSで質問されます。 MIPSで実行されている低速マシンとy MIPSで実行されている高速マシンがあります。また、同じクラスで実行時間の複雑さが異なる2つのアルゴリズムがあります。1つの「低速」アルゴリズムはT (n )= c 1 n 2で実行され、「高速」アルゴリズムはT (n )= c 2 n log nで実行されます。。xxxyyyT(n)=c1n2T(n)=c1n2T(n) = c_1n^2T(n)=c2nlognT(n)=c2nlog⁡nT(n) = c_2n \log n 高速アルゴリズムは低速マシンで実行し、高速アルゴリズムは低速マシンで実行します。低速アルゴリズムを実行する高速マシンが高速アルゴリズムを実行する低速マシンに勝るようなnの最大値はいくつですか? これまでの私の解決策: すべてのnのセットを見つけるnnnc 2 n log nとなるような nは自然数です。c2nlognx>c1n2yc2nlog⁡nx>c1n2y\frac{c_2n\log n}{x} > \frac{c_1n^2}{y}nnn これはこれまでのところ私の仕事です: {n:c2nlog2nx>c1n2y,n∈N}={n:n<c2yc1xlog2n,n∈N}{n:c2nlog2⁡nx>c1n2y,n∈N}={n:n<c2yc1xlog2⁡n,n∈N}\{n : \frac{c_2 n \log_2 n}{x} > \frac{c_1 n^2}{y}, n \in \mathbb{N}\} = \{n : n …

4
大きなデータにアルゴリズムを適用する
大きなデータ(つまり、メインメモリに完全にロードできないデータ)に一般的なアルゴリズム(並べ替え、検索など)を効率的に適用する方法と、それらのアルゴリズムのコストを考慮してアルゴリズムを効率的に適用する方法を教える本またはチュートリアルはありますか?外部メモリからのブロック転送?たとえば、ほとんどすべてのアルゴリズムの教科書では、BおよびB +ツリーを使用してデータをディスクに格納できるとされています。ただし、実際にこれを行う方法、特にデータがディスク上に存在する場合のポインタの処理については説明されていません。同様に、多くの本は検索技術を教えていますが、二次記憶に存在するデータを考慮していません。 クヌースの本をチェックしました。これらのアイデアについて説明していますが、実際にそれらを高級言語に適用する方法はまだわかりませんでした。これらの詳細について説明している参考資料はありますか?

2
暫定的な充足可能性アルゴリズム
一般的な充足可能性(ホーン句などのいくつかの例外を除く)には、アルゴリズムによる解決策があるとは考えられていません。ただし、次のアルゴリズムは一般的な充足可能性の解決策のようです。次のアルゴリズムの欠陥は何ですか? してみましょう必ずしも真または偽でなければならないすべての変数が含まれています空のセットも。WWW してみましょう節の集合とします。LLL ループします。LLL 非条件変数†が見つかるたびに、それをから削除して挿入し。WLLLWWW この葉空の含意場合‡からその空の意味合いですべての変数を削除と挿入。WLLLWWW この葉空または暗示する場合‡、含意がある場合意味合い(つまり、1つの変数を持つところ、各インスタンスのお得な情報、アルゴリズムの新しいインスタンスを作成します。、1つのインスタンス作成挿入され、1をここで、は挿入され、とは挿入され。x W y Wx V⟹yxV⟹yx V \implies yバツxxWWWyyyWWWy WバツxxyyyWWW すべての変数を、必要な値に設定します。WWW 変数再度挿入中でその変更した値で、すべての句が満たされているかどうかを確認。LWWWLLL 充足可能性が満たされている場合はを返し、それ以外の場合は「満たされていない」を返します。LLL †非条件変数は、真または偽である必要がある変数として定義されます。たとえば、またはです。⟹バツ⟹x\implies x⟹¬ Y⟹¬y\implies \neg y ‡空の含意は、片側が空である含意(例:)または反対側が必然的に真である(例:)として定義されます。T R U E ∨ A⟹X ∧ Y⟹x∧y\implies x \wedge yT R U E ∨A⟹btrue∨a⟹b\mathrm{true} \vee a \implies b アルゴリズムをより直感的に理解するために、以下の一連の節検討してください。LLL ∧ Bff∨ A⟹c⟹f∧ グラム⟹¬ A⟹b⟹c(私)(ii)(iii)(iv)(v)a∧b⟹c(i)⟹f∧g(ii)f⟹¬a(iii)f∨a⟹b(iv)⟹c(v)\begin{align} a \wedge …

2
巡回セールスマン問題ポリトープの既知の側面
ブランチアンドカット法では、問題によって生成されるポリトープの多くの側面を知ることが不可欠です。ただし、ポリトープのサイズが急速に大きくなるにつれて、そのようなポリトープのすべてのファセットを実際に計算することは、現在、最も難しい問題の1つです。 任意の最適化問題の場合、ブランチアンドカットまたはカットプレーンメソッドによって使用されるポリトープは、すべての実行可能な頂点の凸包です。頂点は、モデルのすべての変数の割り当てです。(非常に単純な)例として:一方が最大になる場合2 ⋅ X + Y2⋅バツ+y2\cdot x+y ST x + y≤ 1バツ+y≤1x+y \leq 1と0 ≤ X 、Y≤ 1.50≤バツ、y≤1.50\leq x,y\leq 1.5次に頂点(0 、0 )(0、0)(0,0)、(0 、1 )(0、1)(0,1)と(1 、0 )(1、0)(1,0)実行可能な頂点です。(1 、1 )(1、1)(1,1)の不等式違反したがって、実現可能ではありません。(組み合わせ)最適化の問題は、実行可能な頂点の中から選択することです。(この場合、明らかにが最適です)。これらの頂点の凸包は、まさにこれら3つの頂点を持つ三角形です。この単純なポリトープのファセットは、、およびx + y \ leq 1です。ファセットを介した説明は、モデルよりも正確であることに注意してください。TSPなどのほとんどの難しい問題では、ファセットの数がモデルの不等式の数を数桁超えます。(1 、0 )のx ≥ 0 、Y ≥ 0 、X + Y ≤ 1x + y≤ 1.5バツ+y≤1.5x+y\leq 1.5(1 、0 …

5
応用グラフ理論の標準またはトップテキスト
応用グラフ理論とグラフアルゴリズムに関する参考テキストを探しています。ほとんどのコンピュータサイエンスプログラムで使用されている標準テキストはありますか?そうでない場合、フィールドで最も尊敬されているテキストは何ですか?私はコーメン他を持っています。

2
最適な通貨単位を見つけるアルゴリズム
マークは物事を過剰に考える傾向がある人々が住む小さな国に住んでいます。ある日、国の王は、変更をより効率的にするために国の通貨を再設計することを決定しました。王は、最小の紙幣の金額まで(ただし含まない)の金額を正確に支払うために必要なコインの予想数を最小限に抑えたいと考えています。 通貨の最小単位がコインであるとします。王国で最小の紙幣はコインの価値があります。王は、流通しているコインの金種が超えてはならないと決定しました。次に、問題は、を最小化するから整数のセットを見つけることは。んnnメートルmmメートルmm{d1、d2、。。。、dメートル}{d1,d2,...,dm}\{d_1, d_2, ..., d_m\}{ 1 、2 、。。。、n − 1 }{1,2,...,n−1}\{1, 2, ..., n - 1\}1n − 1Σn − 1i = 1c1(i )+c2(i )+ 。。。+cメートル(私)1n−1∑i=1n−1c1(i)+c2(i)+...+cm(i)\frac{1}{n-1}\sum_{i = 1}^{n-1}{c_1(i) + c_2(i) + ... + c_m(i)}c1(私)d1+c2(私)d2+ 。。。cメートル(私)dメートル= ic1(i)d1+c2(i)d2+...cm(i)dm=ic_1(i)d_1 + c_2(i)d_2 + ... c_m(i)d_m = i たとえば、標準のUSDとそのコインの金額をます。ここでは、最小の紙幣は最小のコインの100の価値があります。この通貨を使用して46セントを作るには4コインが必要です。我々は。ただし、コインの額面が場合、3つのコインのみが必要になります:。これらの金種セットのうち、99セントまでの合計を作るためにコインの平均数を最小化するものはどれですか。{ 1 、5 、10 、25 、50 }{1,5,10,25,50}\{1, 5, …

1
スタックの順序を検出する方法は?
整数のシーケンスを 111 に んんn、順番に1つずつスタックにプッシュします。各プッシュの間に、スタックから任意の数のアイテムをポップすることを選択できます(0から現在のスタックサイズまで)。 スタックから値をポップするたびに、それを出力します。 例えば、 1 、2 、31、2、31,2,3するとプリントアウトされますpush, pop, push, pop, push, pop。3 、2 、13、2、13,2,1から来ていpush, push, push, pop, pop, popます。 しかしながら、 3 、1 、23、1、23,1,2 することができないため、可能なプリントアウトではありません 333 印刷された後に 111、見ずに 222 間に。 質問:次のような不可能な注文をどのように検出できますか?3 、1 、23、1、23,1,2? 実際、私の観察に基づいて、私は潜在的な解決策を見つけました。しかし問題は私が私の観察が完全であることを証明できないことです。 私が次のロジックで書いたプログラム: 現在の値から次の値を差し引いた値が1より大きい場合、現在と次の間の値は次の後に表示できません。たとえば、current = 3およびnext = 1の場合、current(3)とnext(1)の間の値は2であり、next(1)の後には表示されないため、3 、1 、23、1、23,1,2 ルールに違反しています。 これはすべてのケースをカバーしますか?

2
一連の個別の選択肢の全体的な変動を最小限に抑える
私のセットアップは次のようなものです:一連の整数のセットがあります C私(1 ≤ I ≤ N )Ci(1≤i≤n)C_i (1\leq i\leq n)、 |C私||Ci||C_i| 比較的小さい-すべてのアイテムで約4または5アイテム 私ii。シーケンスを選びたいバツ私(1 ≤ I ≤ N )xi(1≤i≤n)x_i (1\leq i\leq n) それぞれと バツ私∈C私xi∈Cix_i\in C_i 合計のバリエーション( ℓ1ℓ1\ell_1 または ℓ2ℓ2\ell_2、すなわち Σn − 1i = 1|バツ私−バツi + 1|∑i=1n−1|xi−xi+1|\sum_{i=1}^{n-1} |x_i-x_{i+1}| または Σn − 1i = 1(バツ私−バツi + 1)2∑i=1n−1(xi−xi+1)2\sum_{i=1}^{n-1} \left(x_i-x_{i+1}\right)^2)が最小化されます。それぞれの選択のようですがバツ私xix_i が「ローカル」である場合、問題は選択が伝播して非ローカルな影響を与える可能性があるため、問題は本質的にグローバルなものであるように見えます。 私の主な関心事は、問題の実用的なアルゴリズムです。現在、短いサブシーケンスの変異に基づいたアニーリングメソッドを使用しています。これらは大丈夫なはずですが、もっとうまくできるはずです。しかし、私は抽象的な複雑さにも興味があります—私の直感は、標準のクエリバージョン( '全体的なバリエーションのソリューションがあるか)≤ K≤k\leq k? …

1
CLRS-Maxflow Augmented Flow Lemma 26.1-defの使用を理解していません。証明で
コーメンら al。、Introduction to Algorithms(3rd ed。)、私は補題26.1の証明で、拡張されたフローはフローであり、st | f \ uparrow f'であることを示す行を取得しません。| = | f | + | f '| (これはpp。717-718です)。f↑f′f↑f′f\uparrow f'GGG|f↑f′|=|f|+|f′||f↑f′|=|f|+|f′||f\uparrow f'| =|f|+|f'| 私の混乱:フロー保護について議論するとき、最初の行でf \ uparrow f 'の定義を使用しf↑f′f↑f′f\uparrow f'て、各u∈V∖{s,t}u∈V∖{s,t}u\in V\setminus\{s,t\} ∑v∈V(f↑f′)(u,v)=∑v∈V(f(u,v)+f′(u,v)−f′(v,u)),∑v∈V(f↑f′)(u,v)=∑v∈V(f(u,v)+f′(u,v)−f′(v,u)), \sum_{v\in V} (f\uparrow f')(u,v) = \sum_{v\in V} (f(u,v)+f'(u,v) - f'(v,u)), ここで、拡張パスは次のように定義されています (f↑f′)(u,v)={f(u,v)+f′(u,v)−f′(v,u)0if (u,v)∈E,otherwise.(f↑f′)(u,v)={f(u,v)+f′(u,v)−f′(v,u)if (u,v)∈E,0otherwise. (f\uparrow f')(u,v) = \begin{cases} f(u,v)+f'(u,v) - …

2
xorがゼロになるようにシーケンスに追加するために必要な最小数を見つけるにはどうすればよいですか
自然数のシーケンスを指定すると、xorがゼロになるように、シーケンス内の任意の数に任意の自然数を追加できます。私の目標は、追加された数値の合計を最小化することです。 次の例を検討してください。 ために 1,31,31, 3答えはです。を追加すると、ます。2222221113⊕3=03⊕3=03 \oplus 3=0 以下のために答えは。からおよびからを追加すると、ます。10,4,5,110,4,5,110, 4, 5, 166633310101033355513⊕4⊕8⊕1=013⊕4⊕8⊕1=013 \oplus 4 \oplus 8 \oplus 1 = 0 答えは以来、。4,44,44, 40004⊕4=04⊕4=04 \oplus 4 = 0 シーケンス番号のバイナリ表現に取り組んでみましたが、非常に複雑になりました。この問題を解決する簡単で効率的な方法があるかどうか知りたい。


2
2次元および3次元ナップザックのアルゴリズム
2Dと3Dのナップザックの問題はNPCであることはわかっていますが、インスタンスがそれほど複雑でない場合、妥当な時間内にそれらを解決する方法はありますか?動的プログラミングは機能しますか? 2D(3D)ナップザックとは、正方形(立方体)とオブジェクトのリストがあることを意味します。すべてのデータはセンチメートル単位で、最大20mです。

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