On commence par insérer les faits. Puis on va prendre chaque fait et on va examiner toutes les règles où ce fait apparaît en prémisse. On va voir pour chacune de ces règles si elle est déclenchée. Si elle l'est, on va affecter les attributs en conclusion des valeurs qui leur correspondent afin de propager les faits (...)
[...] Fait: phanerogame Fait: un_cotyledone Fait: rhizome true. 6 saturer. Règle r1 : fleur et graine phanerogame Règle r2 : phanerogame et graine_nue sapin et ombre Règle r3 : phanerogame et un_cotyledone monocotyledone Règle r4 : phanerogame et deux_cotyledone dicotyledone Règle r5 : monocotyledone et rhizome muguet Règle r6 : dicotyledone anemone Règle r7 : monocotyledone et non rhizome lilas Règle r8 : feuille et non fleur cryptogame Règle r9 : cryptogame et non racine mousse Règle r10 : cryptogame et racine fougere Règle r11 : non feuille et plante thallophyte Règle r12 : thallophyte et chlorophylle algue Règle r13 : thallophyte et non chlorophylle champignon et non bon Règle r14 : non feuille et non fleur et non plante colibacille Règle r15 : joli non rhizome Application de r3, fait établi: monocotyledone Application de r5, fait établi: muguet Pas plus de faits établis true Moteur en chaînage arrière 1 Moteur d'inférence d'ordre 0 fonctionnant en chaînage arrière Le système recherche, par la méthode du chaînage arrière, si le but souhaité peut être démontré à l'aide des règles d'inférences présentes dans la base de règles. [...]
[...] Moteur en chaînage arrière % La règle est-elle pouvée ou existe-t-il une autre règle concluante sur ce fait ? prouver(Cond):-fact(Cond), write(Cond), write(' est dans la base de faits\n'). prouver(Cond):-verifier(Cond). prouver(Cond1 et Cond2):-prouver(Cond1), prouver(Cond2). prouver(Cond1 et Cond2 et Cond3):-prouver(Cond1), prouver(Cond2 et Cond3) Existe-t-il une règle concluante sur ce fait ? verifier(Fait):-regle(Num,Cond Fait), prouver(Cond),write(Fait), write(' est satisfait grâce à '),write(Num),nl On lance le chaînage arrière en vérifiant le but satisfait(But):-verifier(But). Définition des règles regle(r1,fleur et graine phanerogame). regle(r2,phanerogame et graine_nue sapin et ombre). [...]
[...] terminal(colibacille). Faits observables observable(fleur). observable(non(fleur)). observable(graine). observable(phanerogame). observable(graine_nue). observable(un_cotyledone). observable(deux_cotyledone). observable(monocotyledone). observable(dicotyledone). observable(non(rhizome)). observable(rhizome). observable(feuille). observable(non(feuille)). [...]
[...] ecrase([X retract(X), ecrase(L). Une fois qu'on a enregistré tous les faits, on lance la recherche faits([]) createbasefaits(BaseFaits), createbasepremisses(BasePremisses), algo(BasePremisses, BaseFaits). /*Enregistrement des faits : Un fait donné ne doit pas être redemandé, il est donc enregistré comme question déjà posée savefait permet de ne pas poser à l'utilisateur des questions qu'il a déjà répondu (dans la base fait)*/ faits([X assert(X), savefait(X), faits(L). Enregistrement des questions déjà posées Traite les faits de départs savefait(X) X = vrai(Y), assert(q(Y)), assert(q(non(Y))). savefait(X) X = faux(Y), assert(q(Y)), assert(q(non(Y))). [...]
[...] terminal(ombre). terminal(muguet). terminal(anemone). terminal(lilas). terminal(mousse). terminal(fougere). terminal(algue). terminal(champignon). terminal(non(bon)). terminal(colibacille). Faits observables observable(fleur). observable(non(fleur)). observable(graine). observable(non(graine)). [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture