• Aucun résultat trouvé

Une nouvelle méthode pour la recherche de modèles stables en programmation logique

Tarek Khaled

Belaïd Benhamou Pierre Siegel

Aix Marseille Université, Université de Toulon, CNRS, LIS, Marseille, France.

{tarek.khaled,belaid.benhamou,pierre.siegel}@univ-amu.fr

Abstract

Dans cet article, nous introduisons une nouvelle méthode de recherche de modèles stables pour les programmes logiques. Cette méthode est basée sur une sémantique relativement nouvelle, non encore ex-ploitée qui capte et étend la sémantique des modèles stables (Gelfond et al., 1988). La méthode proposée dans cet article, effectue principalement un processus énumératif booléen adapté à la programmation par en-sembles réponses (Answer Set Programming, ASP) et la sémantique utilisée. Elle a l’avantage d’utiliser un ensemble de clauses de Horn, ayant la même taille que le programme logique d’entrée et travaille à es-pace constant. Elle évite ainsi la lourdeur induite par la gestion des boucles, dont souffrent la plupart des solveurs ASP utilisant la complétion de Clark et qui rend leurs complexités spatiales exponentielles dans le pire des cas. De plus, l’énumération est effectuée sur un ensemble restreint de littéraux du programme logique représentant son strong backdoor (STB). Ce qui réduit la complexité temporelle de l’algorithme qui est calculé théoriquement en fonction de la taille de l’ensemble STB. Nous avons également introduit de nouvelles règles d’inférences que la méthode utilise pour élaguer l’arbre de recherche. En plus de la re-cherche de modèles stables, cette méthode pourrait générer si nécessaire une sorte d’extra-modèles ex-primant l’extension faite à la sémantique de (Gelfond et al.). Dans ce papier, nous nous limitons uniquement à la recherche de modèles stables afin de comparer les résultats de notre méthode avec ceux des solveurs ASP existants. Nous avons expérimenté et comparé les performances de la méthode proposée sur une va-riété de problèmes combinatoires pour lesquels nous avons obtenu des résultats prometteurs.

∗Papier doctorant : Tarek Khaled est auteur principal.

1 Introduction

La programmation par ensembles réponses (ASP) [18] est un paradigme de programmation déclarative non mo-notone très utilisé pour la formulation de problèmes en in-telligence artificielle. Il fournit également un cadre général pour la résolution de problèmes de décision et d’optimisa-tion [12]. En raison de la disponibilité de plusieurs solveurs performants, l’ASP est devenu très populaire ces dernières années. Parmi les solveurs les plus connus on peut citer

smodels[20] ou Clasp [6] mais aussi ceux basés sur les

solveurs SAT comme ASSAT [17] et Cmodels [15]. L’idée de base derrière l’ASP est d’exprimer un pro-blème sous la forme d’un programme logique pour cher-cher selon une sémantique donnée (modèles stables, well-founded...etc) les solutions du problème originel [13]. Pour obtenir une expression concise du problème, les règles du programme logique source sont généralement exprimées dans la logique du premier ordre. Le problème est alors ex-primé par un programme logique non-terminal qui contient souvent des prédicats avec des variables. Les grounders [7] sont alors conçus pour trouver un programme logique pro-positionnel équivalent au programme non terminal d’en-trée.

Plusieurs sémantiques pour la programmation logique existent dans la littérature. Depuis l’introduction de la com-plétion de Clark [3], beaucoup d’autres sémantiques telles que la sémantique bien fondée (well-founded) [8] et la sé-mantique des modèles stables [9, 10] ont été introduites. Cette dernière est l’une des sémantiques les plus utilisés en programmation logique. Le but de toutes ces sémantiques est de donner une signification à un programme logique. En particulier, ils essaient de donner un sens à la néga-tion par échec apparaissant dans les règles du programme. C’est souvent le sens donné à la négation par échec qui dis-tinguent entre les différentes sémantiques.

