WikiPrépaLivrets

CCINP Option Informatique MP 2004Sujet et corrigé

Pas encore noté

Téléchargements

  • Rapport du jury : non disponible

Ces sujets peuvent vous intéresser

Lecture du sujet en ligne

L'énoncé complet, avec les formules et les figures, sans ouvrir le PDF.
Afficher ou masquer la section
Les calculatrices sont interdites.
N.B. : Le candidat attachera la plus grande importance à la clarté, à la précision et à la concision de la rédaction.
Si un candidat est amené à repérer ce qui peut lui sembler être une erreur d'énoncé, il le signalera sur sa copie et devra poursuivre sa composition en expliquant les raisons des initiatives qu'il a été amené à prendre.
PrÉAMBULE: Les deux parties qui composent ce sujet sont indépendantes et peuvent être traitées par les candidats dans un ordre quelconque.

Partie I: Automates et langages

Le but de cet exercice est l'étude des propriétés des opérations de dérivation à gauche m^(− 1) ⋅ A et à droite A.m^(− 1) d'un automate fini A selon un mot m.

1 Automate fini

Pour simplifier les preuves, nous nous limiterons au cas des automates finis semi-indéterministes, c'est-à-dire les automates finis non déterministes qui ne contiennent pas de transitions instantanées (ou ε-transitions). Les résultats étudiés s'étendent au cadre des automates finis quelconques.

1.1 Représentation d'un automate fini

Déf. I. 1 (Automate fini semi-indéterministe) Soit l'alphabet X (un ensemble de symboles), soit Λ le symbole représentant le mot vide ( Λ ∉ X ), soit X^⋆ l'ensemble contenant Λ et les mots composés de symboles de X (donc Λ ∈ X^⋆ ), un automate fini semi-indéterministe sur X est un quintuplet A = (Q, X, I, T, γ) composé de:
  • Un ensemble fini d'états : Q;
  • Un ensemble d'états initiaux: I ⊆ Q;
  • Un ensemble d'états terminaux: T ⊆ Q;
  • Une relation de transition confondue avec son graphe : γ ⊆ Q × X × Q.
Pour une transition ( o, e, d ) donnée, nous appelons o l'origine de la transition, e l'étiquette de la transition et d la destination de la transition.
Remarquons que γ est le graphe d'une application de transition δ : Q × X → P(Q) dont les valeurs sont définies par:
∀o ∈ Q, ∀e ∈ X, δ(o, e) = {d ∈ Q|(o, e, d) ∈ γ}
La notation γ est plus adaptée que δ à la formalisation et la construction des preuves dans le cadre des automates indéterministes.

1.2 Représentation graphique d'un automate

Les automates peuvent être représentés par un schéma suivant les conventions:
  • les valeurs de la relation de transition γ sont représentées par un graphe orienté dont les nœuds sont les états et les arêtes sont les transitions;
  • un état initial est entouré d'un cercle i;
  • un état terminal est entouré d'un double cercle (t);
  • un état qui est à la fois initial et terminal est entouré d'un triple cercle (it);
  • une arête étiquetée par le symbole e ∈ X va de l'état o à l'état d si et seulement si (o, e, d) ∈ γ.
Exemple I. 1 L'automate E = (Q, X, I, T, γ) avec :
Q = {A, B, C, D, E}; X = {a, b}; I = {A, B}; T = {D, E}; γ = {(A, a, C), (A, b, D), (B, a, D), (B, b, B), (C, b, E), (D, a, C), (E, a, C)}
est représenté par le graphe suivant:

1.3 Langage reconnu par un automate fini

Soit γ^⋆ l'extension de γ à Q × X^⋆ × Q définie par :
{∀q ∈ Q, (q, Λ, q) ∈ γ^⋆; ∀e ∈ X, ∀m ∈ X^⋆, ∀o ∈ Q, ∀d ∈ Q, (o, e.m, d) ∈ γ^⋆ ⇔ ∃q ∈ Q, ((o, e, q) ∈ γ) ∧ ((q, m, d) ∈ γ^⋆)
Le langage sur X^⋆ reconnu par un automate fini est:
L(A) = {m ∈ X^⋆|∃o ∈ I, ∃d ∈ T, (o, m, d) ∈ γ^⋆}
Question I. 1 Donner sans la justifier une expression régulière ou ensembliste représentant le langage reconnu par l'automate E de l'exemple I.1.

2 Opérations de dérivation

2.1 Définitions

Soient les opérations internes sur les automates finis semi-indéterministes définies par:
Déf. I. 2 (Dérivées selon un mot) Soient A = (Q, X, I, T, γ) un automate fini semi-indéterministe et m ∈ X^⋆, les automates m^(− 1).A (dérivation à gauche selon m ) et A.m^(− 1) (dérivation à droite selon m ) sont définis par:
m^(− 1) ⋅ A = (Q, X, {q ∈ Q|∃i ∈ I, (i, m, q) ∈ γ^⋆}, T, γ); A ⋅ m^(− 1) = (Q, X, I, {q ∈ Q|∃t ∈ T, (q, m, t) ∈ γ^⋆}, γ)
Question I. 2 En considérant l'exemple I.1, construire les automates a^(− 1).E, b^(− 1).E, E.a^(− 1) et E.b^(− 1) (seuls les états et les transitions utiles, c'est-à-dire accessibles depuis les états initiaux, devront être construits).
Question I. 3 Caractériser les langages reconnus par a^(− 1) ⋅ E, b^(− 1) ⋅ E, E ⋅ a^(− 1)E ⋅ b^(− 1), par une expression régulière ou ensembliste.

2.2 Propriétés

