• Aucun résultat trouvé

o`u Π′′ = {n3, n4, n5}. En effet, n5 est le seul d-voisin de n2. Enfin, la d´eriv´ee de w/w=0 par rapport `a n5 est { [n5] } car on a bien 0 en n5. Le r´esultat de la d´eriv´ee de P par rapport `a n1 est donc { [n1, n2, n5] }.

Int´eressons nous `a pr´esent aux d´eriv´ees de P par rapport aux autres positions. La d´eriv´ee de P par rapport `a n2 est vide puisque la condition eval ([u 7→ n2], a, u = 1) ´echoue (la valeur en n2 n’est pas 1). Idem en n4 et en n5. En revanche, en n3 la condition n’´echoue pas. La d´eriv´ee de P en n3 est n3⊗ ∅ soit ∅ car n3 n’a ni d-voisin ni g-voisin. Finalement, l’ensemble des chemins filtr´es dans a par le motif P est le singleton { [n1, n2, n5] }.

IV.4.4 Filtrage de motifs de pseudo-chemins

L’algorithme propos´e calcule les pseudo-chemins filtr´es par un motif de pseudo-chemins si l’on consid`ere que vois(c, Π, δ, p) calcule les positions de Π connect´ees `a p dans c suivant les combinaisons de directions de δ.

IV.5 Topologies et transformations

L’op´eration de filtrage est g´en´erique : elle fonctionne de la mˆeme mani`ere quelle que soit la collection consid´er´ee. L’application d’une transformation fait ´egalement intervenir un m´ecanisme de remplacement des parties filtr´es. Ce m´ecanisme diff`ere selon les propri´et´es topologiques de la collection consid´er´ee. Ce m´ecanisme est appel´e une substitution topologique. Dans cette section, nous commencerons par d´ecrire la notion de substitution topologique. Ensuite nous introduirons la notion de topologie qui repose sur les substitutions topologiques. Enfin nous d´ecrirons comment ces deux notions interviennent dans le processus d’application des transformations.

IV.5.1 Substitutions topologiques

D´efinition 1 Une substitution topologique est une fonction qui prend en arguments une collec-tion topologique c, un chemin de c et une suite de valeurs dite de remplacement et renvoie une nouvelle collection topologique. La collection renvoy´ee doit :

– contenir les valeurs de remplacement donn´ees en arguments,

– contenir les positions de c qui ne sont pas dans le chemin pass´e en argument. Leurs valeurs doivent ˆetre inchang´ees.

Dans cette d´efinition, rien n’est dit sur la relation de voisinage. Sp´ecifier par exemple que lorsque deux positions non filtr´ees sont voisines dans la collection en argument, elles doivent ˆetre voisines

dans la collection renvoy´ee, serait trop restrictif. Par exemple la substitution topologique des graphes de Delaunay renvoie un graphe dont la relation de voisinage n’est pas fonction de la relation de voisinage sur la collection en argument. Les sch´emas ci-dessous illustrent bien ceci. Le sch´ema de gauche repr´esente la collection en argument. Le chemin filtr´e est entour´e de pointill´es (ici, une seule position).

Le « d´eplacement » de l’´el´ement filtr´e fait que deux ´el´ements de la collection initiale y ´etant voisins mais n’´etant pas voisins de l’´el´ement filtr´e ne sont plus voisins dans la collection renvoy´ee. Sur le sch´ema de droite, on peut voir qu’une arˆete n’´etant pas li´ee `a l’´el´ement filtr´e a disparu. Cet exemple montre la difficult´e d’utiliser les substitutions topologiques dans le cadre habituel de la r´ecriture de graphes [Cou93].

