• Aucun résultat trouvé

Abstraction des fonctions bool´eennes

Dans le document The DART-Europe E-theses Portal (Page 142-147)

7.2 Abstraction des fonctions bool´ eennes

Dans cette section, nous d´efinissons une algorithme d’abstraction des fonctions r´eelles `a valeur dans B = {0,1}. Cet algorithme utilise des techniques classiques d’analyse par intervalles pour construire une repr´esentation abstraite des fonctions bool´eennes. Dans toute cette section, B repr´esentera le treillis complet des valeurs bool´eennes donn´e par la d´efinition 7.2 ci-dessous.

D´efinition 7.2 (Treillis complet des valeurs bool´eennes) Nous noterons B le treillis complet des valeurs bool´eennes tel que B = {⊥,0,1,⊤} muni de l’ordre ⊑ repr´esent´e par le diagramme de Hasse ci-dessous. L’´el´ement 0 repr´esente la valeur “faux”, 1 repr´esente la valeur

“vrai”.

0 1

7.2.1 Repr´ esentation d’une fonction bool´ eenne

Nous allons abstraire une fonction bool´eenne par sa repr´esentation spatiale, c’est-`a-dire un recouvrement de son domaine de d´efinition en un ensemble de rectangles tel que la fonction est constante sur chaque rectangle. Cette repr´esentation est donn´ee sous forme d’arbres r´eguliers appel´esoctree.

D´efinition 7.3 (Recouvrement d’un hyperrectangle)Soitn∈Netb∈IRnun hyperrectangle de dimensionn. On dira qu’un ensembleI(b) =©

b1, . . . , bm

ªd’´el´ements deIRnest un recouvrement debsi et seulement sib=∪mi=1bi.

Nous allons utiliser des repr´esentationsr´eguli`eres des fonctions bool´eennes, c’est-`a-dire que le recouvrement du domaine de d´efinition sera obtenu en divisant les intervalles de d´efinition dans chaque direction en deux. Cette technique n’est pas forc´ement optimale dans tous les cas, mais elle est la plus g´en´erale et la plus simple `a mettre en place lorsque l’on consid`ere des fonctions bool´eennes incluant des calculs potentiellement non lin´eaires.

D´efinition 7.4 (Recouvrement r´egulier d’un hyperrectangle) Soit b ∈ IRn un rectangle de dimension n. On notera Split(b) le recouvrement de b tel que |Split(b)| = 2n, et si b =

¡b1, b2, . . . , bn

¢avec∀i∈[1, n], bi∈IR, alors on a :

Split(b) =˘(b1, . . . , bn) : ∀i∈[1, n], bi= [bi, mid(bi)] oubi= [mid(bi), bi]¯ .

Rappelons que pour un intervalle x∈IR,xest la borne inf´erieure dex, xsa borne sup´erieure et mid(x) = x2x est le milieu dex.

Exemple 7.2 En dimension 2, on a par exemple Split`

([0,10],[−2,0])´

=˘`

([0,5],[−2,−1])´ ,`

([0,5],[−1,0])´ ,`

([5,10],[−2,−1])´ ,`

([5,10],[−1,0])´¯

.

D´efinition 7.5 (Octrees) Unoctree de dimensionn est un graphe dirig´e, acyclique, ayant une racine unique et deux types de noeuds :

– les noeuds non terminaux de la forme N(b), avecb∈IRn; – les noeud terminaux de la forme V(v) avecv∈ {0,1,⊤};

et tel que pour toutb∈IRn, le noeudN(b) a soit un noeud fils de la formeV(v) soit 2nnoeuds fils non terminaux N1(b1), N2(b2), . . . , N2n(b2n) avec{bi : i∈[1,2n]} =Split(b). Le noeud racine d’un octree T doit ˆetre un noeud non terminal, et on dira que T est de domaine b ∈ IRn si son noeud racine estN(b). On noterab=dom(T).

Remarque (1) Le termeoctreeest g´en´eralement utilis´e pour le cas de la dimension 3 uniquement ; en dimension 2, on parle de quadtree Par abus de notation, nous utilisons le mˆeme terme pour toutes les dimensions.

Remarque (2) Une autre repr´esentation possible des fonctions bool´eennes consiste `a utiliser des Diagrammes de D´ecision Intervalles (Interval Decision Diagrams, ou IDD [Str99]) qui sont une g´en´eralisation desBinary Decision Diagrams, ou BDD. Cette forme d’arbre permet g´en´eralement une repr´esentation plus compacte des fonctions bool´eennes car elle autorise un partitionnement non r´egulier du domaine de d´efinition. Cependant, elle est moins pratique `a utiliser pour la repr´esentation de fonctions fortement non lin´eaires, ce qui sera souvent le type de fonctions que nous rencontrerons. En effet, les fonctions bool´eennes qui nous int´eressent sont d´efinies par la par-tie de contrˆole des programmes embarqu´es qui conpar-tiennent souvent des calculs non lin´eaires (par exemple pour des filtres) ainsi que des instructions de branchement conditionnel. L’algorithme de construction de la repr´esentation que nous utiliserons (voir section 7.2.2) est un algorithme de branch and bound, et nous devons donc pouvoir facilement calculer un partitionnement du domaine de la fonction. La repr´esentation par octree nous semble donc plus adapt´ee.

Exemple 7.3 La figure 7.1 repr´esente un octree de dimension 2 et de profondeur 3. Les noeuds non terminaux sont repr´esent´es par des rectangles et les noeuds terminaux par des cercles.

[0,10]×[0,10]

[0,5]×[0,5]

1

[0,5]×[5,10]

0

[5,10]×[0,5]

[5,7.5]×[0,2.5]

[5,7.5]×[2.5,5]

0

[7.5,10]×[0,2.5]

1

[7.5,10]×[2.5,5]

⊤ [5,10]×[5,10]

0

Fig.7.1 – Exemple d’un octree de dimension 2 et de profondeur 3.

Intuitivement, un octreeT est la repr´esentation de toutes les fonctions bool´eennesf telles que, si T poss`ede un noeudN(b) avec un seul noeud filsV(v), avec b∈IRn et v∈B, alorsf v´erifie f(x) ⊑v pour tout x∈b. L’ordre⊑est ici l’ordre sur le treillis abstrait B : si v ={0,1}, on devra alors avoirf(x) =v, et siv=⊤, alors la valeur def(x) est inconnue. Nous d´efinissons donc formellement cette notion de repr´esentation d’une fonction par un octree.

