1

私はロジックプログラミングについて多くのことを読んでいます-ASP(Answer Set Programming)は一例またはこれです。それら (ロジック プログラム) は、通常、次の形式になっています。

[プログラム 1] Rule1: a <- a1, a2, ..., not am, am+1; ルール 2: ...

この一連の規則は論理プログラムと呼ばれ、sc モデルはそのような計算の結果です - a1、a2 のそれぞれに True/False 値を割り当てます...ある種のプログラム (ルール) を (セマンティック Web) オントロジーと統合して、ルールとオントロジー (ある種の制約/動作とデータ) の両方を含む知識ベースを構築できます。並列拡張、確率論的論理の拡張、時相論理の拡張など、ASP 自体に関する多くの研究があります。

私の質問は、この分析がブール変数から整数ドメインや浮動小数点ドメインの変数にまで拡張される、何らかの研究や概念実証プロジェクトがあるのでしょうか? 現在、次のプログラムに対処できる研究は見つかりませんでした。

[プログラム 2] Rule1 a1:=5 <- a2=5, a3=7, a4<8, ... Rule2 ... ... [a1、a2 などへの値の最終代入が解このプログラムの]

現在-私が理解しているように-プログラム-2で何らかの分析を実行したい場合(たとえば、このプログラムが何らかの意味で正しいかどうかを調べるため-たとえば、いくつかのプロパティを満たしているかどうか、終了した場合、どのドメインが許可されていないか)ある種の特性に違反するなど)、その後、彼または彼女はプログラム-1 に関してプログラム-2 を言い直してから、完全に未踏のように見える方法で進めなければなりません-私の知る限り (そして私はそれがそれであるとは信じていません)未踏、単に - 私はいくつかの情報源や傾向を知りません)。Program-1 には不等式を含むステートメントを使用できる制約ロジック プログラミングがありますが、ブール変数にも焦点が当てられすぎています。実際、Programm-2 は、ビジネス ルール システムでかなり一般的な種類のものであり、それがロジック プログラミングに興味を持った原因です。

SO-私の質問にはいくつかの歴史があります-私の実際の経験により、特にビジネスルールシステム/エンジンを高く評価するようになりました-JBossプロジェクトのDroolsであり、scプロダクションルールシステムの基礎となる理論について何らかの研究を行うことが私の意図でした(私はそうでしたそれらについての私の論文を作成する予定です-ここで何ができるかを見つければ)、しかし、文献を調べた後、行うことはほとんどないと言えます(例:http://www.computer.org/csdl/トランス/tk/2010/11/index.htmlそれらに関するいくつかの記事を含む優れたIEEE TKDE特別号であり、そのうちの1つはDroolsリーダーによるライターでした)数十年前のReteアルゴリズムのある種の技術的改善があることがわかりますが、Droolsまたは他のプロダクションルールシステムの理論はありませんそれらについて正式な分析を行うのに役立つ可能性があります。もう 1 つの質問は、プロダクション ルール システム (Drools、Jess、CLIPS などのルール エンジン用) の理論があるかどうか、そのような理論が実際に必要かどうか、Drools やその他のシステムを使用する際の実際的な問題は何かということです。生産 規則 システム の 理論 によって 対処 さ れ ます.

ps私は知っています-これらはすべて論文アドバイザーに向けられるべき質問ですが、私の現在の立場は、私が在籍している部門には(私の知る限り)それらに答えるのに適した人がいないということです.ジャーナルを読んだり、会議の議事録を読んだりします(コンピュータサイエンスの講義ノートの素晴らしい会議シリーズシリーズがあります-RuleMLとRR)...

事前にヒントをありがとう!

4

2 に答える 2

1

Clojure core.logicの最近のバージョン(0.8 以降) には、 cKanrenに基づいて、まさにこの種のサポートが含まれています。

ここで例を参照してください: https://gist.github.com/4229449

于 2012-12-27T00:12:10.540 に答える
1

ある意味で、ブーリアンシステムはすでにあなたが提案したことをしています。

A=5 がソリューションの一部であることを確認するには、ルールを検討してください (ASP 構文を忘れてしまったので、ご容赦ください)

integer 1..100 //integers 1 to 100 exist
1{A(X) : integer(X)}1 //there is one A(X) that is true, where X is an integer
A(5) //A(5) is true

そして、あなたの条項には次のことが必要だと思います:

integer 1..100 //integers 1 to 100 exist
1{A(X) : integer(X)}1  //A1 can take only one value and must take a value
1{B(X) : integer(X)}1  //A2 ``
1{C(X) : integer(X)}1  //A3 ``
1{D(X) : integer(X)}1  //A4 ``
A(5) :- B(5), C(7), D(8) //A2=5, A3=7, A4=8 ==> A1=5

質問を正しく理解できたと思います。

于 2012-05-04T21:26:03.057 に答える