Théorie des bases de connaissances : notions de base

publicité
Théorie des bases de connaissances : notions de
base
Marie-Laure Mugnier
Résumé
Ces notes de cours sont à compléter avec les exemples traités en cours.
1
Introduction
Ce cours se situe dans le cadre d’un domaine de recherche appelé "representation
de connaissances et raisonnements" (Knowledge Representation and Reasoning", KR),
qui étudie des langages /formalismes permettant de représenter des connaissances et
d’effectuer des raisonnements sur ces connaissances. Les questions que l’on se pose
sont notamment les suivantes :
— Quelle est l’expressivité d’un formalisme (quel type de connaissances permet-il
de représenter ? quels types de problèmes permet-il de résoudre ?)
— Peut-on donner une sémantique logique à ce formalisme, de façon à ce que les
raisonnements puissent s’exprimer en termes de conséquence sémantique dans
cette logique ?
— Les problèmes fondamentaux sont-ils décidables ? Si oui, quelle est leur complexité théorique ?
— Trouver des algorithmes "efficaces" étant donnée cette complexité.
Ce cours s’intéresse donc aux aspects théoriques essentiellement. Il n’aborde pas
les problèmes de modélisation, c’est-à-dire le passage d’un problème concret à une
formalisation de ce problème.
Un système à base de connaissances est composé (1) d’une base de connaissances
encodant des connaissances sur une application particulière, et (2) de services de raisonnements. Une base de connaissances est composée d’une base de faits et d’une
ontologie, qui encode des connaissances générales sur le domaine d’application. Les
connaissances factuelles et ontologiques sont exprimées en logique du premier ordre.
Toutefois, nous considérerons des fragments particuliers de la logique du premier ordre,
qui permettent de résoudre les problèmes considérés avec une complexité "raisonnable".
Dans ce cours, nous intéresserons principalement à deux problèmes fondamentaux
sur les bases de connaissances :
— Consistance : La base de connaissances est-elle consistante / cohérente / satisfiable, c’est-à-dire admet-elle un modèle (une interprétation logique qui la rend
vraie) ?
— Interrogation : Quel est l’ensemble des réponses à une requête sur la base de
connaissances ?
Ce deuxième problème fait partie de la problématique appelée Ontology-Based
Data Access (OBDA) ou Ontology-Mediated Query Answering (OMQA), c’est-à-dire
1
accès à des données en exploitant les inférences rendues possibles par une ontologie,
problématique qui suscite actuellement beaucoup d’intérêt dans plusieurs domaines de
recherche : KR, web sémantique, bases de données. Vu du côté des bases de données,
on peut dire qu’une base de connaissances est une base de données (la base de faits) à
laquelle on a ajouté une ontologie.
Prenons un exemple simple en médecine : supposons qu’un hôpital gère des données sur ses patients. Les informations stockées concernent notamment le type d’affection dont souffre le patient et le traitement qu’il suit. Un administrateur de l’hôpital
effectuant une requête sur cette base de données pour retrouver les patients atteints
d’un cancer ne trouvera vraisemblablement rien si les connaissances du domaine codées dans l’ontologie ne sont pas exploitées. En effet, les données sur les patients utilisent des termes plus spécifiques que "cancer" : le dossier d’un patient souffrant d’un
lymphome ne sera retrouvé qu’à l’aide d’une inférence à partir de la connaissance "tout
lymphome est un cancer" codée dans l’ontologie. Si de plus la requête concerne les patients atteints d’un cancer et présentant un risque cardiaque, précision non forcément
explicitement présente dans le dossier, il faudra éventuellement faire des inférences à
partir des médicaments que prend le patient, de ses antécédents familiaux connus, etc.
L’ajout de cette couche ontologique "au-dessus" des données a plusieurs intérêts :
— Enrichir le vocabulaire des données, ce qui permet à l’utilisateur de poser des
requêtes avec le niveau de précision qui lui convient ("cancer" par exemple), en
faisant abstraction de la façon dont les données sont stockées dans la base (le
terme/concept "cancer" n’apparaissant pas forcément dans la base) ;
— Relier le vocabulaire de plusieurs sources de données et permettre leur interrogation de façon unifiée (interroger les données de plusieurs hôpitaux qui n’utilisent pas forcément le même vocabulaire pour décrire leurs données) ;
— Inférer de nouveaux faits, ce qui permet de décrire les données de façon incomplète, les connaissances implicites étant codées dans l’ontologie.
2
Le niveau "base de faits"
On définit ici le formalisme de base, qui permet de représenter des faits et des requêtes conjonctives, et de raisonner sur ces objets. On se placera ici dans un fragment
de la logique du premier ordre (FOL, First Order Logic) : le fragment existentiel, positif, conjonctif, sans symbole fonctionnel, noté FOL(∧, ∃).
2.1
Le fragment FOL(∧, ∃)
Un vocabulaire logique est noté V = (P, C) avec P ensemble des prédicats ou
relations (chaque prédicat a une arité, ou nombre d’arguments, supérieure ou égale à
0) et C ensemble des constantes. P est fini, mais C peut être infini (par exemple il peut
inclure l’ensemble des entiers).
Un terme (sur un vocabulaire V) est une variable ("une entité inconnue") ou une
constante ("une entité précise") c ∈ C.
Un atome (sur V) est de la forme p(e1 . . . ek ) où p est un prédicat d’arité k de P et
les ei sont des termes (sur V).
Une formule f du fragment FOL(∧, ∃) sur un vocabulaire V est de la forme
∃x1 . . . ∃xn (A1 ∧ . . . ∧ Ap )
2
où les Aj sont des atomes sur V et les xi sont des variables apparaissant dans les Aj .
Il s’agit d’une formule logique positive, conjonctive, où le seul quantificateur est existentiel. On dit qu’une formule est fermée si chacune de ses variables est dans la portée
d’un quantificateur (existentiel ici). Dans la suite, on considérera qu’une formule de
FOL(∧, ∃) est fermée par défaut (c’est-à-dire s’il n’est pas précisé qu’elle ne l’est pas).
Pour les formules fermées de FOL(∧, ∃), on peut sans ambiguïté adopter une notation
ensembliste : {A1 . . . , Ap }. Petit bémol, les formules ∃x(p(x) ∧ p(x)) et ∃xp(x) se
codent toutes les deux par le même ensemble p(x), mais ce n’est pas grave car ces
deux formules sont trivialement équivalentes.
Que peut-on représenter avec ce fragment dans le cadre des problèmes qui nous
intéressent ?
— des faits : un fait est une formule de FOL(∧, ∃) fermée ; remarquer qu’un
ensemble de faits peut se coder comme un seul fait. Les faits permettent notamment de représenter les tables d’une base de données relationnelle ("une
instance de base de données"), un ensemble de triplets RDF, ou une base de
graphes. En particulier, une instance de BD relationnelle peut être vue comme
une conjonction d’atomes complètement instanciés si elle ne contient pas de
valeur manquante (sinon, les valeurs manquantes sont représentées par des variables quantifiées existentiellement).
— des requêtes conjonctives : une requête conjonctive est une formule de FOL(∧, ∃),
pas forcément fermée. Les variables libres (non quantifiées) correspondent à
des variables distinguées qui constituent la partie “réponse” de la requête : par
exemple, la requête qui consiste à "trouver tous les patients atteints d’un cancer"
pourrait s’exprimer par la formule ∃y(patient(x) ∧ atteint(x, y) ∧ cancer(y))
(on attend en réponse toutes les valeurs trouvées pour x). Une requête conjonctive est booléenne si elle est fermée ; par exemple la requête qui consiste à demander "s’il existe un patient atteint d’un lymphome" pourrait s’exprimer par
la formule ∃x∃y(patient(x) ∧ atteint(x, y) ∧ lymphome(y)) (ici, la réponse
attendue est oui/non).
Notez que nous adopterons par la suite la notation Datalog pour les requêtes conjonctives, avec le prédicat spécial "answer" pour désigner la partie réponse (parfois on utilise aussi la notation q pour query). Soit, avec les exemples ci-dessus :
answer(x) ← patient(x), atteint(x, y), cancer(y).
answer() ← patient(x), atteint(x, y), lymphome(y).
En cours, nous avons détaillé le lien avec les bases de données relationnelles.
Nous avons en particulier vu que les requêtes conjonctives correspondent à des requêtes
SQL de la forme “SELECT ... FROM ... WHERE", où la partie WHERE est composée
d’une conjonction d’égalités. En termes d’algèbre relationnelle, les opérateurs utilisés
sont la restriction, la jointure et la projection.
Définissons maintenant ce qu’est une réponse à une requête conjonctive.
Rappelons qu’une susbtitution d’un ensemble de variables V par un ensemble de
termes T est une application de V dans T . Etant donnée une formule f de FOL(∧, ∃),
appliquer une subsitution S à f consiste à remplacer chaque variable x de f qui appartient au domaine de S par son image S(x) (et à supprimer les quantificateurs existentiels qui portent sur des variables remplacées par des constantes). On note S(f ) la
formule obtenue.
Soit F une base de faits (qui peut être vue comme un seul fait) et Q une requête
conjonctive booléenne. La réponse à Q dans F est oui s’il existe un homomorphisme
3
h de Q dans F , c’est-à-dire une substitution de l’ensemble des variables de Q par l’ensemble des termes de F telle que : pour tout atome p(e1 . . . ek ) de Q, p(h(e1 ) . . . h(ek ))
est un atome de F . Autrement dit, h(Q) ⊆ F .
Si Q n’est pas une requête booléenne : soient (x1 . . . xq ) la liste de ses variables
distinguées ; une réponse à Q est un tuple (h(x1 ) . . . h(xq )) de constantes de F tel
que h est un homomorphisme de Q dans F . Remarquer que cette définition s’applique
aux requêtes booléennes : comme il n’y a pas de variables distinguées, l’ensemble des
réponses est {()} s’il existe un homomorphisme de Q dans F , et {} sinon.
Nous allons voir que ce mécanisme de réponse à une requête conjonctive est fondé
d’un point de vue logique :
— Pour Q booléenne : la réponse à Q est oui si et seulement si Q est conséquence
logique de F (notation F |= Q).
— Pour Q non booléenne, avec liste de variables distinguées (x1 . . . xq ) : la liste
(d1 . . . dq ), où chaque di est une constante de F , est une réponse à Q si et
seulement si la requête obtenue à partir de Q en remplaçant chaque xi par di
est conséquence logique de F .
2.2
Rappels de logique du premier ordre
Une interprétation (d’un vocabulaire V) encode un “monde possible”, qui donne
une signification aux symboles de V. Une formule construite sur V pourra être vraie
ou fausse dans ce monde. Plus précisément, une interprétation I d’un vocabulaire V =
(P, C) est composée d’un ensemble non vide D, appelé le domaine de I (ensemble des
entités) et d’une définition du sens des symboles de V :
— I associe à chaque constante c de C un élément de D : I(c) ∈ D
— I associe à chaque prédicat p de P d’arité k un ensemble de k-tuples sur D :
I(p) ∈ Dk
Autre notation courante Une interprétation se note souvent I = (∆, .I ), où ∆ est
le domaine et .I est la fonction d’interprétation des symboles de V. Dans ce cas, pour
un symbole s, I(s) se note sI .
En représentation de connaissances, on fait souvent l’hypothèse que deux constantes
différentes représentent des individus différents ("hypothèse du nom unique" : "unique
name assumption"). On a donc : pour toutes constantes distinctes c1 et c2 de C, I(c1 ) 6=
I(c2 ). De plus, il est commode de considérer que toutes les constantes d’un vocabulaire s’interprètent de la même façon dans toutes les interprétations de ce vocabulaire :
autrement dit, tout domaine inclut un ensemble en bijection avec C. Pour simplifier
encore les choses, on va commettre un petit abus de notation et supposer que C est carrément inclus dans chaque domaine. A partir de maintenant on suppose donc que : tout
domaine a C comme sous-ensemble, et chaque constante s’interprète par elle-même.
Une formule f de FOL(∧, ∃) est vraie pour I si et seulement si il existe une application v des termes de f dans D telle que :
— Pour toute constante c, v(c) = I(c) (c’est-à-dire c, vue l’hypothèse faite cidessus) ;
— Pour tout atome p(e1 . . . ek ) de f , (v(e1 ), v(ek )) ∈ I(p).
Par la suite, on appellera une telle application v une “bonne affectation” de f dans
I (avec l’idée intuitive que cette affectation prouve que f est vraie pour I).
4
On remarque que cette notion est similaire à celle d’homomorphisme (mais un
homomorphisme est une notion qui relie deux structures de “même nature”). On peut
aussi considérer une interprétation comme un ensemble d’atomes : les éléments du
domaine qui ne correspondant pas à des constantes sont traduits en des variables, et
les tuples de l’interprétation d’un prédicat p sont traduits en des atomes de prédicats p.
Dans ce cas, une bonne affectation de f dans I est exactement un homomorphisme de
l’ensemble des atomes de f dans l’ensemble des atomes associé à I.
Lorsque f est vraie dans I, on dit que I est un modèle de f . On dit qu’une formule
f est conséquence (ou conséquence sémantique) d’une formule g et on note g |= f si
tout modèle de g est un modèle de f (“à chaque fois que g est vraie, f l’est aussi”).
On pourra aussi dire que f se déduit de g (la déduction, habituellement notée `, est
une notion syntaxique, basée sur un système de dérivation de formules ; en logique du
premier ordre, il existe plusieurs systèmes déductifs qui correspondent exactement à
la conséquence sémantique — on dit qu’ils sont adéquats et complets par rapport à la
conséquence sémantique ; on peut donc écrire |= ou `). Les notions de conséquence
sémantique et de déduction sont fondamentales en logique.
2.3
Calcul de la conséquence logique dans FOL(∧, ∃)
La notion fondamentale pour raisonner dans le fragment FOL(∧, ∃) est l’homomorphisme, comme nous le verrons dans cette section. Rappelons qu’un homomorphisme
h d’un ensemble d’atomes f dans un ensemble d’atomes g est une application des variables de f dans les termes de g telle que h(f ) ⊆ g. On peut aussi considérer que le
domaine de l’homomorphisme est l’ensemble des termes de f , auquel cas pour toute
constante c de f , on a h(c) = c. L’homomorphisme définit un préordre (c’est-à-dire une
relation réflexive et transitive) sur l’ensemble des formules de FOL(∧, ∃) construites
sur un même vocabulaire, que l’on note ≥ : f ≥ g (f est “plus générale” que g) s’il
existe un homomorphisme de f dans g.
Dans le fragment FOL(∧, ∃), il n’est pas nécessaire d’argumenter sur tous les modèles de g pour prouver que g |= f . On montrera en effet que g |= f ssi il existe un
homomorphisme de f dand g.
Exemple 1
f1 = ∃x∃y∃z(p(x, y) ∧ p(y, z) ∧ r(x, z, a))
f2 = ∃u(p(u, b) ∧ p(b, u) ∧ r(u, u, a) ∧ p(b, a))
où a et b sont des constantes. h = {(x, u), (z, u), (y, b)} est un homomorphisme de f1
dans f2 , et c’est le seul.
Parmi les modèles d’une formule f de FOL(∧, ∃), nous allons distinguer un modèle
particulier, qui a la même structure que f : nous l’appelerons le modèle isomorphe à f
ou modèle canonique de f .
Soit f construite sur le vocabulaire V = (P, C). On considère Vf = (Pf , Cf )
la restriction de V aux prédicats et constantes qui apparaissent dans f . Le modèle
isomorphe à f est une interprétation Mu de Vf qui vérifie :
— son domaine Du est l’ensemble des termes de f (on devrait dire qu’il est en
bijection avec les termes de f ; mais pour alléger les notations, nous considérons
qu’un terme de f et l’élément du domaine qui lui correspond ont le même
nom) ;
— pour tout c ∈ Cf , Mu (c) = c ;
5
— pour tout p ∈ Pf , Mu (p) = {(t1 . . . tk )|p(t1 . . . tk ) ∈ f } (en voyant f comme
un ensemble d’atomes).
Remarque : on peut aussi définir le modèle isomorphe de f sur le vocabulaire V tout
entier, c’est-à-dire en interprétant aussi les prédicats et constantes qui n’apparaissent
pas dans f : dans ce cas, le domaine Du est formé de C ∪variables(f ) ; toute constante
est interprétée par elle-même comme dans la définition ci-dessus ; et pour tout prédicat
p de V \ Vf , on a Mu (p) = ∅.
On vérifie facilement que Mu est bien un modèle de f , en prenant comme bonne
affectation l’identité. Il est maintenant facilement de démontrer le résultat suivant :
Théorème 1 Soient f et g deux formules (fermées) de FOL(∧, ∃). On a :
g |= f ssi il existe un homomorphisme de f dans g (f ≥ g).
Proof: (⇒) Supposons que g |= f . Puisque tout modèle de g est un modèle de f ,
c’est en particulier le cas du modèle isomorphe à g, Mu (g). Il existe donc une “bonne
affectation” v de f dans Mu (g). On vérifie que v définit un homomorphisme de f dans
g. (⇐) Soit h un homomorphisme de f dans g. Soit M un modèle quelconque de g et
soit v une bonne affectation de g dans M . On vérifie que h ◦ v est une bonne affectation
de f dans M . M est donc un modèle de f , et comme il est quelconque, on en conclut
que g |= f .
Le modèle isomorphe à une formule de FOL(∧, ∃) est important car il représente
d’une certaine façon tous les modèles de f : on le dit universel (notion que nous allons
préciser ci-dessous). Pour tester si g |= f , il suffit de tester si le modèle universel de g
est un modèle de f , au lieu de considérer l’ensemble des modèles de g, ensemble qui
peut être infini (les interprétations elles-mêmes pouvant être infinies).
De même qu’on compare des formules de FOL(∧, ∃) par homomorphisme, on peut
aussi comparer des interprétations par homomorphisme.
Soient I1 et I2 deux interprétations d’un vocabulaire V = (P, C), de domaines D1
et D2 respectivement. Un homomorphisme de I1 dans I2 est une application de D1
dans D2 telle que :
— pour tout c ∈ C, h(I1 (c)) = I2 (c) (autrement dit, h(c) = c puisqu’on interprète
chaque constante par elle-même) ;
— pour tout p ∈ P, pour tout (t1 . . . tk ) ∈ I1 (p), (h(t1 ) . . . h(tk )) ∈ I2 (p).
On note I1 ≥ I2 s’il existe un homomorphisme de I1 dans I2 . Remarquons que
cela correspond exactement à un homomorphisme de l’ensemble des atomes associé à
I1 dans l’ensemble des atomes associé à I2 .
Avec ces outils, on vérifie facilement que :
— si I1 ≥ I2 , alors pour toute f de FOL(∧, ∃), si I1 est un modèle de f , alors I2
est un modèle de f : il suffit de composer une bonne affectation de f dans I1
avec un homomorphisme de I1 dans I2 pour obtenir une bonne affectation de f
dans I2 .
— Pour toute f de FOL(∧, ∃), pour tout modèle M de f , on a Mu ≥ M , où
Mu est le modèle isomorphe de f . C’est à ce sens que l’on dit que Mu est
universel : il est plus général que tous les autres modèles de f .
A suivre ... Nous pouvons maintenant considérer des bases de connaissances composées d’une base de faits et d’une ontologie.
6
F IGURE 1 – Graphe de base associé à une formule fermée de FOL(∧, ∃)
2.4
Vision graphes de FOL(∧, ∃)
On peut associer différents graphes à une formule de FOL(∧, ∃). On retiendra en
particulier un (multi-)graphe non orienté biparti, que l’on appellera “graphe de base”
Rappels : un graphe est biparti si son ensemble de sommets est séparé en 2 sousensembles X et Y , tel que toute arête (cas non orienté) ou arc (cas orienté) n’existe
qu’entre un sommet de X et un sommet de Y . Dans un multigraphe, il est possible
d’avoir plusieurs arêtes entre deux sommets. Ici, on aura des sommets représentant
les termes (qu’on appellera sommets termes) et des sommets représentant les atomes
(qu’on appellera sommets prédicats ou relations). Pour représenter exactement la formule, il faut représenter l’ordre des termes dans les atomes : on le fera en numérotant
les arêtes incidentes à chaque sommet relation. Cf. Figure 1.
Un graphe de base sur un vocabulaire V = (P, C) est un multigraphe non orienté
biparti étiqueté G = (T, R, E, etiq) tel que :
— T est l’ensemble des sommets termes
— R est l’ensemble des sommets relations
— E est l’ensemble (le multi-ensemble) des arêtes
— etiq est la fonction d’étiquetage qui vérifie :
- Pour tout sommet terme t de T , etiq(t) ∈ C ∪ {∗}
Remarque : on n’a pas besoin de coder les noms de variables, chaque sommet
d’étiquette * correspond à une variable différente ; dans les dessins, on omet
souvent ∗ (voir Figure 1)
- Pour tout sommet relation r de R, etiq(R) ∈ P et, si l’arité de r est k, il y a
k arêtes incidentes à r, étiquetées de 1 à k.
On peut définir une notion d’homomorphisme entre graphes de base de façon à
satisfaire la propriété suivante : étant données deux formules (fermées) f et g de
FOL(∧, ∃), il existe un homomorphisme (de formule) de f dans g ssi il existe un
homomorphisme (de graphes) du graphe de base associé à f dans le graphe de base
associé à g.
On peut donc indifféremment considérer l’homomorphisme de graphes de base ou
l’homomorphisme de formules pour calculer la conséquence logique dans FOL(∧, ∃).
7
2.5
Exercices complémentaires
Exercice 1 Graphes de base
1. Définir précisément l’homomorphisme de graphes de base.
2. Montrer que vous obtenez la propriété voulue : étant données deux formules f et g
de FOL(∧, ∃), il existe un homomorphisme (de formule) de f dans g ssi il existe un
homomorphisme (de graphes) du graphe de base associé à f dans le graphe de base
associé à g.
Exercice 2 Transformation de graphes orientés en formules de FOL(∧, ∃)
On note G = (V, E) un graphe orienté où V est l’ensemble des sommets et E l’ensemble
des arcs. Un homomorphisme h de G1 = (V1 , E1 ) dans G2 = (V2 , E2 ) est une application
de V1 dans V2 qui vérifie : pour tous sommets x et y de V1 , si (x, y) est un arc de E1 alors
(h(x), h(y)) est un arc de E2 . Définir une transformation polynomiale t des graphes orientés
dans des formules de FOL(∧, ∃) de façon à ce qu’il existe un homomorphisme de G1 dans G2
ssi il existe un homomorphisme de t(G1 ) dans t(G2 ). Cette transformation peut être vue comme
une réduction polynomiale du problème de test d’homomorphisme sur des graphes orientés au
problème de test d’homomorphisme sur des formules de FOL(∧, ∃).
Exercice 3 (*) Inclusion de requêtes conjonctives
Etant données deux requêtes conjonctives Q1 et Q2 , on dit que Q1 est incluse dans Q2 (notation
Q1 v Q2 ) si, pour toute base de faits F , l’ensemble des réponses à Q1 dans F est inclus dans
l’ensemble des réponses à Q2 dans F .
1. Montrer la propriété suivante : étant données des requêtes booléennes Q1 et Q2 , on a
Q1 v Q2 (autrement dit toute base de faits qui répond oui à Q1 répond aussi oui à Q2 )
si et seulement si il existe un homomorphisme de Q2 dans Q1 .
2. Définir l’homomorphisme de requêtes conjonctives quelconques, dans l’idée d’étendre
cette propriété ; puis étendre la propriété à des requêtes conjonctives quelconques en
utilisant cette notion.
Exercice 4 (*) Homomorphisme et satisfaction de contraintes
Dans cet exercice, on s’intéresse à l’équivalence entre l’existence d’un homomorphisme
entre des graphes de base encodant des formules de FOL(∧, ∃) et la consistance d’un réseau de
contraintes. On considère un réseau de contraintes dans lequel les contraintes sont données en
extension. On note le note (X, D, C, R) où X = {x1 , ... , xn } est l’ensemble des variables,
D = D1 ∪ ... ∪ Dn , où Di est le domaine de xi , C = {C1 , ... , Cp } est l’ensemble
des contraintes, où chaque contrainte Ci ∈ C est composée d’un sous-ensemble totalement ordonné de variables {xi1 , ..., xiq } ⊆ X, R = {R1 , ... , Rp } est l’ensemble des définitions de
contraintes, avec Ri ⊆ Di1 × ... × Diq . Une solution au réseau (X, D, C, R) est une application I de X dans D, qui à toute variable associe un élément de son domaine, telle que toutes les
contraintes de C soient respectées : pour tout Ci = (xi1 . . . xiq ) ∈ C, (I(xi1 ), . . . I(xiq )) ∈
Ri . Le problème CSP est le suivant : étant donné un réseau de contraintes, ce réseau est-il
consistant, c’est-à-dire admet-il une solution ? Le problème HOM est le suivant : étant donnés
deux graphes de base G et F , existe-t-il un homomorphisme de G dans F ? Il est assez facile
de construire une réduction polynomiale de HOM dans CSP. La réduction dans l’autre sens est
moins évidente (mais finalement surprenante par sa simplicité). C’est à cette dernière que nous
nous intéressons.
Construire une réduction polynomiale de CSP dans HOM.
Indications : G est obtenu à partir de (X, C) et F l’est à partir de R. Rapprocher la définition
d’une solution à un CSP (une application de X dans D qui satisfait les contraintes) de celle
d’homomorphisme (une application des sommets de G dans les sommets de F qui conserve
les arêtes et vérifie des conditions sur les étiquettes). Il y a une bijection entre l’ensemble des
solutions au CSP et l’ensemble des homomorphismes de G and F .
8
Téléchargement