7.2. ABSTRACTION DES FONCTIONS BOOL´EENNES 141

D´efinition 7.6 (Application d’un octree) Soit T un octree de dimension n et de domaine D∈IRn, et soitx∈D. On note alorsT(x) la valeur associ´ee `axdans l’octreeT, d´efinie par :

T(x) =vtel que∃N(b)∈T : x∈b etN(b) a un seul filsV(v).

Exemple 7.4 SoitT l’octree de la figure 7.1. On a alors : T¡

(3,1.5)¢

= 1 etT¡

(6,1.2)¢

=⊤. Remarque La complexit´e du calcul de l’application d’un octree `a une valeur r´eelle est faible : le calcul peut clairement ˆetre effectu´e en un temps lin´eaire en la profondeur de l’octree, et donc logarithmique en la taille du domaine d’entr´ee.

D´efinition 7.7 (Repr´esentation d’une fonction bool´eenne) Soit D ∈ IRn et f : D → B une fonction bool´eenne. On dira qu’un octreeT de dimensionnest une repr´esentation def si et seulement si∀x∈D, f(x)⊑T(x).

Clairement, il n’existe pas une unique repr´esentation pour un fonction bool´eennef. En parti-culier, si on notedom(f)⊆Rn le domaine de d´efinition de f, alors l’octree N¡

dom(f)¢

::V(⊤) est toujours une repr´esentation def. Pour distinguer deux repr´esentations diff´erentes d’une mˆeme fonctionf, nous introduisons une relation de pr´eordre sur l’ensemble des octrees qui est compatible avec la notion naturelle de pr´ecision de la repr´esentation : on dira qu’une repr´esentation est plus pr´ecise qu’une autre si elle renvoie moins souvent la valeur⊤. Rappelons qu’un pr´eordre est un ordre partiel ne disposant pas de la propri´et´e d’antisym´etrie.

D´efinition 7.8 (Pr´ecision de la repr´esentation : pr´eordre sur les graphes) SoitT etT deux octrees avecdom(T) =dom(T) =D. On dira queT est plus pr´ecis que T si et seulement si ∀x∈D, T(x)⊑T(x). On notera alors T ¹T. La relation ¹est un pr´eordre sur l’ensemble des octrees de mˆeme domaine.

Exemple 7.5 L’octree de la figure 7.1 est plus pr´ecis que l’octree suivant : [0,10]×[0,10]

[0,5]×[0,5]

1

[0,5]×[5,10]

[5,10]×[0,5]

[5,10]×[5,10]

0

Remarque Le pr´eordre¹n’est pas un ordre partiel car nous n’avons pas d´efini de forme normals sur les octrees. On peut en effet construire deux octreeT etTtels que pour toutx,T(x) =T(x) mais tels que T et T ont des profondeurs diff´erentes. On peut assez facilement d´efinir une forme normale sur les octrees (entre deux octreesT etT v´erifiantT ¹T etT¹T, il suffit par exemple de prendre celui de profondeur minimale), et on peut alors utiliser toujours la forme normale ; le pr´eordre¹devient alors un ordre partiel. Nous ne d´etaillerons pas le m´ecanisme de normalisation des octree, mais dans notre impl´ementation, nous calculerons toujours les formes normales.

7.2.2 Algorithme d’abstraction d’une fonction bool´ eenne