intro-duite dans [2] pour proposer une nouvelle méthode de re-cherche de modèles stables. Dans cette sémantique, les programmes logiques sont représentés par un ensemble de clauses de Horn ayant la même taille que le programme terminal d’entrée. Les avantages qu’offre cette sémantique sont la simple caractérisation des modèles stables ainsi que l’extension qu’elle apporte pour la sémantique des modèles stables. La représentation du programme en un ensemble de clauses de Horn permet d’obtenir une nouvelle méthode de résolution ayant de bonnes propriétés de complexité. La méthode que nous proposons profite pleinement des avan-tages qu’offre cette représentation. En particulier, la mé-thode évite la lourdeur induite par la gestion des boucles souvent utilisé par les solveurs ASP basé sur la complé-tion de Clark [3], ce qui les rends non constant en terme de complexité spatiale.

La nouvelle méthode est un processus énumératif boo-léen défini pour l’ASP et conçu en fonction de la séman-tique cité précédemment et de ses caractérisséman-tiques. Cette méthode a l’avantage d’effectuer le processus énumératif uniquement sur un ensemble restreint de littéraux appelé ici strong backdoor (STB) [21] du programme logique. La complexité de l’algorithme est calculée en fonction de l’ensemble STB. Nous avons aussi introduit de nouvelles règles d’inférence que l’algorithme utilise pour élaguer l’arbre de recherche et ainsi augmenter son efficacité en pratique. Cette méthode calcule les différentes extensions du programme logique à partir desquelles on peut géné-rer tous les modèles stables ainsi que les extra-modèles qui prolongent la sémantique des modèles stables [9]. Mais, ici, nous avons limité la recherche aux seuls modèles stables afin d’avoir une comparaison sûre avec les autres systèmes ASP.

Dans le reste de cet article, nous rappelons d’abord dans la section 2 les principales notions sur la programmation lo-gique et le fondement de la sémantique [2] sur laquelle re-pose la méthode proposée. Puis nous donnons une descrip-tion de la nouvelle méthode dans la secdescrip-tion 3. Dans la sec-tion 4, nous montrons les résultats expérimentaux obtenus sur certains problèmes combinatoires que nous comparons avec ceux d’autres méthodes. La dernière section conclut le travail et donne quelques perspectives de recherche.

2 Préliminaires

Un programme logique π est composé d’un ensemble de règles de la forme r :tête(r) ← corps(r). En général, les règles sont données dans la logique du premier ordre. Les grounders sont utilisés pour calculer le programme

Ground(π) équivalent au programme π dont les règles

sont exprimées en logique propositionnelle. Dans la suite, nous nous concentrons sur les programmes proposition-nels, nous écrivons π pour signifier Ground(π).

Il existe différentes classes de programmes logiques. Ils

diffèrent par la présence ou l’absence de la négation clas-sique et de la négation par échec dans les règles du pro-gramme. Un programme logique positif π est un ensemble

de règles de la forme : r = A0 ← A1, A2, ..., Am, avec

(m ≥ 0) et où Ai∈{0,...,m} est un atome. Il n’y a pas de

négation par échec ou de négation classique dans un pro-gramme logique positif.

Un programme logique général π est un

en-semble de règles de la forme : r = A0

A1, A2, ..., Am, not Am+1, ..., not An, (0 ≤ m < n)

où Ai∈{0...n} est un atome et not le symbole

expri-mant la négation par échec. Le corps positif de r

est corps+(r) = {A1, A2, ..., Am} et le négatif est

corps(r) ={Am+1, ..., An}. La projection positive de r

est r+ = A0 ← A1, A2, ..., Am. La signification intuitive

de la règle r est la suivante : si on prouve tous les atomes

de corps+(r) , et qu’on n’arrive à prouver aucun des

atomes de corps(r), alors on infère A0. Le réduit d’un

programme π par rapport à un ensemble d’atomes X est le

programme positif πX obtenu à partir de π en supprimant

chaque instance de règle contenant un atome not Ai dans

son corps négatif tel que Ai∈ X et tous les atomes not Aj

tels que Aj 6∈ X dans les corps négatifs des règles

res-tantes. Formellement, πX ={r+ : corps(r)∩ X = ∅}.

Dans le reste de l’article, nous nous concentrerons sur les programmes logiques généraux.

La sémantique la plus connue pour les programmes lo-giques généraux est celle des modèles stables [9]. Un en-semble X d’atomes est un modèle stable de π ssi X est

identique au modèle minimal d’Herbrand du réduit πX

ob-tenu à partir de π en considérant l’ensemble des atomes X.