Question I. 4 Montrer que : si A est un automate fini semi-indéterministe et m ∈ X^⋆ un mot, alors m^(− 1). A et A. m^(− 1) sont des automates finis semi-indéterministes.
Question I. 5 Montrer que:
∀m ∈ X^⋆, ∀n ∈ X^⋆, ∀o ∈ Q, ∀q ∈ Q, ∀d ∈ Q, (o, m, q) ∈ γ^⋆ ∧ (q, n, d) ∈ γ^⋆ ⇔ (o, m.n, d) ∈ γ^⋆
Question I. 6 Soit A un automate fini semi-indéterministe, montrer que:
{∀m ∈ X^⋆, ∀n ∈ X^⋆, n ∈ L(m^(− 1) ⋅ A) ⇔ m ⋅ n ∈ L(A); ∀m ∈ X^⋆, ∀n ∈ X^⋆, n ∈ L(A ⋅ m^(− 1)) ⇔ n ⋅ m ∈ L(A)

Partie II : Algorithmique et programmation en CaML

Cette partie doit être traitée par les étudiants qui ont utilisé le langage CaML dans le cadre des enseignements d'informatique. Les fonctions écrites devront être récursives ou faire appel à des fonctions auxiliaires récursives. Elles ne devront pas utiliser d'instructions itératives (for, while, ...) ni de références.
Format de desciption d'une fonction : La description d'une fonction, lorsque celle-ci est demandée, c'est-à-dire aux questions II. 23 et II.29, doit au moins contenir:
  1. L’objectif général;
  2. Le rôle des paramètres de la fonction;
  3. Les contraintes sur les valeurs des paramètres;
  4. Les caractéristiques du résultat renvoyé par la fonction;
  5. Le rôle des variables locales à la fonction;
  6. Le principe de l'algorithme;
  7. Des arguments de terminaison du calcul pour toutes les valeurs des paramètres qui vérifient les contraintes présentées au point 3.
L'objectif de ce problème est l'étude d'une stratégie complète et cohérente d'interrogation d'une base de connaissances. Une base de connaissances est une représentation de relations logiques existant entre des faits. Cette stratégie repose sur un algorithme de construction d'une base complète, cohérente et minimale. Cet algorithme qui préserve le contenu logique de la base est généralement appelé << complétion >> de la base.

1 Préliminaire: Calcul des propositions

La représentation d'une base de connaissances repose sur le calcul des propositions.
Déf. II. 1 (Propositions) Soit F = {f_0, f_1, …} un ensemble dénombrable de symboles, appelés faits (ou variables propositionnelles), soient les constantes vrai et faux notées T, ⊥, soit l'opérateur unaire ¬ (négation), soient les opérateurs binaires ∨ (disjonction), ∧ (conjonction), ⇒ (implication); l'ensemble P(F) des propositions est le plus petit ensemble tel que:
− F ⊆ P(F);
− {⊤, ⊥ } ⊆ P(F);
  • si P ∈ P(F) alors ¬P ∈ P(F);
  • si P_1, P_2 ∈ P^2(F) et op ∈ { ∨, ∧, ⇒ } alors P_1 op P_2 ∈ P(F);
  • les propositions de P(F) sont finies, c'est-à-dire obtenues par application d'un nombre fini de fois des règles précédentes.
Nous noterons les faits en utilisant les minuscules de l'alphabet romain. Nous noterons les propositions et les ensembles de faits en utilisant les majuscules de l'alphabet romain.
Déf. II. 2 (Valuation) Soit 𝔹 = {0, 1} les valeurs de vérité, une valuation est une application σ : F → 𝔹. Cette application est étendue en une application unique σ^ : P(F) → 𝔹 par les égalités :
σ^(⊤) = 1; σ^(⊥) = 0; σ^(f_i) = σ(f_i); σ^(¬P) = 1 − σ^(P); σ^(P_1 ∨ P_2) = 1 − (1 − σ^(P_1)) × (1 − σ^(P_2)); σ^(P_1 ∧ P_2) = σ^(P_1) × σ^(P_2); σ^(P_1 ⇒ P_2) = 1 − σ^(P_1) × (1 − σ^(P_2))
Déf. II. 3 (Équivalence) Soient deux propositions P_1, P_2 éléments de P(F), P_1 est équivalente à P_2 (notée P_1 ≡ P_2 ) si et seulement si pour toute valuation σ, σ^(P_1) = σ^(P_2).
Question II. 1 Montrer que a ⇒ b ≡ ¬a ∨ b.
Déf. II. 4 (Tautologie) Soit une proposition P ∈ P(F), P est une tautologie si et seulement si P ≡ ⊤.
Déf. II. 5 (Proposition absurde) Soit une proposition P ∈ P(F), P est absurde si et seulement si P≡⊥.
Déf. II. 6 (Littéral) Un littéral est une proposition qui prend l'une des formes suivantes :
  • un fait (littéral positif);
  • la négation d'un fait (littéral négatif).
Déf. II. 7 (Clause, clause duale) Une clause est une disjonction de littéraux deux à deux distincts. Une clause duale est une conjonction de littéraux deux à deux distincts.
Exemple II. 1c ∨ ¬b ∨ a est une clause. b ∧ c ∧ ¬a est une clause duale.
Déf. II. 8 (Forme conjonctive, disjonctive) Une forme conjonctive est une conjonction de clauses. Une forme disjonctive est une disjonction de clauses duales.
Exemple II. 2(a ∨ ¬c) ∧ ¬b est une forme conjonctive. c ∨ (¬a ∧ b) est une forme disjonctive.
Question II. 2 Soit la proposition P = (a ∧ c⇒⊥) ∧ (a ⇒ b) ∧ (⊤ ⇒ b ∨ d), transformer P en une forme conjonctive C, puis en une forme disjonctive D telles que P ≡ C ≡ D. Vous utiliserez pour cela les formules de De Morgan.

2 Représentation et codage d'un ensemble de faits

La représentation et les opérations de manipulation des bases de connaissances reposent sur la structure d'ensemble. Nous allons dans une première étape étudier un codage de cette structure qui contiendra des faits. Cette structure sera ensuite adaptée aux connaissances.

2.1 Codage d'un fait

Un fait est représenté par le type de base string.
type fait == string;;

2.2 Codage d'un ensemble de faits

Nous allons utiliser un codage extrêmement simple : un ensemble est une liste contenant exactement un exemplaire de chaque élément contenu dans l'ensemble. Les opérations de manipulation d'un ensemble devront préserver cette propriété.
Un ensemble de faits est représenté par le type faits équivalent à une liste de fait.
type faits == fait list;;
Le parcours d'un ensemble sera donc effectué de la même manière que celui d'une liste.
Nous allons maintenant définir plusieurs opérations sur les ensembles de faits qui pourront être utilisées dans la suite du sujet. Ces opérations seront ensuite étendues aux ensembles de connaissances.
Nous supposons que toutes les listes représentant des ensembles, qui sont passées comme paramètres des fonctions, ne contiennent au plus qu'une fois chaque élément.

2.3 Opération sur la structure d'ensemble

Pour les calculs de complexité, nous noterons |E| la taille de l'ensemble E, c'est-à-dire le nombre de faits qu'il contient.

2.3.1 Appartenance à un ensemble

Une première opération consiste à tester l'appartenance d'un fait à un ensemble.
Question II. 3 Écrire en CaML une fonction appartenance de type fait -> faits -> bool telle que l'appel (appartenance fE ) renvoie la valeur true si l'ensemble E contient le fait f et la valeur false sinon. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.
Question II. 4 Donner un exemple de valeurs des paramètres f et E de la fonction appartenance qui correspond au pire cas en nombre d'appels récursifs effectués.
Calculer une estimation de la complexité dans le pire cas de la fonction appartenance en fonction de la taille de l'ensemble E. Cette estimation ne prendra en compte que le nombre d'appels récursifs effectués.

2.3.2 Ajout dans un ensemble

La deuxième opération est l'ajout d'un fait à un ensemble.
Question II. 5 Écrire en CaML une fonction ajout de type fait -> faits -> faits telle que l'appel (ajout fE ) renvoie un ensemble contenant les mêmes faits que l'ensemble E ainsi que le fait f s'il ne figurait pas déjà dans E. L'ensemble renvoyé contiendra exactement une fois le fait f. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.

2.3.3 Inclusion entre deux ensembles

La troisième opération est le test d'inclusion du contenu de deux ensembles.
Question II. 6 Écrire en CaML une fonction inclusion de type faits -> faits -> bool telle que l'appel (inclusion E1 E2) renvoie la valeur true si l'ensemble E2 contient au moins les mêmes faits que l'ensemble E1 et la valeur false sinon. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.
Question II. 7 Donner un exemple de valeurs des paramètres E1 et E2 de la fonction inclusion qui correspond au pire cas en nombre d'appels récursifs effectués.
Calculer une estimation de la complexité dans le pire cas de la fonction inclusion en fonction des tailles des ensembles E1 et E2. Cette estimation ne prendra en compte que le nombre d'appels récursifs effectués.

2.3.4 Égalité entre deux ensembles

La quatrième opération est le test d'égalité du contenu de deux ensembles.
Question II. 8 Écrire en CaML une fonction egalite de type faits -> faits -> bool telle que l'appel (egalite E1 E2) renvoie la valeur true si les deux ensembles E1 et E2 contiennent exactement les mêmes faits et la valeur false sinon. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.

2.3.5 Soustraction de deux ensembles

La dernière opération étudiée est la construction d'un ensemble résultant de la soustraction d'un ensemble depuis un autre ensemble.
Question II. 9 Écrire en CaML une fonction soustraction de type faits -> faits -> faits telle que l'appel (soustraction E1 E2) renvoie un ensemble contenant les faits qui sont contenus dans E1 et ne sont pas contenus dans E2. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.

2.3.6 Autres opérations prédéfinies

Nous supposons prédéfinies les fonctions suivantes pour les ensembles, dont le calcul se termine quelles que soient les valeurs de leurs paramètres. Elles pourront éventuellement être utilisées dans les réponses aux questions:
  • union : faits -> faits -> faits telle que l'appel (union E1 E2) renvoie un ensemble contenant les faits contenus dans E1 ainsi que les faits contenus dans E2 ;
  • intersection : faits -> faits -> faits telle que l'appel (intersection E1 E2) renvoie un ensemble contenant les faits contenus à la fois dans E1 et dans E2.

3 Représentation et codage d'une connaissance

3.1 Représentation d'une connaissance

Déf. II. 9 (Connaissance) Une connaissance γ notée γ = H⊢C est composée de deux ensembles finis de faits (ou variables propositionnelles): les hypothèses H = {h_i}_(i ∈ I) et les conclusions C = {c_j}_(j ∈ J).
Nous noterons les connaissances en utilisant les minuscules de l'alphabet grec.
Déf. II. 10 (Interprétation logique) L'interprétation logique, notée I(γ), d'une connaissance γ = {h_i}_(i ∈ I)⊢{c_j}_(j ∈ J) est:
I(γ) = (⊤ ∧ ⋀_(i ∈ I)h_i) ⇒ (⊥ ∨ ⋁_(j ∈ J)c_j)
Intuitivement, elle signifie que sous les hypothèses de {h_i}_(i ∈ I), nous pouvons déduire une des conclusions de {c_j}_(j ∈ J). ⊤ permet de traiter le cas I = ∅. ⊥ permet de traiter le cas J = ∅. Notons que:
− I(∅⊢{c_j}_(j ∈ J)) = ⊤ ⇒ (⊥ ∨ ⋁_(j ∈ J)c_j);; − I({h_i}_(i ∈ I)⊢∅) = (⊤ ∧ ⋀_(i ∈ I)h_i)⇒⊥;; − I(∅⊢∅) = ⊤⇒⊥.
Exemple II. 3 Les formules logiques suivantes sont des connaissances:
− {a}⊢{b}; − {a, c}⊢∅; − ∅⊢{b, d}
Question II. 10 Soit γ = {h_i}_(i ∈ I)⊢{c_j}_(j ∈ J) une connaissance quelconque, donner une clause P telle que I(γ) ≡ P.
Déf. II. 11 (Connaissance absurde) Une connaissance γ est absurde si et seulement si son interprétation I(γ) est absurde.
Question II. 11 Montrer que la seule connaissance absurde est ∅⊢∅.

3.2 Codage d'une connaissance

Pour les variables ou les constantes dont le nom est pris dans l'alphabet grec ( γ, … ), l'identifiant en CaML sera leur nom en toute lettre (gamma, ...).
Une connaissance est représentée par le type connaissance équivalent à un couple composé de deux ensembles de faits.
type connaissance == faits * faits ;;
Question II. 12 Écrire en CaML une fonction comparaison de type connaissance -> connaissance -> bool telle que l'appel (comparaison gamma1 gamma2) renvoie la valeur true si les deux connaissances gamma1 et gamma2 contiennent exactement les mêmes hypothèses et conclusions et la valeur false sinon. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.

4 Représentation et codage d'une base de connaissances

4.1 Représentation d'une base de connaissances

Déf. II. 12 (Base de connaissances) Une base de connaissances Ω est un ensemble fini de connaissances Ω = {γ_k}_(k ∈ K).
Nous noterons les bases de connaissances en utilisant les majuscules de l'alphabet grec.
Déf. II. 13 (Interprétation logique) L'interprétation logique, notée I(Ω), d'une base Ω = {γ_k}_(k ∈ K) est définie par:
I(Ω) = ⊤ ∧ ⋀_(k ∈ K)I(γ_k)
Elle correspond à la conjonction des interprétations logiques de chaque connaissance.
Notons que: I(∅) = ⊤.
Question II. 13 Soit Ω = {γ_k}_(k ∈ K) avec γ_k = {h_i}_(i ∈ I_k)⊢{c_j}_(j ∈ J_k) une base de connaissances quelconque, donner une forme conjonctive C telle que I(Ω) ≡ C.
Déf. II. 14 (Équivalence) Soient deux bases Ω_1 et Ω_2, Ω_1 est équivalente à Ω_2 (notée Ω_1 ≡ Ω_2 ) si et seulement si I(Ω_1) ≡ I(Ω_2).

4.2 Codage d'une base de connaissances

Une base de connaissances est représentée par le type base équivalent à une liste de connaissances.
type base == connaissance list;;
Exemple II. 4 La base composée des connaissances de l'exemple II. 3 sera représentée par la valeur :
[
( [ "a" ] , [ "b" ] ) ;
( [ "a" ; "c" ] , [] ) ;
( [ ] , [ "b" ; "d" ] )
]
Une base est un ensemble de connaissances. Il est donc nécessaire d'adapter les opérations définies dans la sous-section 2.2 sur les ensembles de faits.
Nous supposons prédéfinies les fonctions suivantes pour les bases, dont le calcul se termine quelles que soient les valeurs de leurs paramètres. Elles pourront éventuellement être utilisées dans les réponses aux questions:
  • appartenanceB : connaissance -> base -> bool
  • ajoutB : connaissance -> base -> base
  • inclusionB : base -> base -> bool
  • egaliteB : base -> base -> bool
  • unionB : base -> base -> base
  • intersectionB : base -> base -> base
  • soustractionB : base -> base -> base

5 Élimination des tautologies

Une base de connaissances peut contenir des connaissances inutiles, c'est-à-dire qui n'apportent aucune information pertinente lors d'une interrogation, par exemple les tautologies. Pour réduire la taille de la base et les coûts de l'opération d'interrogation, nous nous intéressons à l'élimination des tautologies.
Déf. II. 15 (Tautologie) Une connaissance γ est une tautologie si et seulement si son interprétation I(γ) est une tautologie.
Question II. 14 Quelles sont les tautologies parmi les connaissances suivantes (justifier vos réponses) :
− γ_1 = {a, b}⊢{c};; − γ_2 = {a}⊢{a};; − γ_3 = {b}⊢{b, c};; − γ_4 = {a, c}⊢{c};; − γ_5 = {b}⊢∅;; − γ_6 = ∅⊢{c}.
Question II. 15 Donner une relation entre les hypothèses et les conclusions d'une connaissance qui soit une condition nécessaire et suffisante pour que cette connaissance soit une tautologie. Donner une preuve de cette condition.
Nous supposons prédéfinie la fonction tautologie de type connaissance -> bool telle que l'appel (tautologie gamma) renvoie la valeur true si la connaissance gamma est une tautologie et la valeur false sinon. Son calcul se termine quelles que soient les valeurs de son paramètre. Elle pourra éventuellement être utilisée dans les réponses aux questions.
Question II. 16 Soit Ω une base et γ une tautologie, montrer que Ω ∪ {γ} ≡ Ω.
Déf. II. 16 Soit Ω une base, nous noterons ] Ω [ la base Ω privée de ses tautologies, c'est-à-dire:
]Ω[ = {γ ∈ Ω|γ≢⊤}
Nous pouvons déduire de la question II. 16 que ]Ω[ ≡ Ω.
Question II. 17 Écrire en CaML une fonction elimination de type base -> base telle que l'appel (elimination Omega) renvoie une base de connaissances contenant les mêmes connaissances que ]Ω [. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.

6 Minimisation d'une base de connaissances

Une base de connaissances peut contenir des connaissances redondantes, en particulier, elle peut contenir des connaissances plus générales que d'autres. Pour réduire la taille de la base et les coûts de l'opération d'interrogation, nous nous intéressons à la minimisation de la base, c'est-à-dire à ne conserver que les connaissances les plus générales.
Déf. II. 17 Une connaissance γ_1 = H_1⊢C_1 est dite plus générale qu'une connaissance γ_2 = H_2⊢C_2 si et seulement si H_1 ⊆ H_2 et C_1 ⊆ C_2. Cette relation sera notée γ_2≺γ_1.
Question II. 18 Donner les relations ≺ entre les connaissances suivantes:
− γ_1 = {a, b}⊢{c, d};; − γ_2 = {a, c}⊢{b, d};; − γ_3 = {a}⊢{d};; − γ_4 = {c}⊢{b, d};; − γ_5 = ∅⊢∅.
Question II. 19 Soient deux connaissances γ_1 et γ_2, montrer que les bases {γ_1, γ_2} et {γ_1} sont équivalentes si et seulement si γ_2≺γ_1. Pour cela, vous pouvez considérer une valuation σ et envisager les différents cas possibles.
Déf. II. 18 (Base minimale) Soit Ω une base de connaissance, la base minimale [ [Ω[ [ associée à Ω est définie par:
[ [Ω[ [ = {β ∈ Ω|∀γ ∈ Ω, γ ≠ β ⇒ β⊀γ}
Nous pouvons déduire de la question II. 19 que ] ]Ω[ [Ω.
Question II. 20 Écrire en CaML une fonction absorbable de type connaissance -> base -> bool telle que l'appel (absorbable gamma Omega) renvoie la valeur true si la base Omega contient une connaissance plus générale que gamma et la valeur false sinon. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.
Nous supposons prédéfinie la fonction minimisation de type base -> base telle que l'appel (minimisation Omega) renvoie ] ]Ω. Son calcul se termine quelles que soient les valeurs de son paramètre. Elle pourra éventuellement être utilisée dans les réponses aux questions.

7 Complétion d'une base de connaissances

La complétion d'une base de connaissances consiste à construire l'ensemble de toutes les connaissances qui peuvent être déduites d'une base donnée. Cette opération permet ensuite de réduire les coûts d'interrogation de la base.
Déf. II. 19 (Déduction de connaissances) Soient les connaissances γ_1 = H_1⊢C_1 et γ_2 = H_2⊢C_2, l'opérateur ▹ de déduction de connaissances construit une base notée γ_1▹γ_2 et définie par:
γ_1▹γ_2 = {(H_1∖{f}) ∪ H_2⊢C_1 ∪ (C_2∖{f})|f ∈ H_1 ∩ C_2}
Notons que γ_1▹γ_2 = ∅ si H_1 ∩ C_2 = ∅.
L'ensemble des connaissances qui peuvent être déduites d'une base Ω est l'ensemble des connaissances construites par application d'un nombre quelconque de fois de l'opérateur ▹ à partir des connaissances de Ω.
Question II. 21 Appliquer l'opérateur ▹ sur les connaissances suivantes (ne donner que les résultats différents de ∅ ) :
− γ_1 = {a, b}⊢{c, d};; − γ_2 = {b, c}⊢{e};; − γ_3 = {e}⊢∅;; − γ_4 = ∅⊢{b, c}.
Question II. 22 Soient les connaissances γ_1 = H_1⊢C_1 et γ_2 = H_2⊢C_2, montrer que si |H_1 ∩ C_2| > 1 alors γ_1▹γ_2 ne contient que des tautologies. Que peut-on en conclure?
La composition d'une connaissance γ et d'une base Ω consiste à appliquer l'opérateur de déduction ▹ sur γ et sur chaque connaissance de Ω.
Nous souhaitons écrire une fonction composition qui prend en paramètre une connaissance γ et une base Ω et qui construit une nouvelle base contenant les connaissances résultant de la composition de gamma avec chaque connaissance de la base Omega. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.
Question II. 23 Décrire cette fonction composition et expliquer son algorithme selon le format présenté en page 4.
Question II. 24 Écrire en CaML cette fonction composition de type connaissance -> base -> base telle que l'appel (composition gamma Omega) renvoie une base contenant les connaissances résultant de la composition de gamma avec les connaissances de la base Omega. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.
Nous supposons prédéfinie la fonction deduction de type base -> base telle que l'appel (deduction Omega) renvoie une base de connaissances qui contient les connaissances de la base Omega ainsi que le résultat des compositions deux à deux des connaissances de Omega. Son calcul se termine quelles que soient les valeurs de son paramètre. Elle pourra éventuellement être utilisée dans les réponses aux questions.
Question II. 25 Soient deux connaissances γ_1 = H_1⊢C_2 et γ_2 = H_2⊢C_2 telles que H_1 ∩ C_2 = {f}, montrer que les bases {γ_1, γ_2} ∪ γ_1▹γ_2 et {γ_1, γ_2} sont équivalentes.
Question II. 26 Soit une base de connaissances quelconque Ω, soit la suite {Ω_i} définie par:
{Ω_0 = Ω; Ω_(i + 1) = Ω_i ∪ ⋃_(γ_i, γ_j ∈ Ω_i^2)γ_i▹γ_j
Nous admettrons que le résultat de la question II. 25 peut être étendu à: ∀i ∈ ℕ, Ω_(i + 1) ≡ Ω_i.
  1. Montrer que la suite {Ω_i} est croissante;
  2. Montrer que: ∃k ∈ ℕ, Ω_(k + 1) = Ω_k (soit l = min{k ∈ ℕ|Ω_(k + 1) = Ω_k}, nous noterons alors Ω¯ = Ω_l et nous appelerons Ω¯ la complétion de la base Ω );
  3. Montrer que Ω¯ ≡ Ω.
Question II. 27 Calculer la complétion Ω¯ de la base Ω contenant les connaissances suivantes :
− γ_1 = {a, b}⊢{c, d};
− γ_2 = {b, c}⊢{e};
− γ_3 = {e}⊢∅.
L'élimination des tautologies et la minimisation de la base obtenue permettent ensuite de réduire la taille de la base et les coûts d'interrogation.
Question II. 28 Éliminer les tautologies et minimiser la réponse que vous avez proposée pour la question précédente.
Nous souhaitons écrire une fonction completion qui prend en paramètre une base Ω et qui construit une nouvelle base contenant les mêmes connaissances que Ω¯. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.
Question II. 29 Décrire cette fonction completion et expliquer son algorithme selon le format présenté en page 4.
Question II. 30 Écrire en CaML cette fonction completion de type base -> base telle que l'appel (completion Omega) renvoie une base de connaissances contenant les mêmes connaissances que Ω¯. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.

8 Interrogation d'une base

Les connaissances contenues dans la base établissent un lien entre des faits << hypothèses >> et des faits << conclusions >>. Intuitivement, l'interrogation de la base consiste à:
  • compléter la base (voir section 7), minimiser la base complétée (voir section 6) et en éliminer les tautologies (voir section 5);
  • fournir une liste de faits ≪ vrais ≫ et une liste de faits ≪ faux ≫;
  • intégrer ces faits dans la base complétée;
  • rendre la base obtenue minimale (voir section 6) pour obtenir la réponse à la requête.
Définissons ceci formellement:
Déf. II. 20 (Interrogation d'une base) Soit une base Ω, la réponse à la requête composée des faits vrais V et des faits faux F est la base Ω/(V, F) définie par:
Ω/(V, F) = 𝕀{(H∖V)⊢(C∖F)|H⊢C ∈ ]𝕀Ω¯[ [[}[ [
Question II. 31 Soit la base de connaissances proposée à la question II.27, construire la réponse à la requête V = {b}, F = {d}.
Question II. 32 Montrer que ](Ω/(V, F))[ ≡ Ω/(V, F).
Question II. 33 Montrer que (Ω/(V, F)^–)^– ≡ Ω/(V, F).
Question II. 34 Écrire en CaML une fonction interrogation de type faits -> faits -> base -> base telle que l'appel (interrogation V F Omega) renvoie une base de connaissances contenant les mêmes connaissances que Ω/(V, F). Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.

Partie II : Algorithmique et programmation en PASCAL

Cette partie doit être traitée par les étudiants qui ont utilisé le langage PASCAL dans le cadre des enseignements d'informatique. Les fonctions écrites devront être récursives ou faire appel à des fonctions auxiliaires récursives. Elles ne devront pas utiliser d'instructions itératives (for, while, repeat,...).
Format de desciption d'une fonction: La description d'une fonction, lorsque celle-ci est demandée, c'est-à-dire aux questions II. 23 et II.29, doit au moins contenir:
  1. L'objectif général;
  2. Le rôle des paramètres de la fonction;
  3. Les contraintes sur les valeurs des paramètres;
  4. Les caractéristiques du résultat renvoyé par la fonction;
  5. Le rôle des variables locales à la fonction;
  6. Le principe de l'algorithme;
  7. Des arguments de terminaison du calcul pour toutes les valeurs des paramètres qui vérifient les contraintes présentées au point 3.
L'objectif de ce problème est l'étude d'une stratégie complète et cohérente d'interrogation d'une base de connaissances. Une base de connaissances est une représentation de relations logiques existant entre des faits. Cette stratégie repose sur un algorithme de construction d'une base complète, cohérente et minimale. Cet algorithme qui préserve le contenu logique de la base est généralement appelé ≪ complétion ≫ de la base.

1 Préliminaire: Calcul des propositions

La représentation d'une base de connaissances repose sur le calcul des propositions.
Déf. II. 1 (Propositions) Soit F = {f_0, f_1, …} un ensemble dénombrable de symboles, appelés faits (ou variables propositionnelles), soient les constantes vrai et faux notées T, ⊥, soit l'opérateur unaire ¬ (négation), soient les opérateurs binaires ∨ (disjonction), ∧ (conjonction), ⇒ (implication); l'ensemble P(F) des propositions est le plus petit ensemble tel que:
− F ⊆ P(F);
− {⊤, ⊥ } ⊆ P(F);
  • si P ∈ P(F) alors ¬P ∈ P(F);
  • si P_1, P_2 ∈ P^2(F) et op ∈ { ∨, ∧, ⇒ } alors P_1 op P_2 ∈ P(F);
  • les propositions de P(F) sont finies, c'est-à-dire obtenues par application d'un nombre fini de fois des règles précédentes.
Nous noterons les faits en utilisant les minuscules de l'alphabet romain. Nous noterons les propositions et les ensembles de faits en utilisant les majuscules de l'alphabet romain.
Déf. II. 2 (Valuation) Soit 𝔹 = {0, 1} les valeurs de vérité, une valuation est une application σ : F → 𝔹. Cette application est étendue en une application unique σ^ : P(F) → 𝔹 par les égalités :
σ^(⊤) = 1; σ^(⊥) = 0; σ^(f_i) = σ(f_i); σ^(¬P) = 1 − σ^(P); σ^(P_1 ∨ P_2) = 1 − (1 − σ^(P_1)) × (1 − σ^(P_2)); σ^(P_1 ∧ P_2) = σ^(P_1) × σ^(P_2); σ^(P_1 ⇒ P_2) = 1 − σ^(P_1) × (1 − σ^(P_2))
Déf. II. 3 (Équivalence) Soient deux propositions P_1, P_2 éléments de P(F), P_1 est équivalente à P_2 (notée P_1 ≡ P_2 ) si et seulement si pour toute valuation σ, σ^(P_1) = σ^(P_2).
Question II. 1 Montrer que a ⇒ b ≡ ¬a ∨ b.
Déf. II. 4 (Tautologie) Soit une proposition P ∈ P(F), P est une tautologie si et seulement si P ≡ ⊤.
Déf. II. 5 (Proposition absurde) Soit une proposition P ∈ P(F), P est absurde si et seulement si P≡⊥.
Déf. II. 6 (Littéral) Un littéral est une proposition qui prend l'une des formes suivantes :
  • un fait (littéral positif);
  • la négation d'un fait (littéral négatif).
Déf. II. 7 (Clause, clause duale) Une clause est une disjonction de littéraux deux à deux distincts. Une clause duale est une conjonction de littéraux deux à deux distincts.
Exemple II. 1c ∨ ¬b ∨ a est une clause. b ∧ c ∧ ¬a est une clause duale.
Déf. II. 8 (Forme conjonctive, disjonctive) Une forme conjonctive est une conjonction de clauses. Une forme disjonctive est une disjonction de clauses duales.
Exemple II. 2(a ∨ ¬c) ∧ ¬b est une forme conjonctive. c ∨ (¬a ∧ b) est une forme disjonctive.
Question II. 2 Soit la proposition P = (a ∧ c⇒⊥) ∧ (a ⇒ b) ∧ (⊤ ⇒ b ∨ d), transformer P en une forme conjonctive C, puis en une forme disjonctive D telles que P ≡ C ≡ D. Vous utiliserez pour cela les formules de De Morgan.

2 Représentation et codage d'un ensemble de faits

La représentation et les opérations de manipulation des bases de connaissances reposent sur la structure d'ensemble. Nous allons dans une première étape étudier un codage de cette structure qui contiendra des faits. Cette structure sera ensuite adaptée aux connaissances.

2.1 Codage d'un fait

Un fait est représenté par le type de base STRING.

2.2 Codage d'un ensemble de faits

Nous allons utiliser un codage extrêmement simple: un ensemble est une liste contenant exactement un exemplaire de chaque élément contenu dans l'ensemble. Les opérations de manipulation d'un ensemble devront préserver cette propriété.
Un ensemble de faits est représenté par le type de base FAITS correspondant à une liste de faits.
Le parcours d'un ensemble sera donc effectué de la même manière que celui d'une liste.
Nous supposons prédéfinies les constantes et les fonctions suivantes dont le calcul se termine quelles que soient les valeurs de leurs paramètres. Elles pourront éventuellement être utilisées dans les réponses aux questions:
  • NIL représente la liste vide de faits;
  • FUNCTION LF_Ajout(f:FAIT;E:FAITS):FAITS; renvoie une liste de faits composée d'un premier fait f et du reste de la liste contenu dans E;
  • FUNCTION LF_Premier (E:FAITS) : FAIT; renvoie le premier fait de la liste E. Cette liste ne doit pas être vide;
  • FUNCTION LF_Reste(E:FAITS) : FAITS; renvoie le reste de la liste E privée de son premier fait. Cette liste ne doit pas être vide;
  • FUNCTION LF_Juxtaposition(E1:FAITS;E2:FAITS):FAITS; renvoie la liste composée de la liste E1 suivie de la liste E2.
Nous allons maintenant définir plusieurs opérations sur les ensembles de faits qui pourront être utilisées dans la suite du sujet. Ces opérations seront ensuite étendues aux ensembles de connaissances.
Nous supposons que toutes les listes représentant des ensembles, qui sont passées comme paramètres des fonctions, ne contiennent au plus qu'une fois chaque élément.

2.3 Opération sur la structure d'ensemble

Pour les calculs de complexité, nous noterons |E| la taille de l'ensemble E, c'est-à-dire le nombre de faits qu'il contient.

2.3.1 Appartenance à un ensemble

Une première opération consiste à tester l'appartenance d'un fait à un ensemble.
Question II. 3 Écrire en PASCAL une fonction
appartenance( f :FAIT;E:FAITS) :BOOLEAN; telle que l'appel appartenance( f, E ) renvoie la valeur TRUE si l'ensemble E contient le fait f et la valeur FALSE sinon. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.
Question II. 4 Donner un exemple de valeurs des paramètres f et E de la fonction appartenance qui correspond au pire cas en nombre d'appels récursifs effectués.
Calculer une estimation de la complexité dans le pire cas de la fonction appartenance en fonction de la taille de l'ensemble E. Cette estimation ne prendra en compte que le nombre d'appels récursifs effectués.

2.3.2 Ajout dans un ensemble

La deuxième opération est l'ajout d'un fait à un ensemble.
Question II. 5 Écrire en PASCAL une fonction ajout(f:FAIT;E:FAITS) : FAITS; telle que l'appel ajout ( f, E ) renvoie un ensemble contenant les mêmes faits que l'ensemble f ainsi que le fait E s'il ne figurait pas déjà dans E. L'ensemble renvoyé contiendra exactement une fois le fait f. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.

2.3.3 Inclusion entre deux ensembles

La troisième opération est le test d'inclusion du contenu de deux ensembles.
Question II. 6 Écrire en PASCAL une fonction
inclusion(E1:FAITS;E2:FAITS) :BOOLEAN; telle que l'appel
inclusion(E1,E2) renvoie la valeur TRUE si l'ensemble E2 contient au moins les mêmes faits que l'ensemble E1 et la valeur FALSE sinon. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.
Question II. 7 Donner un exemple de valeurs des paramètres E1 et E2 de la fonction inclusion qui correspond au pire cas en nombre d'appels récursifs effectués.
Calculer une estimation de la complexité dans le pire cas de la fonction inclusion en fonction des tailles des ensembles E1 et E2. Cette estimation ne prendra en compte que le nombre d'appels récursifs effectués.

2.3.4 Égalité entre deux ensembles

La quatrième opération est le test d'égalité du contenu de deux ensembles.
Question II. 8 Écrire en PASCAL une fonction
egalite(E1:FAITS;E2:FAITS) :BOOLEAN; telle que l'appel egalite(E1,E2) renvoie la valeur TRUE si les deux ensembles E1 et E2 contiennent exactement les mêmes faits et la valeur FALSE sinon. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.

2.3.5 Soustraction de deux ensembles

La dernière opération étudiée est la construction d'un ensemble résultant de la soustraction d'un ensemble depuis un autre ensemble.
Question II. 9 Écrire en PASCAL une fonction
soustraction(E1:FAITS;E2:FAITS) :FAITS; telle que l'appel
soustraction(E1,E2) renvoie un ensemble contenant les faits qui sont contenus dans E1 et
ne sont pas contenus dans E2. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.

2.3.6 Autres opérations prédéfinies

Nous supposons prédéfinies les fonctions suivantes pour les ensembles, dont le calcul se termine quelles que soient les valeurs de leurs paramètres. Elles pourront éventuellement être utilisées dans les réponses aux questions:
  • union(E1:FAITS;E2:FAITS) :FAITS; renvoie un ensemble contenant les faits contenus dans E1 ainsi que les faits contenus dans E2;
  • intersection(E1:FAITS;E2:FAITS) :FAITS; renvoie un ensemble contenant les faits contenus à la fois dans E1 et dans E2.

3 Représentation et codage d'une connaissance

3.1 Représentation d'une connaissance

Déf. II. 9 (Connaissance) Une connaissance γ notée γ = H⊢C est composée de deux ensembles finis de faits (ou variables propositionnelles): les hypothèses H = {h_i}_(i ∈ I) et les conclusions C = {c_j}_(j ∈ J).
Nous noterons les connaissances en utilisant les minuscules de l'alphabet grec.
Déf. II. 10 (Interprétation logique) L'interprétation logique, notée I(γ), d'une connaissance γ = {h_i}_(i ∈ I)⊢{c_j}_(j ∈ J) est:
I(γ) = (⊤ ∧ ⋀_(i ∈ I)h_i) ⇒ (⊥ ∨ ⋁_(j ∈ J)c_j)
Intuitivement, elle signifie que sous les hypothèses de {h_i}_(i ∈ I), nous pouvons déduire une des conclusions de {c_j}_(j ∈ J). ⊤ permet de traiter le cas I = ∅. ⊥ permet de traiter le cas J = ∅. Notons que:
− I(∅⊢{c_j}_(j ∈ J)) = ⊤ ⇒ (⊥ ∨ ⋁_(j ∈ J)c_j);; − I({h_i}_(i ∈ I)⊢∅) = (⊤ ∧ ⋀_(i ∈ I)h_i)⇒⊥;; − I(∅⊢∅) = ⊤⇒⊥.
Exemple II. 3 Les formules logiques suivantes sont des connaissances:
− {a}⊢{b}; − {a, c}⊢∅; − ∅⊢{b, d}
Question II. 10 Soit γ = {h_i}_(i ∈ I)⊢{c_j}_(j ∈ J) une connaissance quelconque, donner une clause P telle que I(γ) ≡ P.

Déf. II. 11 (Connaissance absurde) Une connaissance γ est absurde si et seulement si son interprétation

I(γ) est absurde.
Question II. 11 Montrer que la seule connaissance absurde est ∅⊢∅.

3.2 Codage d'une connaissance

Pour les variables ou les constantes dont le nom est pris dans l'alphabet grec ( γ, … ), l'identifiant en PASCAL sera leur nom en toute lettre (gamma, ...).
Une connaissance est représentée par le type de base CONNAISSANCE correspondant à un couple composé de deux ensembles de faits.
Nous supposons prédéfinies les constantes et les fonctions suivantes dont le calcul se termine quelles que soient les valeurs de leurs paramètres. Elles pourront éventuellement être utilisées dans les réponses aux questions:
  • FUNCTION C_Creer(H:FAITS;C:FAITS):CONNAISSANCE; renvoie une connaissance dont les hypothèses sont les faits de l'ensemble H et les conclusions sont les faits de l'ensemble C;
  • FUNCTION C_Hypotheses(gamma:CONNAISSANCE):FAITS; renvoie les hypothèses de la connaissance gamma,
  • FUNCTION C_Conclusions(gamma:CONNAISSANCE):FAITS; renvoie les conclusions de la connaissance gamma.
Question II. 12 Écrire en PASCAL une fonction
comparaison(gamma1:CONNAISSANCE;gamma2:CONNAISSANCE) : BOOLEAN; telle que l'appel comparaison(gamma1, gamma2) renvoie la valeur TRUE si les deux connaissances gamma1 et gamma2 contiennent exactement les mêmes hypothèses et conclusions et la valeur FALSE sinon. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.

4 Représentation et codage d'une base de connaissances

4.1 Représentation d'une base de connaissances

Déf. II. 12 (Base de connaissances) Une base de connaissances Ω est un ensemble fini de connaissances Ω = {γ_k}_(k ∈ K).
Nous noterons les bases de connaissances en utilisant les majuscules de l'alphabet grec.
Déf. II. 13 (Interprétation logique) L'interprétation logique, notée I(Ω), d'une base Ω = {γ_k}_(k ∈ K) est définie par :
I(Ω) = ⊤ ∧ ⋀_(k ∈ K)I(γ_k)
Elle correspond à la conjonction des interprétations logiques de chaque connaissance. Notons que: I(∅) = ⊤.
Question II. 13 Soit Ω = {γ_k}_(k ∈ K) avec γ_k = {h_i}_(i ∈ I_k)⊢{c_j}_(j ∈ J_k) une base de connaissances quelconque, donner une forme conjonctive C telle que I(Ω) ≡ C.
Déf. II. 14 (Équivalence) Soient deux bases Ω_1 et Ω_2, Ω_1 est équivalente à Ω_2 (notée Ω_1 ≡ Ω_2 ) si et seulement si I(Ω_1) ≡ I(Ω_2).

4.2 Codage d'une base de connaissances

Une base de connaissances est représentée par le type de base BASE correspondant à une liste de connaissances.
Nous supposons prédéfinies les constantes et les fonctions suivantes dont le calcul se termine quelles que soient les valeurs de leurs paramètres. Elles pourront éventuellement être utilisées dans les réponses aux questions:
  • NIL représente la liste vide de connaissances;
  • FUNCTION B_Ajout(gamma:CONNAISSANCE;Omega:BASE):BASE; renvoie une liste de connaissances composée d'une première connaissance gamma et du reste de la liste contenu dans Omega;
  • FUNCTION B_Premier(Omega:BASE):CONNAISSANCE; renvoie la première connaissance de la liste Omega. Cette liste ne doit pas être vide;
  • FUNCTION B_Reste(Omega:BASE):BASE; renvoie le reste de la liste Omega privée de sa première connaissance. Cette liste ne doit pas être vide;
  • FUNCTION B_Juxtaposition(Omega1:BASE;Omega2:BASE):BASE; renvoie la liste composée de la liste Omega1 suivie de la suite Omega2.
Exemple II. 4 La base composée des connaissances de l'exemple II. 3 sera représentée par la valeur: B_Ajout (
C_Creer( LF_Ajout( "a", NIL), LF_Ajout( "b", NIL ) ),
B_Ajout (
C_Creer( LF_Ajout( "a", LF_Ajout( "c", NIL)), NIL),
B_Ajout (
C_Creer( NIL, LF_Ajout( "b", LF_Ajout( "d", NIL))),
NIL)))
Une base est un ensemble de connaissances. Il est donc nécessaire d'adapter les opérations définies dans la sous-section 2.2 sur les ensembles de faits.
Nous supposons prédéfinies les fonctions suivantes pour les bases, dont le calcul se termine quelles que soient les valeurs de leurs paramètres. Elles pourront éventuellement être utilisées dans les réponses aux questions:
  • appartenanceB(gamma:CONNAISSANCE;Omega:BASE):BOOLEAN;
  • ajoutB(gamma:CONNAISSANCE;Omega:BASE):BASE;
  • inclusionB(Omega1:BASE;Omega2:BASE):BOOLEAN;
  • egaliteB(Omega1:BASE;Omega2:BASE):BASE;
  • unionB(Omega1:BASE;Omega2:BASE):BASE;
  • intersectionB(Omega1:BASE;Omega2:BASE):BASE;
  • soustractionB(Omega1:BASE;Omega2:BASE):BASE;

5 Élimination des tautologies

Une base de connaissances peut contenir des connaissances inutiles, c'est-à-dire qui n'apportent aucune information pertinente lors d'une interrogation, par exemple les tautologies. Pour réduire la taille de la base et les coûts de l'opération d'interrogation, nous nous intéressons à l'élimination des tautologies.
Déf. II. 15 (Tautologie) Une connaissance γ est une tautologie si et seulement si son interprétation I(γ) est une tautologie.
Question II. 14 Quelles sont les tautologies parmi les connaissances suivantes (justifier vos réponses):
− γ_1 = {a, b}⊢{c};; − γ_2 = {a}⊢{a};; − γ_3 = {b}⊢{b, c};; − γ_4 = {a, c}⊢{c};; − γ_5 = {b}⊢∅;; − γ_6 = ∅⊢{c}.
Question II. 15 Donner une relation entre les hypothèses et les conclusions d'une connaissance qui soit une condition nécessaire et suffisante pour que cette connaissance soit une tautologie. Donner une preuve de cette condition.
Nous supposons prédéfinie la fonction tautologie(gamma: CONNAISSANCE) : BOOLEAN; telle que l'appel tautologie(gamma) renvoie la valeur TRUE si la connaissance gamma est une tautologie et la valeur FALSE sinon. Son calcul se termine quelles que soient les valeurs de son paramètre. Elle pourra éventuellement être utilisée dans les réponses aux questions.
Question II. 16 Soit Ω une base et γ une tautologie, montrer que Ω ∪ {γ} ≡ Ω.
Déf. II. 16 Soit Ω une base, nous noterons ] Ω [ la base Ω privée de ses tautologies, c'est-à-dire :
]Ω[ = {γ ∈ Ω|γ≢⊤}
Nous pouvons déduire de la question II. 16 que ]Ω[ ≡ Ω.
Question II. 17 Écrire en PASCAL une fonction elimination(Omega : BASE ) : BASE; telle que l'appel elimination( Omega ) renvoie une base de connaissances contenant les mêmes connaissances que ]Ω [. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.

6 Minimisation d'une base de connaissances

Une base de connaissances peut contenir des connaissances redondantes, en particulier, elle peut contenir des connaissances plus générales que d'autres. Pour réduire la taille de la base et les coûts de l'opération d'interrogation, nous nous intéressons à la minimisation de la base, c'est-à-dire à ne conserver que les connaissances les plus générales.
Déf. II. 17 Une connaissance γ_1 = H_1⊢C_1 est dite plus générale qu'une connaissance γ_2 = H_2⊢C_2 si et seulement si H_1 ⊆ H_2 et C_1 ⊆ C_2. Cette relation sera notée γ_2≺γ_1.
Question II. 18 Donner les relations ≺ entre les connaissances suivantes :
− γ_1 = {a, b}⊢{c, d}; − γ_2 = {a, c}⊢{b, d}; − γ_3 = {a}⊢{d}; − γ_4 = {c}⊢{b, d}; − γ_5 = ∅⊢∅
Question II. 19 Soient deux connaissances γ_1 et γ_2, montrer que les bases {γ_1, γ_2} et {γ_1} sont équivalentes si et seulement si γ_2≺γ_1. Pour cela, vous pouvez considérer une valuation σ et envisager les différents cas possibles.
Déf. II. 18 (Base minimale) Soit Ω une base de connaissance, la base minimale [ [Ω[ [ associée à Ω est définie par:
[ [Ω[ [ = {β ∈ Ω|∀γ ∈ Ω, γ ≠ β ⇒ β⊀γ}
Nous pouvons déduire de la question II. 19 que [ [Ω[ [ ≡ Ω.
Question II. 20 Écrire en PASCAL une fonction
absorbable(gamma: CONNAISSANCE;Omega:BASE) :BOOLEAN; telle que
l'appel absorbable(gamma, Omega) renvoie la valeur TRUE si la base Omega contient une connaissance plus générale que gamma et la valeur FALSE sinon. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.
Nous supposons prédéfinie la fonction minimisation(Omega:BASE) : BASE ; telle que l'appel minimisation(Omega) renvoie une base de connaissances contenant les mêmes connaissances que ] ]Ω[ [. Son calcul se termine quelles que soient les valeurs de son paramètre. Elle pourra éventuellement être utilisée dans les réponses aux questions.

7 Complétion d'une base de connaissances

La complétion d'une base de connaissances consiste à construire l'ensemble de toutes les connaissances qui peuvent être déduites d'une base donnée. Cette opération permet ensuite de réduire les coûts d'interrogation de la base.
Déf. II. 19 (Déduction de connaissances) Soient les connaissances γ_1 = H_1⊢C_1 et γ_2 = H_2⊢C_2, l'opérateur ▹ de déduction de connaissances construit une base notée γ_1▹γ_2 et définie par:
γ_1▹γ_2 = {(H_1∖{f}) ∪ H_2⊢C_1 ∪ (C_2∖{f})|f ∈ H_1 ∩ C_2}
Notons que γ_1▹γ_2 = ∅ si H_1 ∩ C_2 = ∅.
L'ensemble des connaissances qui peuvent être déduites d'une base Ω est l'ensemble des connaissances construites par application d'un nombre quelconque de fois de l'opérateur ▹ à partir des connaissances de Ω.
Question II. 21 Appliquer l'opérateur ▹ sur les connaissances suivantes (ne donner que les résultats différents de ∅ ) :
− γ_1 = {a, b}⊢{c, d};; − γ_2 = {b, c}⊢{e};; − γ_3 = {e}⊢∅;; − γ_4 = ∅⊢{b, c}.
Question II. 22 Soient les connaissances γ_1 = H_1⊢C_1 et γ_2 = H_2⊢C_2, montrer que si |H_1 ∩ C_2| > 1 alors γ_1▹γ_2 ne contient que des tautologies. Que peut-on en conclure?
La composition d'une connaissance γ et d'une base Ω consiste à appliquer l'opérateur de déduction ▹ sur γ et sur chaque connaissance de Ω.
Nous souhaitons écrire une fonction composition qui prend en paramètre une connaissance γ et une base Ω et qui construit une nouvelle base contenant les connaissances résultant de la composition de gamma avec chaque connaissance de la base Omega. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.
Question II. 23 Décrire cette fonction composition et expliquer son algorithme selon le format présenté en page 15.
Question II. 24 Écrire en PASCAL cette fonction composition(gamma: CONNAISSANCE; Omega: BASE ) : BASE; telle que l'appel composition(gamma, Omega) renvoie une base contenant les connaissances résultant de la composition de gamma avec les connaissances de la base Omega. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.
Nous supposons prédéfinie la fonction deduction(Omega:BASE) : BASE; telle que l'appel deduction(Omega) renvoie une base de connaissances qui contient les connaissances de la base Omega ainsi que le résultat des compositions deux à deux des connaissances de Omega. Son calcul se termine quelles que soient les valeurs de son paramètre. Elle pourra éventuellement être utilisée dans les réponses aux questions.
Question II. 25 Soient deux connaissances γ_1 = H_1⊢C_2 et γ_2 = H_2⊢C_2 telles que H_1 ∩ C_2 = {f}, montrer que les bases {γ_1, γ_2} ∪ γ_1▹γ_2 et {γ_1, γ_2} sont équivalentes.
Question II. 26 Soit une base de connaissances quelconque Ω, soit la suite {Ω_i} définie par:
{Ω_0 = Ω; Ω_(i + 1) = Ω_i ∪ ⋃_(γ_i, γ_j ∈ Ω_i^2)γ_i▹γ_j
Nous admettrons que le résultat de la question II. 25 peut être étendu à: ∀i ∈ ℕ, Ω_(i + 1) ≡ Ω_i.
  1. Montrer que la suite {Ω_i} est croissante;
  2. Montrer que: ∃k ∈ ℕ, Ω_(k + 1) = Ω_k (soit l = min{k ∈ ℕ|Ω_(k + 1) = Ω_k}, nous noterons alors Ω¯ = Ω_l et nous appelerons Ω¯ la complétion de la base Ω );
  3. Montrer que Ω¯ ≡ Ω.
Question II. 27 Calculer la complétion Ω¯ de la base Ω contenant les connaissances suivantes :
− γ_1 = {a, b}⊢{c, d};
− γ_2 = {b, c}⊢{e};
− γ_3 = {e}⊢∅.
L'élimination des tautologies et la minimisation de la base obtenue permettent ensuite de réduire la taille de la base et les coûts d'interrogation.
Question II. 28 Éliminer les tautologies et minimiser la réponse que vous avez proposée pour la question précédente.
Nous souhaitons écrire une fonction completion qui prend en paramètre une base Ω et qui construit une nouvelle base contenant les mêmes connaissances que Ω¯. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.
Question II. 29 Décrire cette fonction completion et expliquer son algorithme selon le format présenté en page 15.
Question II. 30 Écrire en PASCAL cette fonction completion(Omega : BASE ) : BASE; telle que l'appel completion(Omega) renvoie une base de connaissances contenant les mêmes connaissances que Ω¯. Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.

8 Interrogation d'une base

Les connaissances contenues dans la base établissent un lien entre des faits << hypothèses >> et des faits << conclusions >>. Intuitivement, l'interrogation de la base consiste à:
  • compléter la base (voir section 7), minimiser la base complétée (voir section 6) et en éliminer les tautologies (voir section 5);
  • fournir une liste de faits ≪ vrais ≫ et une liste de faits ≪ faux ≫;
  • intégrer ces faits dans la base complétée ;
  • rendre la base obtenue minimale (voir section 6) pour obtenir la réponse à la requête.
Définissons ceci formellement:
Déf. II. 20 (Interrogation d'une base) Soit une base Ω, la réponse à la requête composée des faits vrais V et des faits faux F est la base Ω/(V, F) définie par:
Ω/(V, F) = 𝕀{(H∖V)⊢(C∖F)|H⊢C ∈ ]𝕀Ω¯[ [[}[ [
Question II. 31 Soit la base de connaissances proposée à la question II.27, construire la réponse à la requête V = {b}, F = {d}.
Question II. 32 Montrer que ](Ω/(V, F))[ ≡ Ω/(V, F).
Question II. 33 Montrer que (Ω/(V, F))^– ≡ Ω/(V, F).
Question II. 34 Écrire en PASCAL une fonction
interrogation(V:FAITS;F:FAITS;Omega:BASE) :BASE; telle que l'appel
interrogation( V, F, Omega ) renvoie une base de connaissances contenant les mêmes connaissances que Ω/(V, F). Cette fonction devra être récursive ou faire appel à des fonctions auxiliaires récursives.

Fin de l'énoncé

Pas de description pour le moment