問題タブ [answer-set-programming]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
answer-set-programming - これを回答セットプログラミングでエンコードするにはどうすればよいですか?
私はセットプログラミングに答える全くの初心者で、かなり単純な質問に苦労しています。プログラムはクリンゴで書く必要があります。
だからここに質問があります:
抽象論証フレームワークは、引数のセット A と、それらの間の攻撃関係 R ⊆ AXA で構成されます。任意の 2 つの引数 a1 と a2 について、(a1, a2) ∈ R の場合、a1 が a2 を攻撃すると言います。引数 a1 を認めると、引数 a2 に疑問を投げかけます。正式には、次の 2 つの条件が成り立つ場合、引数 E ⊆ A のサブセットは安定です。
- E の引数は、E の他の引数を攻撃しません。
- E の外側の引数は、E からの引数によって攻撃されます。
応答セットを使用して、特定のインスタンスで引数の安定したサブセットを識別する ASP プログラムを作成します。インスタンスは、それぞれ A と R に対応する 2 つの述語引数/1 と攻撃/2 を介して提供されます。
次に例を示します。
有効な出力:
これは私が試したもので、明らかに間違っています:
これにアプローチする方法がまったくわかりません。
助けてください。
undirected-graph - 回答セット プログラミングを使用してグラフからツリーを抽出するにはどうすればよいですか?
無向グラフ (V,E)、辺の重み w : E → N、ターゲット k ∈ N、しきい値 O ∈ N があります。重みがしきい値未満のグラフの k-頂点ツリーを見つけます。つまり、V と E からそれぞれ k 個の頂点と k - 1 個のエッジを選択して、それらがツリーを構成し、選択したエッジの重みの合計が O 未満になるようにします。
V、E、w、k、および O を入力として取り、制約を満たすエッジの選択を見つけるか、制約を満たさない場合は「満たされない」を出力する ASP プログラムを作成します。エッジを選択すると暗黙的に頂点が選択されるため、選択した頂点を明示的に表示する必要はありません。
この問題のインスタンスは、頂点/1、重み/3、ターゲット/1、およびしきい値/1 の述語によって提供されます。すべてのエッジには重みがあるため、式は weight(a, b, 10) になります。を使用して、頂点 a と b の間のエッジの存在を宣言すると同時に、それらの重みを宣言できます。余分なエッジ/2 述語は必要ありません。
私は次のことを試しました:
そして、次の出力が得られます。
私はただ期待していた
他の人は明らかに髪ではないからです。
これは問題のある行が原因だと思います:
これを修正するにはどうすればよいですか?
answer-set-programming - 2 つのクリークが異なるかどうかを判断する
グラフがあり、グラフ内で 2 つの異なるクリークを見つけたいとします。クリークは、すべてが接続されているグラフ頂点のサブセットです。クリークサイズ 3 の 2 つのクリーク (a,b,c) および (b,c,d) を含むグラフの例:
2 つのクリークを取得するのはかなり簡単です。
与えます:
これは次のように解釈できます。
しかし、両方のクリークが異なるかどうかをテストするにはどうすればよいでしょうか? 私は試した
しかし、これは出力には影響しません。2 つのクリークが異なるかどうかをテストするにはどうすればよいですか?
今、私はこの解決策を見つけました:
動作しますが、2行必要なのが好きではありません。どうすればそれを1つの制約に入れることができますか?
aggregate - ASP Clingo - アトムの正確な数を取得する
特定の人数を特定のシフトに割り当てることを楽しみにしています。たとえば、私は 6 人で 3 つの異なるシフトを持っていました。今度は、すべてのシフトに正確に 2 人を割り当てる必要があります。私はこのようなことを試しましたが..
注:これはうまくいきません.人々を誤解させるためにできるだけ早く編集してください. それの後、誰もそれをコピーしていません:
割り当てられたシフトの数を数えることは可能ですか?
上記のコードの出力 (「.」が挿入された場合) は次のとおりです。
ここでは、 shiftCountで定義されているように、朝 ("mor") シフトが 2 回以上使用されていることがはっきりとわかります。必要な結果を得るには何を変更する必要がありますか?