Les substitutions topologiques peuvent ne pas ˆetre d´efinies sur certaines entr´ees. On consid´e-rera que les substitutions topologiques peuvent op´erer plusieurs remplacements chemins/valeurs `

a la fois. Certaines substitutions topologiques peuvent ˆetre d´efinies ´egalement sur des pseudo-chemins.

Exemple : substitution newtonienne

La substitution topologique ΨN dite newtonienne prend une collection c, un chemin p1, . . . , pl de longueur l et une suite de l valeurs de remplacement v1, . . . , vl et renvoie une collection identique `a c except´e aux positions pi(i entre 1 et l) qui poss`edent respectivement les valeurs vi. Cette substitution topologique n’est pas d´efinie si le chemin et la suite de valeurs n’ont pas le mˆeme nombre d’´el´ements.

Remarque : la substitution newtonienne ΨN accepte en argument des pseudo-chemins car la substitution se faisant point-`a-point aucune ambig¨uit´e n’est possible.

Collections newtoniennes et collections leibnitziennes

La substitution newtonienne est utilis´ee sur des types de collections dont l’ensemble de positions et la relation de voisinage ne changent jamais. Nous qualifions ces types de collections de newtoniens car Newton pensait que l’espace existait ind´ependamment des ph´enom`enes qui pouvaient y prendre place (espace absolu). `A l’oppos´e, Leibnitz pensait que l’espace ne prenait de sens que comme support de ph´enom`enes physiques [Jam93].

Nous qualifions de leibnitziennes les familles de collections o`u les positions ne sont pr´esentes que pour porter des valeurs et sont d´etruites lorsqu’elles ne sont plus n´ecessaires.

Les s´equences sont un exemple de collections leibnitziennes. Une s´equence de n valeurs est repr´esent´ee par une collection `a n positions. Ainsi, toute position porte une valeur dans une s´equence. Remarquons qu’une s´equence ainsi d´efinie est une notion diff´erente d’un GBF `a une direction, qui est une collection newtonienne plus proche de la notion de vecteur. Les ensembles, les multi-ensembles et les graphes de Delaunay sont d’autres exemples de collections leibnit-ziennes.

78 Filtrage

Exemple : substitution leibnitzienne Ψseq

La substitution leibnitzienne Ψseqest utilis´ee sur les s´equences. Elle prend un chemin p1, . . . , pn dans une collection c et une suite de valeurs v1, . . . vm et renvoie une collection c telle que ;

– Les positions pi (i ≤ n) ne sont pas dans c.

– Les autres positions de c sont dans c.

– Il existe des positions pi (i ≤ m) dans c telles que pi poss`ede la valeur vi.

– Il n’existe pas d’autres positions dans c.

– Pour i ≤ m − 1, pi+1 est voisine de pi.

– Pour toute position p′′ voisine de pn dans c (il y en a 0 ou 1 si c est une s´equence), p′′ est voisine de pm dans c.

– Pour toute position p′′ telle que p1 est voisine de p′′ dans c, (il y en a 0 ou 1 si c est une s´equence), p1 est voisine de p′′ dans c.

– Toutes les relations de voisinage (cr´e´ees) portent la direction left.

Lorsque n est diff´erent de m, la collection renvoy´ee n’a pas le mˆeme nombre de positions (et donc de valeurs) que la collection en argument.

Exemple : Ci-dessous l’application de Ψseq( [b, c], [5, 6, 7] ) et de Ψseq( [b, c], [5] ) `a la s´equence contenant les valeurs 1, 2, 3 et 4 aux positions a, b, c et d.

1

a

2

b

3

c

4

d

1 6

e a

5

f

7

g d

4

a

1 5

e d

4

IV.5.2 Topologies

Une topologie est la donn´ee d’op´erateurs (dont les constructeurs) et d’une substitution topo-logique. L’utilisation des fonctions d’une topologie pour construire une collection induit des pro-pri´et´es sur celle-ci. Par exemple une collection cr´e´ee `a partir de la s´equence vide, du constructeur de s´equences et de la substitution topologique Ψseq est appel´ee une s´equence et a les propri´et´es suivantes :

– toute position a au plus un voisin ;

– toute position est voisine d’au plus une position ;

– il n’y a pas de cycle dans la relation de voisinage ;

– il n’y a qu’une composante connexe ;

– toutes les positions poss`edent une valeur ;

