Le chaînage avant et chaînage Arrière en java
Quelle sera la meilleure approche pour mettre en œuvre le chaînage avant et chaînage arrière pour les processus de raisonnement en java?
Qui nous a été donné de la Corne-forme de la base de connaissances qui a un ensemble d'états.
J'ai essayé de chercher sur internet mais j'ai été incapable de trouver une description sur la façon de mettre en œuvre ce genre de concept d'Intelligence Artificielle dans le codage.
Ma compréhension :
J'ai pensé jusqu'à présent que je vais lire chaque phrase(Horn-Forme) et de créer un objet. Chaque Phrase de la classe de l'objet ont des relations les variables et quand je vais poser les bases de connaissances pour en Arrière ou en Avant de la chaîne, Il va vérifier le tableau de ces objets et des constructions de ma chaîne souhaitée.
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];
}
...
}
D'appel au-dessus de la classe en disant...
Sentence s = new Sentence("a&b=>c");
Suis-je sur la bonne voie de l'désolé, je suis noob pour ce genre de programmation compliquée et selon ma prédiction que j'ai peut-être besoin de beaucoup de d'optimisation pour exécuter ce genre de raisonnement à un très haut niveau. Mais il semblerait que j'ai besoin d'une bonne compréhension par quelqu'un merci si certains d'entre vous peuvent vous aider...
Merci!
OriginalL'auteur TeaCupApp | 2011-05-23
Vous devez vous connecter pour publier un commentaire.
J'avais utiliser un moteur de règles comme Bave ou JESS avant, j'ai essayer d'écrire cela pour moi.
Sauf si votre but est d'apprendre comment écrire une Araignée de moteur de règles, dans ce cas, je vais retirer ma réponse. J'avais d'aller la chercher Charles de Forgy papiers.
Merci beaucoup, j'ai élargi ma compréhension à l'égard de ces techniques...Cependant, j'ai peut-être à la recherche pour la mise en œuvre à un niveau plus élevé, de sorte que Voo dit mes devoirs doit être plus facile à résoudre, mais j'ai pensé que si j'apprends quelque chose, pourquoi ne pas apprendre d'un droit et de manière efficace 🙂 Merci
Oui les mecs, vous avez raison! Il sera assez facile à mettre en œuvre si ma mes données ci-dessus pensées(En question) sont sur la bonne voie. 🙂 Merci pour l'aide.
OriginalL'auteur duffymo
vérifier ces liens peuvent être utiles
http://snipplr.com/view/56296/ai-forward-chaining-implementation-for-propositional-logic-horn-form-knowledge-bases/
http://snipplr.com/view/56297/ai-backward-chaining-implementation-for-propositional-logic-horn-form-knowledge-bases/
OriginalL'auteur bjornredemption
look ici pour une description de la manière d'obtenir le chaînage avant de travailler dans le temps linéaire en le nombre de variables (notez la mise en œuvre dans l'extrait de boucles à travers les clauses de chaque variable dans l'ordre du jour). Il s'agit sans code, mais Hornsat n'est pas vraiment difficile à code.
OriginalL'auteur kutschkem
Des systèmes tels que OPS5 ont généralement une inférence composant
qui utilise le chaînage avant. Prologue sur l'autre main, généralement
utilise le chaînage arrière.
À la fois vers l'avant & arrière de chaînage peut être considérée comme différente
des stratégies pour faire face à la résolution. Alors que le chaînage avant
correspond à la résolution de l'unité, vers l'arrière de chaînage sera
correspondent à la résolution d'entrée.
Il est également possible de construire des systèmes qui peuvent inclure
le chaînage arrière à l'intérieur de chaînage avant, dans un environnement contrôlé
façon. Un tel système est Jekejeke Minlog.
Une mise en œuvre possible à la Marvin Minsky serait
regarder le HornClauses comme un réseau. HornClauses que
la tête de X et HornClauses qui ont un X dans le corps
serait connecté.
Maintenant le corps d'un HornClause agit comme une sorte de porte ET,
et depuis différents HornClauses peut avoir la même tête
il y a aussi une porte OU impliqués. Maintenant, essayez de programme
quelque chose qui se propage le long de la vérité de ces portes.
Bye
OriginalL'auteur j4n bur53
Bien ce qui pourrait également aider en utilisant:
HashMap map = new HashMap();
carte.mettre(impliedBy,impliedVar);
Pour obtenir le var simplement: String valeur = map.get(impliedBy).
OriginalL'auteur msj121