Ce modèle est aussi appelé le modèle canonique de πX,

il est dénoté par Cn(πX). Formellement, un ensemble X

d’atomes est un modèle stable de π ssi X = Cn(πX).

En pratique, plusieurs solveurs ASP sont basés sur la complétion de Clark [3]. Parmi eux, les solveurs ASP ba-sés sur la procédure DPLL et les solveurs SAT. Pour trai-ter le concept de négation par échec, Clark a proposé le concept de complétion pour les programmes logiques (no-tation comp(π)). Il est connu que chaque modèle stable de π est un modèle de la complétion mais l’inverse n’est vrai que si le programme est sans boucle [5]. Afin d’éta-blir l’équivalence entre les modèles d’un programme lo-gique et ceux de sa complétion, des formules de boucles doivent être ajoutées à la complétion [17]. Mais, le nombre de boucles peut varier d’une façon la exponentielle par rap-port à la taille du programme logique donné, ce qui rendrai son traitement impraticable [16]. Par conséquent, la com-plexité spatiale des solveurs ASP adoptant cette approche n’est pas constante, elle pourrait varier exponentiellement dans le pire des cas. C’est le grand inconvénient des sol-veurs ASP utilisant la complétion de Clark.

Dans notre méthode, nous utiliserons une formalisation différente de celle de Clark. Nous proposons une nouvelle

méthode qui utilisera une représentation en clause de Horn ayant la même taille que le programme logique et qui fonc-tionne avec une complexité spatiale constante. Nous allons prouver que notre approche est une bonne alternative à la complétion de Clark [3] utilisée par la majorité des solveurs ASP. La méthode proposée est basée sur la sémantique introduite dans [2] et qui offre plusieurs avantages fonc-tionnels. Cette sémantique est basée sur la notion d’exten-sion d’un ensemble de clauses représentant le programme d’entrée. La méthode que nous présentons ici est exemp-tée de la lourdeur due à la gestion de boucles utilisé par les solveurs basé sur la complétion de Clark. Intuitivement, pour un programme logique donné, la méthode calcule ses extensions en ajoutant à l’ensemble de clauses de Horn,

des ensembles cohérents de littéraux (not Ai) du STB. Les

modèles stables du programme logique peuvent être dé-duits de certaines extensions qui vérifie la condition discri-minante [2]. Certains autres modèles supplémentaires ou extra-modèles peuvent être obtenus à partir des extensions qui ne vérifient pas cette condition (extra-extensions).

Plus précisément, la nouvelle sémantique est basée sur un langage propositionnel classique L ayant deux types de variables : un sous-ensemble de variables classiques V =

{Ai : Ai ∈ L} et un autre nV = {not Ai : not Ai ∈ L}.

Pour chaque variable Ai∈ V , il existe une variable

corres-pondante not Ai ∈ nV désignant la négation par échec de

Ai. La nouvelle sémantique donne un lien entre les deux

types de variables ( celles de V et celles de nV ). Ce lien est exprimé par l’ajout au langage propositionnel L d’un axiome exprimant l’exclusion mutuelle entre chaque

litté-ral Ai ∈ V et son littéral négatif correspondant not Ai

nV. Cet axiome d’exclusion mutuelle est exprimé par

l’en-semble de clauses ME = {(¬Ai∨ ¬not Ai) : Ai∈ V }.

Un programme logique π = {r : A0

A1, A2, ..., Am, not Am+1, ..., not An} où (0 ≤ m < n)

est exprimé dans le langage propositionnel L par un

en-semble de clauses de Horn propositionnelles CR = {A0

¬A1∨, ..., ¬Am∨¬not Am+1, ...,¬not An} où (0 ≤ m <

n)qui représente l’ensemble des règles du programme

lo-gique. Chaque règle r ∈ π est traduite par une clause de Horn. Pour compléter la représentation du programme π dans cette nouvelle sémantique, on rajoute à l’ensemble des clauses exprimant les règles l’ensemble de clauses ME =

{(¬Ai∨ ¬not Ai) : Ai∈ V } exprimant l’axiome

d’exclu-sion mutuelle. La représentation logique du programme π dans le langage propositionnel L est donnée par l’ensemble de clauses CR ∪ ME. Un programme logique est donc ex-primé par un ensemble de clauses de Horn :

