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

各ステップでローカルに最適な選択を行うアルゴリズムに関する質問。

2
欲張りアルゴリズムが正しいことを証明する方法
私は正しいと思われる貪欲なアルゴリズムを持っていますが、よくわかりません。正しいかどうかを確認するにはどうすればよいですか?貪欲なアルゴリズムが正しいことを証明するために使用するテクニックは何ですか?一般的なパターンやテクニックはありますか? これが参考質問になることを願っています初心者に向けられるしています。したがって、通常よりも広い範囲です。少なくとも1つの例で説明されているが、多くの状況をカバーする、一般的で教訓的に提示された答えを与えるように注意してください。ありがとう!

1
貪欲なアルゴリズムはいつコイン交換の問題を解決できますか?
異なる金種および値v のコインのセットが与えられた場合、値vを表すのに必要な最小数のコインを見つけたいと考えます。C 1 、。。。、c nc1,...,cnc1, ... , cn たとえば、コインセット1,5,10,20の場合、合計6の場合は2コイン、合計19の場合は6コインになります。 私の主な質問は、この問題を解決するために貪欲な戦略をいつ使用できるかということです。 ボーナスポイント:この文は明らかに間違っていますか?(From:最小コイン変更問題に対して貪欲なアルゴリズムで十分かどうかを見分ける方法は?) ただし、この論文では、欲張りアルゴリズムが最初の最大値と2番目に大きい値に対して機能する場合、それらすべてに対して機能するという証拠があり、それをチェックするために欲張りアルゴリズムと最適なDPアルゴリズムを使用することを提案します。 http://www.cs.cornell.edu/~kozen/papers/change.pdf 追伸 そのスレッドの答えは信じられないほどぎこちないことに注意してください。そのため、私は新たに質問をしました。

1
アルゴリズム設計におけるマトロイドとグリードイドはどのくらい基本的ですか?
当初、マトロイドは、いくつかのグラウンドセットIに対するサブセットコレクションの線形独立性の概念を一般化するために導入されました。この構造を含む特定の問題により、貪欲なアルゴリズムが最適なソリューションを見つけることができます。欲張り法によって最適な解決策を見つけることを可能にするより多くの問題を捕捉するために、この構造を一般化するために、後にグリードイドの概念が導入されました。EEEIII これらの構造は、アルゴリズム設計でどのくらいの頻度で発生しますか? さらに、多くの場合、貪欲なアルゴリズムでは最適なソリューションを見つけるために必要なものを完全にキャプチャすることはできませんが、それでも非常に優れた近似ソリューションを見つけることができます(たとえば、Bin Packing)。それを考えると、問題がグリードイドまたはマトロイドにどれだけ「近い」かを測定する方法はありますか?

4
欲張りアルゴリズムを使用して、指定されたシーケンスに最も近い非減少シーケンスを見つける方法は?
n個の整数すべてと間で与えられます。各整数下に、からまでの整数を書き込む必要がありますが非減少シーケンスを形成するという要件があります。そのようなシーケンスの偏差を定義します。実行時O(n \ sqrt [4] {l})で最小偏差を持つb_iを見つけるアルゴリズムを設計します。a1、… 、ana1,…,ana_1, \ldots, a_n000llla私aia_ib私bib_i000lllb私bib_iB I O (nは4 √最大(| a1− b1| 、…、 | an− bn| )max(|a1−b1|,…,|an−bn|)\max(|a_1-b_1|, \ldots, |a_n-b_n|)b私bib_iO (n l√4)O(nl4)O(n\sqrt[4]{l}) 正直に言って、この問題を解決する方法すら全くわかりません。動的プログラミングの質問のように見えますが、教授は貪欲なアルゴリズムを使用してこれを解決する必要があると言いました。誰かが小さなヒントを与えることで私を正しい方向に向けることができれば幸いです。

2
木の頂点の最小カバーのための欲張りアルゴリズムの正当性証明
DFSトラバーサルを使用するツリーの最小頂点カバーを見つけるための貪欲なアルゴリズムがあります。 ツリーの葉ごとに、その親を選択します(つまり、その親は最小の頂点カバー内にあります)。 各内部ノードに対して: その子のいずれかが選択されていない場合、このノードを選択します。 この貪欲な戦略が最適な答えを与えることをどのように証明しますか?上記のアルゴリズムが生成するものよりもサイズが小さい頂点カバーがないこと?

1
絞り込みタイプの推測
職場では、動的言語に関する型情報を推論する必要があります。次のように、ステートメントのシーケンスをネストされたlet式に書き換えます。 return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } 一般的なタイプ情報から始めて、より具体的なタイプを推測しようとしているので、自然な選択は絞り込みタイプです。たとえば、条件演算子は、trueブランチとfalseブランチの型の和集合を返します。単純なケースでは、非常にうまく機能します。 ただし、次のタイプを推測しようとしたときに、思わぬ障害に遭遇しました。 function …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

