• Aucun résultat trouvé

2.3 Recherche d'Information en P2P : les systèmes de référence

2.3.3 Routing Indices Réseau étiqueté

Principe Le mécanisme Routing Indices est conçu pour être implémenté au-dessus d'un réseau de type Gnutella. Le principe est de mettre en place des index - les RI, Routing Indices - permettant de guider le routage des requêtes vers les portions de réseau qui possèdent le plus de réponses. Chaque pair maintient donc un RI associé à chacun de ses voisins. Le RI associé à un pair représente l'ensemble des documents dans le sous-réseau accessible par lui, triés par topics (sujets ou concepts). Les RI ressemblent donc fortement à des vecteurs sémantiques : chaque dimension représente un topic, la coordonnée dans une dimension représente le nombre de documents dans ce topic. Un RI donne en plus le nombre total de documents dans le sous-réseau, tous topics confondus. Propagation des requêtes Sur un pair P donné, pour router une requête, on calcule la pertinence de la requête à chacun des voisins Vi de P , puis on choisit le voisin qui

obtient le plus grand score. Les auteurs proposent d'utiliser un routage en profondeur, avec arrêt de la propagation si la requête est satisfaite - la notion de satisfaction n'est pas plus précisée.

La mesure de pertinence utilisée est la suivante, pour un voisin Vi de P , soit topics

l'ensemble des  topics  :

pertinence(Vi) = nb_docs_accessibles_par_Vi×topics ( RIP(Vi)[topic] nb_docs_accessibles_par_Vi )

où RIP(Vi)[topic]est la valeur connue par p de l'index de routage de Vi pour le concept

topic.

Si on reprend l'analogie avec le modèle vectoriel, il s'agit du produit des TF (Term Frequency), normalisés (division par le nombre de documents) ; multiplié par le nom- bre de documents. La pertinence d'un sous-réseau dépend donc de la proportion de documents pertinents, et du nombre total de documents.

Calcul des RI Soient P un pair, V l'ensemble de ses voisins, Vi ∈ V un de ses voisins et

RI(P )le RI représentant le contenu de P . Le RI associé à P sur Vireprésente l'ensemble

des documents accessibles par P , ce qui correspond à l'ensemble des documents sur P , plus l'ensemble des documents accessibles par ses voisins. Donc le RI associé à P sur

Vi est la somme de RI(P ) et des RI de tous ses voisins sauf Vi :

RIVi(P ) = RI(P ) +

Vj∈(V\Vi)

RIP(Vj)

où RIVi(P )(lire  RI de P sur Vi ) décrit le sous-réseau accessible par P , dans la table de routage de Vi; et RI(P ) décrit les ressources de P . C'est P qui va calculer ses

RI pour chacun de ses voisins, puis les leur transmettre. Chaque pair du réseau calcule

ainsi son descripteur pour chacun de ses voisins.

Mise-en-place et maintenance des RI Lorsqu'un pair arrive sur le réseau, il calcule tout d'abord le descripteur de ses ressources (RIP). En parallèle, ses voisins lui trans-

mettent leurs descripteurs (RIP(Vi)). À partir de RI(P ) et {RIP(Vi)|Vi∈ V}, P peut

calculer ses descripteurs pour chacun de ses voisins - les RIVi(P ). Chaque voisin doit ensuite mettre-à-jour ses descripteurs sur ses voisins, puisque de nouvelles ressources sont accessibles par lui. Et ainsi de suite, tous les RI du réseau sont mis-à-jour récur- sivement.

De même lorsque le contenu d'un pair est modié, il met-à-jour son descripteur, puis met-à-jour ses descripteurs sur ses voisins, qui eux-mêmes mettent-à-jour leurs descripteurs sur leurs voisins et ainsi de suite récursivement.

Le problème avec ce mécanisme, c'est qu'il ne fonctionne pas s'il y a des cycles. Nous y revenons plus loin ; mais d'abord, nous étudions deux variantes proposées par les auteurs.

Hop-count RIs Cette solution consiste à distinguer dans le RI associé à un pair les documents accessibles à 1 saut, 2 sauts, etc... On a donc k RI, donnant les documents accessibles en k sauts. Nous les noterons RI[0], ..., RI[k] ; donc RIP(V )[topic][s] est le

nombre de documents parlant de topic accessibles en s sauts par V , depuis P .

Une nouvelle mesure de pertinence est associée aux hop-count RIs. Le principe est de moduler la pertinence à s sauts par le nombre de messages nécessaires pour interroger ces pairs. On calcule donc un taux de pertinence par unité de message ; calculé en moyenne sur chaque nombre de sauts jusqu'à l'horizon. La pertinence d'un voisin Vi est

donnée par la formule :

pertinenceHCRI(Vi) =

s=0..k

pertinence(Vi[∗][s])

où pertinence(Vi)[∗][s] correspond à la mesure de pertinence des RI classiques, calculée

sur le RI au seme saut.

(degre_moyen − 1)s se veut être une approximation du nombre de messages néces- saire pour interroger les voisins situés à j sauts :  Under these assumptions, it takes Fh

messages to nd all documents at hop h. . Mais c'est une erreur. (degre_moyen − 1)s

donne le nombre de voisins à s sauts. En réalité, il faut∑i=1..s(degre_moyen−1)i mes-

sages : (degre_moyen−1) messages pour atteindre les voisins à 1 saut, (degre_moyen− 1) + (degre_moyen − 1)2 messages pour atteindre les voisins à 2 sauts, etc...

Exponential RIs La technique Exponential RIs (ERI) propose de prendre en compte la distance des pairs dans le calcul des RI, en pondérant la pertinence d'un pair pour un topic par la distance de ce pair. Ainsi, pour calculer RIVi(P ), au lieu de faire une somme simple des RI des autres voisins, on fait :

Vj∈(V\Vi){RIP(Vj)}

degre_moyen − 1 + RI(P )

Ainsi, P étant plus près de Vi que les Vj, son contenu entre plus fortement en compte

dans le calcul de RIVi(P ). À s sauts, RI(P ) aura été divisé s fois par degre_moyen−1. Gestion des cycles Les auteurs passent rapidement sur cet aspect et renvoient à l'état-de-l'art. Ils précisent cependant que trois approches sont envisageables :

 Ne rien faire, pour HCRI et ERI. En eet, HCRI fonctionne dans la limite d'un horizon, et ne permet donc pas de boucle innie. En ce qui concerne ERI, dans une boucle, la valeur d'une mise-à-jour étant divisée par degre_moyen − 1 à chaque propagation, elle deviendra rapidement très petite et sera ignorée. Cependant, ces solutions dégradent la qualité des RI et entraînent un surcoût de maintien.  Agir sur la topologie sous-jacente pour qu'elle ne comporte pas de cycle.  Éviter les cycles dans le mécanisme de mise-à-jour des RI.

Bilan Routing Indices peut donc être caractérisé selon deux dimensions :

 La recherche n'est pas aléatoire : les pairs sont indexés. Les index décrivent le contenu disponible sur le sous-réseau accessible par un pair, selon la technique des topics, apparentée au modèle vectoriel.

 Ces index sont calculés coopérativement par un algorithme distribué, et con- stituent un étiquetage du réseau.