L(π) =

{S

r∈π(A0∨ ¬A1∨, ..., ¬Am∨ ¬not Am+1, ...,¬not An)

S

Ai∈V

(¬Ai∨ ¬not Ai)}.

Nous pouvons remarquer que la taille du codage L(π)

est de l’ordre de taille(π) + 2n, n étant le nombre de variables propositionnelles de π appartenant à V . Le fac-teur 2n dans la taille de L(π) correspond à l’ensemble de clauses ME représentant l’axiome d’exclusion mutuelle. Mais ce dernier peut être implémenté comme une règle d’inférence sans avoir besoin de mémoriser l’ensemble de clauses ME. La méthode que nous allons décrire tra-vaillera alors avec la forme Horn clausale L(π) ayant exac-tement la même taille que le programme π. Elle énumé-rera sur un sous-ensemble de littéraux jouant le rôle d’un strong backdoor (STB). Ce sous-ensemble est défini par

ST B ={not Ai :∃r ∈ π, not Ai ∈ corps(r)} ⊆ nV .

L’ensemble STB est le sous-ensemble des littéraux positifs

de type not Aiqui apparaissent dans π.

Étant donné un programme π et son ensemble STB. Une extension de L(π) par rapport à STB (une extension de

(L(π), ST B))est l’ensemble de clauses consistant obtenu

à partir de L(π) en ajoutant un ensemble maximal de

litté-raux not Ai∈ ST B. Formellement :

Définition 1 Soit L(π) le codage CNF d’un programme logique π, STB son strong backdoor et un sous-ensemble

S0⊆ ST B, l’ensemble E = L(π) ∪ S0de clauses est alors

une extension de (L(π), STB) si les conditions suivantes sont vérifiées :

1. E est consistant,

2. ∀not Ai∈ STB − S0, E∪ {not Ai} est inconsistant.

Exemple 1 On considère le programme logique :

π= a← c, not b b← a c← not d a←

La représentation causale du programme logique π est

composé par l’ensemble L(π) = CR∪ ME où CR =

{a ∨ ¬c ∨ ¬not b, b ∨ ¬a, c ∨ ¬not d, a}, M E = {¬a ∨ ¬not a, ¬b ∨ ¬not b, ¬c ∨ ¬not c, ¬d ∨ ¬not d} et son en-semble strong backdoor ST B = {not b, not d}. On peut voir que (L(π), ST B) admet une seule extension E =

L(π)∪ {not d}. En effet, E est maximalement consistant

par rapport à l’ensemble STB. C’est à dire, si par exemple nous ajoutons not b à l’extension E, l’ensemble de clauses qui en résulte devient inconsistant.

Il a été démontré dans [2] que chaque modèle stable d’un programme logique π est représenté par une extension E de sa forme logique L(π) qui vérifie la condition

discrimi-nante (∀Ai∈ V, E |= ¬not Ai ⇒ E |= Ai). Certaines

ex-tensions de L(π) ne correspondent à aucun modèle stable. Ces extra-extensions coïncident avec des extra-modèles qui représentent une extension à la sémantique des modèles stables [9]. La caractérisation d’un modèle stable se fait de manière très simple grâce à une condition simple à véri-fier que doivent satisfaire les extensions correspondant aux modèles stables. Cette condition est appelée condition dis-criminante dans [2]. Formellement, nous avons :

Théorème 1 Si X est un modèle stable d’un programme logique π, alors il existe une extension E de (L(π), ST B)

telle que X = {Ai∈ V : E |= Ai}. D’autre part, E

vé-rifie la condition dite discriminante : (∀Ai ∈ V, E |=

¬not Ai⇒ E |= Ai).

Comme toute extension E est formée par un ensemble de clauses de Horn, alors la résolution unitaire est suffisante

pour déduire tout atome Aià partir de E (E |= Ai).

Il est également montré dans [2] que pour chaque mo-dèle stable X du programme logique π il existe une exten-sion correspondante E de L(π) à partir duquel X peut être déduit par résolution unitaire.

Exemple 2 L’extension E = L(π) ∪ {not d} trouvé dans l’exemple 1 vérifie la condition discriminante. Le modèle stable M = {a, b, c} est déduit de E par résolution uni-taire.

3 Présentation de la nouvelle méthode