• Aucun résultat trouvé

Comparer des objets structurés

2.1 Identifier l’intersection d’objets structurés

2.4.1 Evaluation des similarités locales

Le problème est ici d’évaluer la matrice SIM dont les éléments correspondent à la similarité entre les variables vi dans V ( l’ensemble des variables de h) et vm dans

V (l’ensemble des variables de ex). Avant de détailler l’algorithme, nous introduisons quelques fonctions nécessaires à la comparaison des littéraux dans les clauses.

Nous nous plaçons ici dans le cas d’appariements inexacts où les fonctions de com-paraison renvoient une mesure de similarité. Comme précédemment, nous distinguons les littéraux contenant une seule variable et les littéraux relationnels contenant deux variables.

2.4.1.1 Comparaison de littéraux à une variable

Chaque variable est caractérisée par différentes propriétés, représentées par les cons-tantes typées, dans les littéraux de la forme : p(v, C1, . . . , Cn) et p(v, C

1, . . . , C

n) (voir section 1.3). Nous considérons qu’il existe une fonction générique simconst : T × T → [0, 1] qui définit la similarité entre les constantes Ciet Ci de type T .

La similarité entre deux variables v ∈ V et v ∈ V, apparaissant

respective-ment dans les littéraux litv et litv, d’un point de vue local, est évaluée par la fonction Simvar : L× L → [0, 1], définie comme la moyenne des valeurs de simconstpour toutes les constantes :

Simvar(litv, lit

v) = 1 n nk=1 simconst(Ck, C k) (2.8)

2.4.1.2 Comparaison de littéraux relationnels

Avant de définir la mesure de similarité entre deux littéraux relationnels, il est né-cessaire de définir les deux fonctions suivantes :

– la fonction Link_Of : V→ L renvoie, pour chaque variable vid’une clause, l’en-semble{litr1, …, litr p} des littéraux dans lesquels elle apparaît ;

– la fonction Voisins : V× L → V est définie pour des littéraux binaires (c’est-à-dire contenant deux variables). Elle renvoie, pour une variable vi et un littéral litrk donnés, la référence sur une variable voisine vj (vi et vj apparaissent dans le même littéral litrk).

Soit les deux littéraux relationnels litr = p(v1, v2, C1, . . . , Cn) et litr =

p(v1, v

2, C

1, . . . , C

n). De la même façon que pour les variables, nous considérons qu’il existe une fonction générique Simlit : SIM× L × L × V × V → [0, 1] qui évalue la similarité de deux littéraux du point de vue de deux variables données, en se basant sur les valeurs de la matrice SIM qui contient la valeur de similarité entre chaque paire de variables. Cette fonction s’écrit :

Simlit(SIM, litr, lit

r, vi, v m) = 1 2 ( 1 + SIM[ Voisins(litr, vi), Voisins(litr, v m)] .1 n nk=1 simconst(Ck, C k) ) (2.9) La fonction Simlit prend en compte la ressemblance entre les propriétés des deux litté-raux. Le terme SIM donne une définition récursive de la similarité locale entre variables et permet ainsi de prendre en compte la structure des clauses. La figure 2.9 résume l’en-semble des informations qui sont prises en compte lorsque l’on compare deux littéraux.

vj v'm v'n vi litj lit'n Similarité entre les

voisines (matrice SIM)

Similarité entre les propriétés

Similarité entre les variables (Simvar)

Figure 2.9 –Similarité entre littéraux relationnels du point de vue des variables viet v m.

2.4.1.3 Calcul de la matrice de similarité

Nous pouvons à présent décrire le calcul de la matrice SIM. Dans le cas de prédicats binaires, l’algorithme Similarite_Locale est le suivant.

2.4. Similarité entre clauses logiques

ProcédureSimilarite_Locale

Input: clause h, clause ex, entier maxIter B1 pour k=1 to maxIter faire

B2 pour chaque couple de variables (vi, v

m) respectivement dans h et ex faire L← Link_Of (vi) ;

L’← Link_Of (v

m) ;

1 Nsim← Meilleur_Appariement_Litteraux(SIM, L, L, vi, v

m ) ; 2 SIM[vi, v m]←[Simvar(vi, v m) + N sim/Max(|L|, |L|))]/2; finprch finpour Retourner SIM;

Algorithme 1:Calcul de la matrice SIM.

La boucle B2 effectue le calcul de similarité locale entre les variables vi et vm. Le problème central est de trouver la manière d’apparier, de façon optimale, les littéraux de l’ensemble L avec ceux de l’ensemble L. Comme dans l’exemple de la figure 2.10, tous les littéraux sont construits sur le symbole de prédicat p et ne contiennent que deux variables. De plus, il n’y a qu’un seul littéral pour une paire de variables donnée, ce qui simplifie grandement le processus d’appariement.

x1 x3 x2 x'3 x'4 x'2 x'1 p p p p p x1 x2 p x1 x3 p x'1 x'2 p x'1 x'3 p x'1 x'4 p L L'

Figure 2.10 – La fonction Meilleur_Appariement_Litteraux recherche le meilleur appariement entre les littéraux des ensembles L = Link_Of(x1) et L= Link_Of(x

1).

Ce problème d’appariement classique est géré par la procédure Meilleur_Appariement_Litteraux. En effet, considérons les littéraux contenus dans les listes L et L comme les sommets d’un graphe bipartite dont on connaît, pour chaque couple (litr j, litr

n), la valeur de ressemblance grâce à la fonction Simlit. Trouver le meilleur appariement à effectuer entre ces éléments équivaut à maximiser la somme des Simlit et donc à résoudre un problème de couplage de poids maximum dans un graphe

bipartite (assignment problem). L’algorithme hongrois [Kuhn, 1955] est utilisé pour

La méthode proposée par [Bisson, 1992] est cependant plus générale et est utilisable lorsque les prédicats sont des relations n-aires et qu’il peut y avoir plusieurs littéraux contenant les mêmes variables. Dans ce cas, le meilleur appariement est recherché entre littéraux de même signature. La fonction Meilleur_Appariement_Litteraux recherche le meilleur appariement pour chaque sous-ensemble L(si) de littéraux de même signature

si ce qui conduit à l’évaluation d’une variable Nsimsi. La variable Nsim est la somme maximale de tous les L(si).

Finalement, le calcul de la similarité locale SIM[vi, v

m] entre deux variables corres-pond à la moyenne entre leur ressemblance (Simvar) et la ressemblance normalisée de leur voisinage (Nsim/max(|L|, |L|)), ligne 2 de l’algorithme.

Puisque la similarité de deux variables viet vmest fonction de celle de ses voisines et réciproquement, les éléments de SIM peuvent s’écrire sous forme d’un système d’équa-tions. La résolution de ce système s’effectue à l’aide d’une méthode itérative (Jacobi), la boucle B1permettant de calculer les valeurs successives de la matrice. Ces itérations ont pour effet de propager les informations de similarités locales : le nombre d’itérations ca-ractérise la profondeur de diffusion des informations, c’est-à-dire la taille du voisinage pris en compte pour comparer deux variables.

On retrouve cette idée générale dans de nombreux travaux et domaines d’applica-tions, comme par exemple :

– dans [Fröhlich et al., 2005a], [Rupp et al., 2007] pour la comparaison de graphes moléculaires (voir section 5.4.2) ;

– dans [Scheffer et al., 1996], [Hölldobler and Skvortsova, 2006] (voir section 2.3.2) pour la comparaison de clauses logiques ;

– dans [Singh et al., 2008] pour la comparaison de réseaux d’interaction protéine-protéine.