javaalgorithmartificial-intelligenceinferencereasoning

Forward chaining and Backward chaining in java


What will be the best approach to implement forward chaining and backward chaining for reasoning process in java?

We have been given Horn-form knowledge base which has set of statements.

I have tried to search on internet but I was unable to find any description regarding how to implement these sort of Artificial Intelligence concept into coding.

My understanding :

I have thought so far that I will read each sentence(Horn-Form) and create an object of it. Each Sentence class object will have relationship variables and when I will ask knowledge bases for Backward or Forward chain, It will check array of those objects and constructs my desired chain.

 public class Sentence{

    private String impliedBy;
    private String implementedVar;

    public Sentence(String sentence){
       String[] relation = sentence.split("=>");
       this.impliedBy = relation[0];
       this.implementedVar = relation[1];
    }
    ...
 }

Calling above class by saying...

Sentence s = new Sentence("a&b=>c");

Am I on right track of sorry I am noob for these sort of complicated programming and as per my prediction I might need lots of optimisation to run these sort of reasoning at very high level. But it seems like I need good understanding by someone thank you if some of you can help...

Thanks!


Solution

  • I'd use a rules engine like Drools or JESS before I'd try writing this for myself.

    Unless your purpose is to learn how to write a Rete rules engine, in which case I'll withdraw my answer. I'd go and look for Charles Forgy's papers.