私はsat4jライブラリを初めて使用しています。たとえば、私は含意を定義することができます。 (A1 v A2 v A3) => (A1 ∧ A4)
sat4jを使用して、すべての変数のブール値を見つけますか?SAT4J含意使用例
私はsat4jの単体テストを見つけましたが、私は以下のようなものを試しました。問題は、hasASolution()
がtrueを返しますが、solution
変数が空であることです。
DependencyHelper<String, String> dependencyHelper = new DependencyHelper<>(SolverFactory.newEclipseP2());
dependencyHelper.implication("A1", "A2", "A3").implies("A1").and("A4");
// Before get a solution it must be checked
assertTrue(dependencyHelper.hasASolution());
IVec<String> solution = dependencyHelper.getSolution();
System.out.println(solution.toString());
私はいくつかの行でそれを行うことができるロジック操作のための別のフレームワーク([AIMA on github](https://github.com/aimacode/aima-java))を見つけました。いくつかのjUnitテスト[こちら](https://github.com/aimacode/aima-java/blob/AIMA3e/aima-core/src/test/java/aima/test/core/experiment/logic/propositional/)があります。アルゴリズム/ WalkSATExperiment.java)をAIMAフレームワークへのイントロダクションとして追加しました。 –