問題タブ [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.

0 投票する
1 に答える
461 参照

answer-set-programming - Answer Set Programming で、モデルと最小モデルの違いは何ですか?

私は人工知能のクラスを受講しており、Answer Set Programming (特に Clingo) を扱っています。現時点では主に理論について話していますが、モデルと最小モデルを区別するのに問題があります。次の定義があります。

規則、モデル、最小モデル、および明確なプログラムの回答セットを満たす

  1. 規則の本体に「not」がない場合、プログラムは確定的であると呼ばれます。
  2. 集合 S は a:- b1, …, bm, not c1, …, not cn という形式の規則を満たすと言われます。その本体が S によって満たされる場合 (つまり、b1 … bm が S にあり、c1 ... cn のいずれも S にない) は、その頭部が S によって満たされる必要がある (つまり、a が S にある) ことを意味します。
  3. 集合 S は、そのプログラムのすべての規則を満たしている場合、そのプログラムを満たしていると言われます。
  4. 集合 S は、(a) S が P を満たす (S は P のモデルであるとも呼ばれる) 場合、および (b) S の厳密な部分集合が P を満たす場合 (つまり、S がP の最小モデル)。

質問の場合 (宿題ではなく、講義のスライドから引用):

上の質問の答えを誰か教えてください。おそらくそこから違いを理解することができますが、誰かが(教科書の定義ではなく)一般的な言葉で違いを説明できれば、それは素晴らしいことです. この質問をどのフォーラムに投稿すればよいかわかりません。別の場所に投稿する必要がある場合はお知らせください。

ありがとう

0 投票する
2 に答える
351 参照

answer-set-programming - 回答セット プログラミング (dlv) で forall X を使用する方法 (回答セット プロローグ)

私は dlv に次の事実を持っています。know (X,Y) は、X が Y を知っていることを意味します。

次の述語を定義しました。

これにより、事実からすべての人が得られます。私は述語popular(X)を見つけようとしています。それは人気のある人に与えるでしょう。すべての人が X を知っている場合、X は人気があると定義されます。上記の事実のリストに対する答えは、アリスとピーターです。以下のように定義しました。

Xは人であり、誰もがXを知っている場合に人気があります。しかし、実行すると結果としてすべての人が得られます。どこで間違いを犯していますか?

0 投票する
1 に答える
1143 参照

count - 回答セット プログラミング - ファクトの数をカウントする方法はクエリ結果のように見えますか?

したがって、DLV で実行する ASP で記述された一連のファクトとクエリがあります。

triple1次に、回答セットに事実が含まれていないトリプルの数を数えたいと思います。次に、このような集計 #count クエリを作成しました。

しかし、私が得たのは、結果として表示される変数の数だけでしたTermA。そして、クエリを次のように変更したとき:

それは私にエラーを与えます。このクエリを実行するにはどうすればよいですか?

0 投票する
0 に答える
119 参照

antlr - リストからANTLR 3 n個のノードで動的に書き換える

ANTLR 3 を使用して、Answer-Set Programs (ASP) を解析および書き換えています。私がやりたいことは、ASP プログラムを解析し、書き換えて AST を出力することです。AST に対してノードを簡単に追加および削除できますが、必要なのはルートに動的にノードを追加することです (事実上、ASP プログラムに新しいルールを追加します)。追加するノードとその数は、入力 ASP プログラムに基づいています。

以下に、AST を出力するレクサーとパーサーの例を示します。r_rule は、一致するものに基づいて埋められた LinkedHashMap を返します。LinkedHashMap の各メンバーについて、r_program の書き換えで、ルート ノード PROGRAM に新しいノードを追加します。ただし、LinkedHashMap を反復処理して新しいノードを追加する方法を見つけることができないようです。

セマンティック述語を使用できますが、LinkedHashMap のプロパティをチェックするためだけです。コードを挿入して HashMap を任意にループすることはできますが、反復ごとに子ノードを追加したり、書き換えをトリガーしたりすることはできません。生成されたコードは実際、Java を使用して醜い方法でこれを行うために間違った場所に配置されています (ルートノード PARENT にアクセスできません)。

これについて何ができますか?全く違うアプローチも大歓迎です。どうもありがとう!

更新 1

入力例は次のとおりです。

AST の例は、図面についてお詫び申し上げます (nb 厳密には読みやすさのために使用される例であり、実際には、書き換えでさらに多くのノードが使用されます)...

続けることもできますが、変数をバインドできる場合、各ルールは変数を異なる方法でバインドするという考えです。入力が異なると、PROGRAM の子の数と内容が変わります。

0 投票する
2 に答える
1693 参照

answer-set-programming - クリンゴの集計

私は生成しました:

レーザーフィールド 2+1+6 を合計するにはどうすればよいですか?

clingo_guild.pdf の 21 ページに次のような記述がありました。

そして出てくる:

しかし、私は得る:

クリンゴ 3.0.4 を使用しています。ご協力ありがとうございました。

0 投票する
4 に答える
1526 参照

answer-set-programming - ASP (Answer Set Programming) でリストをどのように表現する必要がありますか?

プロセッサ「a」は、メッセージ「a_b_c_d」のヘッダー「a」を処理し、ペイロード「b_c_d」を次のレベルの別のプロセッサに渡します。

ASP でリスト 'a_b_c_d' をどのように表現し、上記を一般的なケースに変更すればよいですか?

0 投票する
1 に答える
739 参照

answer-set-programming - 最適化ステートメントの構文の違い (clingo 3 と clingo 4)

clingo3 のロジック プログラムに最適化ステートメントがあります。

(基本的に、ソリューションには上記のものをできるだけ少なくしたいと考えています-それらはすべて同じ重量です)。

この構文は clingo3 では機能しますが、clingo4 では機能しません。clingo4 用にどのように書き直す必要がありますか?

0 投票する
1 に答える
331 参照

answer-set-programming - はじめに: プログラムはどこに書くべきですか?

そのため、DLV ソルバーを使用して問題を解決し、テスト ケースを作成する Answer-Set-Programming プロジェクトを行う必要があります。

プロジェクトの仕様によると、ファイルG.dlCh.dl、およびtest.dlを作成する必要があるため、私はこれらすべてに非常に慣れていないことを念頭に置いて、ここに私の質問があります:

この .dl ファイルとは何ですか?また、どのように作成すればよいですか? またはさらに良い:

.dl ファイルとして保存できるようにするには、これらすべての事実と規則 (ちなみに紙に書いています) をどこに書き込めばよいのでしょうか?