– tous les arcs sont ´etiquet´es par la direction left.

La topologie seq est ainsi d´efinie par la donn´ee de la s´equence vide, du constructeur de s´equences et de la substitution topologique Ψseq.

seq = h[empty-seq,cons-seq], Ψseqi

On pourra utiliser la lettre ρ pour d´enoter une topologie. Dans ce cas, Ψρ d´esignera sa substi-tution topologique.

IV.5.3 Application des r`egles d’une transformation

L’application d’une transformation `a une collection (consid´er´ee avec la topologie ρ) consiste `a appliquer les r`egles de la transformation de la mani`ere suivante :

– Les instances du premier motif sont recherch´ees. On s´electionne un sous-ensemble maximal d’instances dont l’intersection deux `a deux est vide1. Les positions s´electionn´ees sont dites consomm´ees.

– On recherche les instances du motif de la seconde r`egle parmi les positions qui n’ont pas ´et´e consomm´ees, puis on s´electionne un ensemble maximum de chemins ne s’intersectant pas.

– On proc`ede ainsi de suite avec les autres r`egles.

– Lorsque ce processus de filtrage est termin´e, on substitue les parties filtr´ees par les parties rempla¸cantes correspondantes avec la substitution topologique appropri´ee (σρ).

– La nouvelle collection ainsi cr´e´ee est retourn´ee.

Ceci constitue la strat´egie par d´efaut d’application des transformations. Comme nous l’avons vu dans le chapitre II, d’autres strat´egies existent dans MGS.

La description de l’application des transformations donn´ee ci-dessus est une vue id´ealis´ee du comportement des transformations. De nombreuses optimisations sont bien ´evidemment pos-sibles lorsqu’on passe `a l’impl´ementation. Notamment :

– mise `a jour au fur et `a mesure des positions consomm´ees (voir ci-dessous),

– filtrage de plusieurs chemins en parall`ele si le mat´eriel le permet,

– sp´ecialisation de l’algorithme de filtrage pour des topologies particuli`eres (voir le cha-pitre IX),

– r´e´ecriture du motif en un motif ´equivalent plus performant, lorsque la topologie le per-met [Spi03] (par exemple sur les ensembles, le motif (1, x) est plus efficace que le motif (x, 1)).

IV.5.4 Impl´ementation des transformations

L’algorithme pr´esent´e en section IV.4.2 donne la s´emantique des motifs : il d´etermine l’en-semble des chemins filtr´es par un motif. Mais dans l’interpr`ete, on ne calcule pas tous les chemins possibles : on calcule « au vol » un sous-ensemble maximal d’instances disjointes deux `a deux. L’id´ee est d’´enum´erer `a travers des boucles les occurences de chemins et de stopper les calculs d`es qu’on a un chemin qui satisfait les gardes de sa sp´ecification. Pour ce faire, chaque r`egle de la figure 3 correspond `a un cas d’une fonction r´ecursive et chaque union dans les parties droites correspond `a une boucle d’it´eration. Une fois une instance trouv´ee, les positions filtr´ees sont consomm´ees : elles ne seront pas dans l’ensemble Π de positions disponibles pass´e en argument au processus qui cherchera d’autres instances.

Notons ´egalement qu’une architecture objet permet de manipuler uniform´ement les collec-tions de mani`ere simple et ind´ependamment de la fa¸con dont chaque type de collection est impl´ement´e. Chaque topologie correspond `a une classe fournissant les op´erateurs n´ecessaires `a l’application d’une transformation : acc`es aux valeurs, acc`es aux voisins d’une position, op´eration de substitution topologique, etc.

1

Si S est l’ensemble des instances du motif, on s´electionne une partie s ∈ P(S) des instances telle que pour tout chemin i de P(S), i est soit dans s, soit en intersection avec un chemin de s.

80 Filtrage