1
平均検索パフォーマンスを最小化する、固定長の決定木に似た特徴選択
私は、複雑なクエリ持っデータセットを検索するために使用されるが、Sを見つけるためにH 正確な = { S ∈ S | Q (sが) 真であるが }。各クエリは、平均時間を取るトンリニアサーチの全体的な時間があるので、T ⋅ | S | 。私は単純サブクエリQ_Iにダウンクエリを破り、見つけることができますHを約 = { S ∈ S | ∀ のq J(sが)真です}QQQSSSHexact={s∈S∣where Q(s) is True}Hexact={s∈S∣where Q(s) is True}H_\text{exact} = \{s \in S \mid \text{where $Q(s)$ is True}\}tttt⋅|S|t⋅|S|t\cdot |S|Happrox={s∈S∣∀qj(s)is True}Happrox={s∈S∣∀qj(s)is True}H_\text{approx} = \{s\in S \mid \forall q_j(s) …

1
現代の正規表現の表現力
私は最近、主に単語のグループを特別なプロパティと照合する正規表現の課題を提案するWebサイトについて友人と話し合いました。彼は||||||||、数|が素数であるような文字列に一致する正規表現を探していました。そのような言語は、通常であれば、補題をポンプの翻訳が素数のためにあるという事実与えますので、私はすぐにそれが今まで動作しません彼に言われた十分な大きさ、それが存在するのk ≤ pがあるようP + N kは、すべての主要ですN ≥ - 1、よく、これは全くケースしにくい(素数の配分、そのような未知の自明とプロパティを破砕、...)pppk≤pk≤pk \leq pp+nkp+nkp + nkn≥−1n≥−1n \geq -1 しかし、誰かが解決策に付属している:一致しない(||+?)\1+ キャプチャグループに一致するように、この表現しようとする(つまりすることができ||、|||、||||などの上の出現箇所)のn ≥ 2回。一致する場合、文字列で表される数はkで割り切れるので、素数ではありません。それ以外の場合です。k≥2k≥2k \geq 2|n≥2n≥2n \geq 2kkk そして、グループ化と後方参照により、正規表現が理論的な意味で...正規表現よりも実際にはるかに表現力豊かになることが明らかになったので、私は愚かに感じました。今では、実際の正規表現を実行するときに私が知らなかったルックアラウンドやその他の演算子も追加されました。 ウィキペディアによると、文脈自由文法によって生成された言語よりもさらに表現力があります。だからここに私の質問があります: 現代の正規表現エンジンを使用して、(文脈自由文法から生成された)代数言語を表現できますか より一般的な説明、または現代の正規表現で説明できる言語の種類の複雑さの少なくとも上限はありますか? より実用的には、その背後に深刻な理論がありますか、それとも有限オートマトンに基づく実際の正規表現の最初のブロックに実装可能と思われるたびに新しい機能を追加するだけですか? 「モダンな正規表現」は質問が具体的ではないことを知っていますが、少なくとも後方参照を使用することを意味します。もちろん、この「現代の正規表現」言語に対する特定の制限を想定している部分的な回答者がいる場合は、遠慮なく投稿してください。

4
最大のコストで重複しないスケジュールされたジョブを見つける
[開始時刻、終了時刻、コスト]のn個のジョブのセットを指定して、2つのジョブが重複せず、コストが最大になるようにサブセットを見つけます。 今、私は貪欲なアルゴリズムがうまくいくかどうかわかりません。つまり、コストで並べ替え、常に交差せず、2つの間の最大コストで次のジョブを実行します。 これはナップザック問題と同等ですか?どうすればそれにアプローチできますか?

1
最も重い誘導サブグラフ問題
私はそのような組み合わせの問題に興味があります:与えられたグラフ G=(V,E)G=(V,E)G=(V, E) と重み関数 wv:V↦Rwv:V↦Rw_v: V \mapsto R、および we:E↦Rwe:E↦Rw_e: E \mapsto R我々は、A誘導される部分グラフについて求めているの和を最大化: 。G′=(V′,E′)G′=(V′,E′)G' = (V', E')GGG∑e∈E′we(e)+∑v∈V′wv(v)∑e∈E′we(e)+∑v∈V′wv(v) \sum_{e \in E'} w_e(e) + \sum_{v \in V'} w_v(v) 問題はNP-H ard(最大クリーク問題からの削減による)であるため、近似解(貪欲であっても)への提案と文献へのリンクは高く評価されます。

1
すべてのバルーンに当たる光線の最小数を計算するための貪欲な戦略
以下の最小ザップ問題は、「Greedy Algorithm」に関するJeff Ericksonの講義の演習11 です。 最小ザップ問題は、次のようにより正式に述べることができます。セットを考えるCCC の nんn 平面内の円。それぞれが半径と (x,y)(x,y)(x, y) 中心の座標。すべての円と交差する原点からの光線の最小数を計算します CCC。あなたの目標は、この問題の効率的なアルゴリズムを見つけることです。(下図の「9-balloons-with-4-rays」の例を参照してください) 質問:風船と交差しない光線を発射することが可能だとします。この特別な場合の最小ザップ問題を解決する貪欲なアルゴリズムを説明および分析します。 この問題への取り組みに問題があります。貪欲なアプローチは、ほとんどの円と交差して再帰する光線を使用することだと思いましたが、これは間違っていると言われました。どうしてこれなの? そして、風船と交差しない光線があるという事実の意味は何ですか?いくつかの最適なソリューションがこの事実を使用していることを証明するはずですか? どんな助けもいただければ幸いです!私は最近アルゴリズムを学び始めました:) hengxinの回答に基づくアルゴリズム:https ://cs.stackexchange.com/a/52293/42816 数学的帰納法による証明 注:O(n log n)実装を使用しませんでした 次に、数学的帰納法を使用して、このアルゴリズムの正確性を証明します。私たちの貪欲なアルゴリズムは最適解よりも悪いことはできないことを示します。 しましょう S′S′S'私たちの貪欲なアルゴリズムによって発射された光線のセットになります。しましょうSSS 別の最適なソリューションによって撮影された光線のセットである。 私たちの基本ケースはいつですか n=1n=1n = 1。破壊するオブジェクトは1つだけであり、貪欲なアルゴリズムは1つのレイを使用しますが、これもたまたま最適です。これはチェックアウトです。 ここで、帰納法の仮説について、貪欲なアルゴリズムが最大で nnn オブジェクト。 ここで、最初の光線が αα\alpha の S′S′S' それよりも悪いことはできません SSS。 今考えてみましょう n+1n+1n+1オブジェクトの状況。次に、並べ替えますS′S′S' そして SSS による αα\alpha、時計回り。今から発生する最初の光線を調べてみましょうαα\alpha時計回り。にS′S′S'、この最初の光線、それを呼び出します R′R′R'、おそらくそれよりも悪いことはできません SSS、 あれを呼べ RRR、私たちの貪欲なアルゴリズムは、この光線が最初のオブジェクトを含むほとんどのオブジェクトと交差することを示しているため、 αα\alpha。したがって、RRR …

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

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からの問題が含まれます。私はすでに競争しましたが、問題についてのいくつかの考えが欲しいです(解決策はリリースされていません、そして私はこの問題について壁に頭をぶつけています)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.