Nous montrons maintenant comment on peut construire un octree qui soit une repr´esentation d’une fonction bool´eenne φ : D → B, avec D ∈ IRn. Pour cela, nous devons d’abord d´efinir une fonction d’inclusion, ou fonction abstraite, pourφ, c’est-`a-dire une fonction ˜φ:IRn→B qui soit une abstraction sˆure deφ.

D´efinition 7.9 (Fonction d’inclusion bool´eenne) Soitφ :Rn → Bune fonction bool´eenne.

On dira qu’une fonction ˜φ:IRn→B est une fonction d’inclusion pour φsi elle v´erifie :

∀b∈IRn, α¡

{φ(x) : x∈b}¢

⊑φ(b)˜ (7.1)

o`u α:P(B) :→B est l’abstraction classique des ensembles de valeurs bool´eennes vers le treillis abstraitB et⊑est l’ordre partiel surB.

Exemple 7.6 Soitφ:R2→Bla fonction d´efinie par∀x, y∈R2, φ(x, y) =

½ 1 si x=y 0 sinon . La fonction ˜φ:IR2 →B d´efinie par ˜φ([x],[y]) =

½ 0 si [x]∩[y] =∅

⊤ sinon est une fonction d’inclusion pourφ.

Nous n’expliquons pas comment obtenir cette fonction d’inclusion pour toute fonctionφ:Rn→B.

Intuitivement, les calculs num´eriques effectu´es dans φ seront traduits en leurs ´equivalents sur le domaine des intervalles, et les tests seront surapproxim´es. Par exemple, la fonctionφ(x) =x≤3 sera traduite en : ˜φ([x]) =



1 six≤3 0 six >3

⊤ sinon

. Nous expliquerons `a la section 7.3 comment on peut construire cette fonction d’inclusion pour le cas qui nous int´eresse, c’est-`a-dire lorsque la fonction bool´eenne est une fonction de la forme : “´etant donn´ee une entr´ee X, la ligne n du programme peut elle ˆetre ex´ecut´ee ?”. `A l’aide d’une fonction d’inclusion ˜φpour une fonctionφ:D→Bavec D⊆Rn, on peut construire un octree repr´esentantφ.

D´efinition 7.10 (Calcul de la repr´esentation d’une fonction bool´eenne) Soit n ∈N et D ∈ IRn un domaine born´e. Soit une fonction φ : D → B et soit ˜φ : IRn → B une fonction d’inclusion pour φ. Soit Nmax ∈ N une profondeur maximale. On d´efinit alors Tφ l’octree de profondeur maximale Nmax repr´esentant φ par : Tφ = ConstruireOctree(φ, D,˜ 0, Nmax), o`u ConstruireOctreeest la fonction donn´ee par l’algorithme 3.

Remarque La fonction ConstruireOctreeest d´ecroissante enNmax : plusNmax est ´elev´e, plus l’octree construit est pr´ecis.

Exemple 7.7 Soit D = [0,10]×[0,10] ⊆ R2 et φ : D → B la fonction d´efinie par ∀x, y ∈ D, φ(x, y) = ¡

(x, y),(3.5,6)¢

≤ 1¢

∨¡ d¡

(x, y),(7,1.2)¢

≤ 1¢

, o`u d est la fonction distance.

Autrement dit, φteste si un point (x, y) est `a une distance inf´erieure `a 1 du point (3.5,6) ou du point (7,1.2). L’algorithme de la d´efinition 7.10 donne les octree de la figure 7.2 pour des pr´ecisions Nmax∈ {1,4,6,10}. Les parties vertes sont les zones o`u l’octree vaut 0, les zones jaunes celles o`u l’octree vaut 1, et les zones rouges signifient que l’octree renvoie⊤.

Proposition 7.1 Soit D ⊆ Rn et φ : D → B une fonction bool´eenne. Si φ˜ est une fonction d’inclusion pour φ, alors pour tout Nmax ∈N, T =ConstruuireOctree(φ˜,D,1,Nmax) est une repr´esentation deφ, c’est-`a-dire que pour toutx∈D, on a φ(x)⊑T(x).

7.2. ABSTRACTION DES FONCTIONS BOOL´EENNES 143

Nmax= 6 Nmax= 10

Nmax= 1 Nmax= 4

Fig. 7.2 – R´esultats obtenus par l’algorithme ConstruireOctreepour la fonction de l’exemple 7.7.

Entr´ee: ˜φ:IRn→B; /* Fonction `a abstraire */

Entr´ee:D⊆IRn ; /* Domaine de d´efinition */

Entr´ee:N ∈N; /* Pr´ecision actuelle */

Entr´ee:Nmax∈N; /* Pr´ecision maximale */

R´esultat:T de domaineDet de hauteur maximaleNmax−N telle que

∀x∈D, φ(x)⊑T(x) d´ebut

x= ˜φ(D);

six=⊤ ∧N < Nmax alors list=Split(D);

res=N(D);

pour tout ´el´ementl∈listfaire

aux=ConstruireOctree( ˜φ, l, N+ 1, Nmax);

res=N(D) ::aux;

finpour sinon

res=N(D) ::V(x);

finsi

renvoyer res;

fin

Algorithme 3 : ConstruireOctree( ˜φ,D,N,Nmax) : fonction de construction d’un octree repr´esentant une fonctionφ.

Dans le document The DART-Europe E-theses Portal (Page 142-147)