TP — Séance 2 — L’IA qui raisonne

TP de la séance 2 d’Introduction à l’intelligence artificielle : logique, inférence, résolution, unification.
Auteur

Dr. El Hadji Bassirou TOURÉ · DMI/FST/UCAD

ImportantObjectif

Programmer les mécanismes d’inférence de la séance et les confronter à SymPy sur des données nouvelles : tables de vérité et statut d’une formule ; vérification de modèles sur une enquête ; résolution par réfutation ; chaînages avant et arrière, boucles et mesures ; unification avec et sans test d’occurrence ; calcul symbolique. Durée : une séance de TP (2 à 3 heures).

Mise en place

Le code de départ est le notebook TP_S02_depart.ipynb, dans l’archive TP_S02_code_depart.zip. Il demande Python 3.10 ou plus récent et SymPy.

pip install sympy
unzip TP_S02_code_depart.zip
cd code_depart
jupyter lab TP_S02_depart.ipynb

Les blocs raise NotImplementedError("A COMPLETER ...") sont à remplacer par le code demandé ; l’affichage des résultats que la fiche interroge est dans la même cellule, qui échoue tant que le bloc n’est pas complété. Seule exception, la cellule resolution de l’étape 3 ne fait que définir des fonctions : tant qu’elle n’est pas complétée, l’échec apparaît dans la cellule suivante, clauses. Chaque question est marquée Observer, Expliquer, Compléter ou Modifier. À rendre : le notebook exécuté, avec les réponses aux questions dans des cellules de texte.

Étape 1 : tables de vérité et statut d’une formule

Trois formules en \(A\), \(B\), \(C\) : \(\psi_1=((A\to B)\land(A\to C))\to(A\to(B\land C))\), \(\psi_2=(A\leftrightarrow B)\land(B\leftrightarrow C)\land(A\leftrightarrow\neg C)\), \(\psi_3=(A\lor B)\to(A\land C)\). Elles sont écrites en Python comme des fonctions de trois booléens.

  1. Compléter table_verite, qui rend la liste des couples (valeurs, valeur de la formule), et statut, qui rend « valide », « insatisfiable » ou le nombre de modèles. Observer le statut des trois formules.
  2. Observer la cellule SymPy : satisfiable(Not(e)) is False teste la validité, satisfiable(e) is not False la satisfiabilité, simplify_logic une forme réduite. Expliquer pourquoi tester la validité de \(\psi\) revient à tester l’insatisfiabilité de \(\neg\psi\).
  3. Expliquer la forme réduite de \(\psi_3\) et retrouver ses 4 modèles. Expliquer en une phrase pourquoi \(\psi_2\) est insatisfiable.

Étape 2 : l’enquête de la bibliothèque universitaire

Une tablette a disparu de la bibliothèque universitaire. Quatre étudiants étaient présents, et tous disent vrai : Bineta : « ce n’est pas moi » ; Modou : « c’est Khady ou Pape » ; Khady : « si Modou n’y est pour rien, Pape non plus » ; Pape : « si Bineta n’y est pour rien, Modou non plus ». Chaque suspect est un symbole, vrai s’il est coupable.

  1. Observer la fonction temoignages. Compléter consequence, qui vérifie que \(\alpha\) est vraie dans tout modèle de la base (la vérification de modèles du cours, sur une liste de symboles quelconque). Observer les modèles et, pour chaque suspect, si sa culpabilité ou son innocence est une conséquence.
  2. Observer la cellule suivante : la contrainte « un seul coupable » change-t-elle le nombre de modèles ? Expliquer.
  3. Observer la cellule SymPy : l’unique modèle, puis la FNC de la base. Combien de clauses ? Lesquelles sont des clauses de Horn ?

Étape 3 : la résolution par réfutation

  1. Compléter resolvantes et refutation (ensemble de support, comme dans le cours ; la fonction rend le verdict et le nombre de résolvantes nouvelles). Observer la fonction clauses, qui convertit une FNC SymPy en ensembles de littéraux.
  2. Observer la réfutation de \(\neg\mathit{Khady}\) : les clauses produites, dans l’ordre, et leurs parents. Expliquer la chaîne de raisonnement en français.
  3. Observer les preuves de l’innocence de Bineta, Modou et Pape. Expliquer pourquoi Bineta est innocentée sans aucune résolvante nouvelle, et pourquoi la tentative de prouver \(\neg\mathit{Khady}\) rend False sans résolvante.

Étape 4 : les chaînages, la moto Jakarta de Lamine

La moto Jakarta de Lamine ne démarre pas au marché de Kolda. Les règles de diagnostic et les faits (batterie vide, moteur froid) sont dans la cellule ; le but est changer_batterie.

  1. Compléter prouver : le test de la pile, puis les règles qui concluent le but (dans l’ordre), dont toutes les prémisses doivent être prouvées. Observer la réponse du chaînage avant (verdict, nombre de symboles traités) et la liste des buts du chaînage arrière. Expliquer pourquoi batterie_vide apparaît deux fois.
  2. Observer la cellule suivante : une règle \(\mathit{ne\_demarre\_pas}\to\mathit{etincelle\_faible}\) est placée en tête. Expliquer la liste des buts de prouver, et le comportement de prouver_sans_pile.
  3. Observer les mesures sur une base en chaîne de taille \(n\) (une chaîne utile de \(a_0\) à \(a_n\), une chaîne inutile de \(b_0\) à \(b_n\)). Expliquer les deux formules, en \(n\), du nombre de symboles traités et du nombre de buts.
  4. Modifier : placer "a0" avant "b0" dans les faits. Le nombre de symboles traités change-t-il ? Pourquoi ?

Étape 5 : l’unification à la gare routière des Baux maraîchers

Cinq paires de termes : les cars, les billets, les trajets et les départs de la gare routière des Baux maraîchers.

  1. Compléter lier : suivre la liaison de \(v\), puis celle de \(t\) si \(t\) est une variable liée, puis faire le test d’occurrence. Observer les UPG des cinq paires (appliqués jusqu’au bout) et Expliquer chaque échec : conflit de symboles ou test d’occurrence.
  2. Observer la version sans test d’occurrence sur la dernière paire. Expliquer la substitution obtenue et l’erreur de son application.

Étape 6 : calcul symbolique, le vendeur de café Touba

Un vendeur de café Touba achète chaque tasse 100 francs CFA et en vend \(500-p\) par jour au prix \(p\) ; son bénéfice est \((p-100)(500-p)\).

  1. Observer la dérivée, le prix qui l’annule, le bénéfice à ce prix et la dérivée seconde. Expliquer pourquoi ce prix est un maximum.
  2. Observer le quotient différentiel en \(p=200\) pour \(h=10\), 1, 0,1 et 0,01, et son écart à la dérivée exacte. Expliquer la valeur exacte de l’écart en fonction de \(h\), puis les décimales parasites des deux derniers résultats.
  3. Observer la dernière cellule : 12 tasses vendues, de café à 150 francs et de thiakry à 300 francs, pour 2 700 francs. Modifier les données pour 15 tasses et 3 300 francs.

Pour cette séance

Le cours

Les slides

À lire en ligne

À télécharger

Retour au sommet