問題タブ [inference]
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.
search - Haskellの検索制御
指数関数的に大きいまたは無限の空間を検索するプログラムを作成しているとします。ゲームプレイ、定理証明、最適化など、空間全体を検索できないものであり、結果の品質は、検索する部分の選択に大きく依存します。利用可能なリソース内。
熱心な言語では、これは概念的に単純です。言語では評価の順序を指定でき、それを使用して、検索スペースのどの部分を最初に評価するかを制御できます。(実際には、推論制御のコードレイアウトが問題の定義と混ざり合うため、面倒で複雑になる傾向があります。これが、代わりに怠惰な言語でこれを行う方法に興味がある理由の1つです。概念的に簡単です。)
Haskellのような怠惰な言語では、そのようにすることはできません。代わりに、2つの方法を考えることができます。
使用しているコンパイラの現在のバージョンによってたまたま選択された評価の正確な順序に依存するコードを、使用している最適化フラグを使用して記述します。これにより、処理が正しい順序で行われるようになります。これは、保守性の問題につながる可能性があります。
コードを記述するコードを記述します。具体的には、問題の定義を一連のヒューリスティックとともに、実行する必要のある正確な順序を指定する熱心な言語の一連の命令に変換するコードを記述します。前払い費用を支払う気があるなら、これにはメリットがあるようです。
この種のことを行うための他の推奨される方法はありますか?
prolog - Allegrograph - RDF オブジェクトのプロパティのような関数?
Allegrographを使用すると、Prolog ファンクターは非常に優れていますが、欠点が 1 つあります。
2 つのエンティティをリンクするファンクターを定義するとします。たとえば、「!n:motherOf OR !n:fatherOf 」に等しい parentOf は、オントロジーで定義された両方の rdf オブジェクト プロパティです (ファンクターではありません)。
トリプレット「A !n:fatherOf B」を定義しましょう。「parentOf」はファンクターでありrdfオブジェクトのプロパティではないため、AとBをリンクするすべてのプロパティを要求すると、トリプレット「A !n:fatherOf B」のみが取得されます(ただし、「A 親B」は取得されません)。
A が B の親であるかどうかを知る唯一の方法は、ブール質問を直接行うことです。
だから私の質問は、「ファンクターによって生成されたFACTS + INFERRED FACTSで構成されるRDFトリプレットを取得する」の結果を簡単に取得する方法は何ですか?
prolog - Prolog Beginner - これは悪い考えですか?
私が取り組んでいるアプリケーションは、一種の「コンフィギュレーター」です。これは C# で書かれており、それに合わせてルール エンジンも作成しました。アイデアは、命題論理ステートメントがたくさんあり、ユーザーが選択できるということです。選択した内容に基づいて、他の項目が必須になるか、完全に利用できなくなります。
命題論理ステートメントは、一般に次の形式を取ります。
シンボル:
私は Prolog に非常に慣れていませんが、すべての「ルール処理」を処理できるようで、現在のルール エンジンから抜け出すことができるようです (動作しますが、それほど速くも簡単でもありません)。私が望むように維持します)。
さらに、使用可能なオプションはすべて階層化されています。例えば:
第 2 レベルの項目 (色などの機能) が暗示されている場合は、第 3 レベルの項目 (赤などのオプション) を選択する必要があります。同様に、機能が false であることがわかっている場合、その下にあるすべてのオプションも false です。
問題は、すべての製品に独自のルールがあることです。これらの演算子を述語として含むナレッジ ベースを設定し、実行時に製品のすべてのルールの構築を開始することは合理的なアプローチですか?
私が想像する方法は、コンポーネント、機能、およびオプションのアイデアを設定することです。次に、それらの間の関係を設定します (たとえば、機能が false の場合、そのオプションはすべて false になります)。実行時に、製品固有のルールを追加します。次に、ユーザーのすべての選択を関数に渡し、どの項目が true でどの項目が false であるかを出力として取得します。
私は Prolog を始めたばかりなので、私が尋ねていることの意味をすべて知っているわけではありませんが、悪い道をたどり、その過程で多くの時間を無駄にしないようにしています.
私が見つけようとしているものをターゲットにするのに役立つかもしれないいくつかの質問:
- これは実行可能ですか?
- 私は間違った木を吠えていますか?
- 実行時にこれらすべてのルールを作成しようとすると、欠点や懸念事項はありますか?
- C# アプリ (正確には Silverlight) に詰め込むことができる、この種のより良いシステムはありますか?
- 他に検討すべき競合システムはありますか?
- この種のことについて何か一般的なアドバイスはありますか?
アドバイスありがとうございます!
grammar - GA 文法導入プログラム/コード?
GAを使用して文法の誘導/推論を実行するプログラムを知っている人はいますか?私はLankhorstやDe Pauwなど、このようなものに関する研究論文や記事をたくさん読んできましたが、この技術を使用する実装やプログラムはどこにも見つかりません. これについての助けは大歓迎です、乾杯
semantic-web - ルールベースのSKOS Reasonerを構築する
CLIPS / Jessで作成されたルールで推論するために、オントロジーSKOSの推論器を構築する必要があります。自動化された推論の単純な形式が必要です。ルールを使用してオントロジーの推論を作成するのに役立つものは特に見つかりませんでした。CLIPS の機能の一部を複製しようとするようなものさえありませんでした。
scala - Scalaタイプ(推論)の問題?
JerseyJAX -RSリファレンス実装を使用してScalaでRESTWebサービスを開発していますが、奇妙なエラーが発生します。
ContentDisposition.ContentDispositionBuilderを使用してContentDispositionオブジェクトを作成しようとしています。
ContentDisposition.ContentDispositionBuilder
2つのタイプがT extends ContentDisposition.ContentDispositionBuilder
ありV extends ContentDisposition
ます。のメソッドはビルダーインスタンスを返しますtype
。ContentDisposition
コード
ただし、機能します
コンパイラエラーが発生します
type
( Scalaのキーワードであるため、「引用符」で囲む必要があることに注意してください)
fileName
ofContentDispositionBuilder
はのインスタンスを返すT
ので、これは実際に機能するはずです。
わかりません。何か案が?ちなみに私はScala2.9.0.1を使っています。
アップデート:
これは機能します。しかし、なぜここでキャスティングが必要なのですか?
ruby - Rubyとインターフェース可能な軽量推論エンジン
推論エンジンの追加を切望している大規模な Ruby アプリケーションがあります。私は多くの機能を必要とせず、C ライブラリを統合することを恐れず、Google で空っぽになっています。
Python と JVM にはたくさんのルール エンジンがあるようです。私は Python を使用したいと思っていますが、推論エンジンを追加するためだけにアプリケーション全体を書き直すつもりはないので、そのようなものが存在するかどうかを実際に確認したいと思います。
誰にもアイデアはありますか?
scala - Scala コンパイラは、パターン マッチングの mix-in タイプを推測できません
有限順列集合に対する代数群の使用例があります。他の方法では無関係なさまざまな順列クラスにグループを使用したいので、これを mix-in trait として行いたいと思います。ここに私の試みの抜粋があります
ある時点で、代数公理を使用して群演算の式を単純化するために、simplify メソッドを呼び出したいと思います。評価される公理がたくさんあり、構文が簡潔であるため、パターン マッチングの使用は理にかなっているようです。ただし、コードをコンパイルすると、次のようになります。
コンパイラが型を正しく推測できない理由がわかりません。また、それを助ける方法もわかりません。実際、この場合のパターン マッチングでは、P のパラメーターの型は関係ありません。p が順列の合計である場合、パターンは一致する必要があります。変換は P で + 演算子を呼び出すことによってのみ行われるため、戻り値の型は引き続き P です。
したがって、2 回目の試行では、unapply のコメント アウトされたバージョンをスワップインします。ただし、コンパイラ (2.8.2) からアサーション エラーが発生します。
コンパイラにこれを受け入れさせる方法の手がかりはありますか?
前もって感謝します!
programming-languages - 逆推論エンジン(foo(X)が真であるランダムなXを見つける)
私は、Prologのような言語で次のようなものを書くことができることを知っています:
私が欲しいのはこのようなものですが、逆です。私がこれを持っているとしましょう:
次に、mortal(X)が真であるランダムXを与えるように要求します(したがって、ランダムシードに応じて「ソクラテス」、「プラトン」、または「アリストテレス」のいずれかを与える必要があります)。
私の質問は次のとおりです。
- この種の逆推論には名前がありますか?
- それをサポートする言語やライブラリはありますか?
編集
以下の誰かが指摘しているように、あなたは単にmortal(X)に尋ねることができ、それはすべてのXを返し、そこからあなたは単にリストからランダムなものを選ぶことができます。しかし、そのリストが非常に大きく、おそらく数十億になるとしたらどうでしょうか。明らかにその場合、1つを選ぶ前にすべての可能な結果を生成することはできません。
これが実際の問題になることを確認するために、「adjective1 noun1adverbtransitive_verbadjective2noun2」という形式のランダムな文を生成する単純な文法を想像してみてください。形容詞、名詞、動詞などのリストが非常に大きい場合は、組み合わせ爆発がどのように問題であるかを確認できます。各リストに1000語が含まれている場合、1000^6の可能な文があります。
c++ - C++11の可変個引数テンプレートを使用したbindParameter関数
最後のパラメーターをバインドしながら、std ::function<>オブジェクトを変換する簡単な関数を作成しようとしています。それは私が持っているものです:
そして、それが私がそれを使いたい方法です:
...この例では、main関数は42を返す必要があります。問題は、gcc(4.6)がテンプレートパラメータのタイプを正しく推測していないように見えるため、最初のバージョンでは次のエラーが発生します。
しかし、私の意見では、パラメータは明らかです。または、この種の型推論は標準でカバーされていないか、gccでまだ実装されていませんか?