タグ付けされた質問 「constraint-programming」

1
SATとConstraint Satisfactionを使用する場合
難しい問題がある場合、標準的なアプローチの1つは、SATインスタンスとして表現し、SATソルバーを実行することです。別の標準的なアプローチは、それを制約充足問題として表現し、CSPソルバーを使用してみることです。この2つは、入力形式でどのような問題を自然に表現できるかについて、なんとなく漠然と似ています。 特定の問題に対して、どのアプローチが良い結果をもたらす可能性が高いかを認識する方法に関するガイドラインまたは経験則はありますか?CSPソルバーよりもSATソルバーがより適切に処理できる問題、またはその逆について、だれでも提供できるガイダンスはありますか? (明らかに、両方のアプローチで解決できるいくつかの簡単な問題があります。どちらのアプローチでも有効に解決できない難しい問題もあります。それらを脇に置いておきましょう。ガイダンスが最も役立つケースは、SATソルバーはCSPソルバーよりも優れたパフォーマンスを発揮するか、CSPソルバーがSATソルバーよりも優れたパフォーマンスを発揮します。 SATソルバー-つまり、最初に試すアプローチはどれですか?)

4
Prologで制約充足の問題を解決できますか?
である「パーティー出席」プロローグで解ける問題のタイプ?例えば: ゴボウマルドーンとカルロッタピンクストーンは、アルバスダンブルドアが来たら来ると言いました。アルバス・ダンブルドアとデイジー・ドッデリッジは両方とも、カルロッタ・ピンクストーンが来たら来たと言った。アルバス・ダンブルドア、ゴボウ・マルドーン、カルロッタ・ピンクストーンは全員、エルフリダ・クラッグが来れば来ると言った。Carlotta PinkstoneとDaisy Dodderidgeは、どちらもFalco Aesalonが来たら来ると言っていました。ゴボウ・マルドーン、エルフリダ・クラッグ、ファルコ・アエサロンは、カルロッタ・ピンクストーンとデイジー・ドッデリッジの両方が来たら来ると言った。デイジー・ドッデリッジは、アルバス・ダンブルドアとゴボウ・マルドゥーンの両方が来たら彼女が来ると言った。すべての招待者が出席することを保証するために、誰がパーティーに出席するよう説得する必要がありますか? 私はこれをGNU Prologで表現しようとしました: attend(BM) :- attend(AD). attend(CP) :- attend(AD). attend(AD) :- attend(CP). attend(DD) :- attend(CP). attend(AD) :- attend(EC). attend(BM) :- attend(EC). attend(CP) :- attend(EC). attend(CP) :- attend(FA). attend(DD) :- attend(FA). attend(BM) :- attend(CP),attend(DD). attend(EC) :- attend(CP),attend(DD). attend(FA) :- attend(CP),attend(DD). attend(DD) :- attend(AD),attend(BM). attend(FA). /* try different …

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

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 …

1
2つの順序付け制約を同時に満たす最大長の部分列を見つける
我々は、セット与えられるの果実を。各フルーツには価格とビタミン含有量ます。果物を順序付けられたペアに関連付けました。次に、ソートされたリストに価格が昇順で、ビタミン含有量が降順で含まれるように、これらの果物を配置する必要があります。F={f1,f2,f3,…,fN}F={f1,f2,f3,…,fN}F=\{f_1, f_2, f_3, …, f_N\}NNNPiPiP_iViViV_ififif_i(Pi,Vi)(Pi,Vi)(P_i, V_i) 例1:および。N=4N=4N = 4F={(2,8),(5,11),(7,9),(10,2)}F={(2,8),(5,11),(7,9),(10,2)}F = \{(2, 8), (5, 11), (7, 9), (10, 2)\} すべての価格が昇順で、ビタミン含有量が降順であるようにリストを配置すると、有効なリストは次のようになります。 [(2,8)][(2,8)][(2, 8)] [(5,11)][(5,11)][(5, 11)] [(7,9)][(7,9)][(7, 9)] [(10,2)][(10,2)][(10, 2)] [(2,8),(10,2)][(2,8),(10,2)][(2, 8), (10, 2)] [(5,11),(7,9)][(5,11),(7,9)][(5, 11), (7, 9)] [(5,11),(10,2)][(5,11),(10,2)][(5, 11), (10, 2)] [(7,9),(10,2)][(7,9),(10,2)][(7, 9), (10, 2)] [(5,11),(7,9),(10,2)][(5,11),(7,9),(10,2)][(5, 11), (7, 9), (10, 2)] 上記のリストから、最大サイズのリストを選択したいと思います。複数のリストに最大サイズがある場合、価格の合計が最小となる最大サイズのリストを選択する必要があります。上記の例で選択する必要があるリストは、です。{(5,11),(7,9),(10,2)}{(5,11),(7,9),(10,2)}\{(5, …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.