• Aucun résultat trouvé

5.4 Calcul de chemins sans contraintes de Qualité de Service

5.4.3 Calcul du plus court chemin

Dans la section 5.4.2, nous avons décrit un algorithme qui transforme un réseau multicouche en automate à pile. L’étape suivante consiste à calculer un chemin qui minimise soit le nombre de liens, soit le nombre d’encapsulations. La méthode de calcul qui minimise le nombre de liens utilise directement l’automate à pile en sortie de l’algorithme 3, comme détaillé en section 5.4.3.1. Cependant, si nous voulons minimiser le nombre d’encapsulations, l’automate à pile doit être transformé dans le but de court-circuiter les séquences de transitions passives (i.e., sans empilement ni dépilement), comme détaillé dans la section 5.4.3.2. L’automate à pile original ou transformé (selon la fonction objectif choisie) est ensuite converti en grammaire à contexte libre. Le mot le plus court que génère cette grammaire correspond à la traceTC du chemin le plus court (en nombre de liens ou en nombre d’encapsulations). Finalement, ayant la trace du chemin le plus court, il est aisé de retrouver le chemin lui-même, comme détaillé en section 5.4.5.

5.4.3.1 Minimiser le nombre de liens

Le nombre de symboles (ou lettres) d’un mot accepté par l’automateAR est égal au nombre de liens dans le chemin faisable qui lui correspond (chaque symbole est un protocole utilisé sur un lien). L’étape de transformation de l’automate en section 5.4.3.2 doit être ignorée. L’automateAR doit être directement converti en grammaire à contexte libre. Ensuite, le mot le plus court est généré par cette grammaire comme décrit en section 5.4.4.2. Le chemin faisable correspondant est calculé par l’algorithme 8 en page 93, comme détaillé en section 5.4.5.

5.4.3.2 Minimiser le nombre d’encapsulations

Pour ne compter que les encapsulations et désencapsulations dans un chemin faisable C, il ne faut compter que les empilements et dépilements dans la séquence de transitions qui accepte sa trace TC. L’automate AR doit être transformé en automate A0R dans lequel toutes les séquences de transitions passives sont court-circuitées. Dans ce cas, la longueur du mot le plus court accepté par A0R sera égale au nombre d’encapsulations et désencapsulations nécessaires pour l’accepter, plus une constante fixée.

Soit Qa (a ∈ A) l’ensemble des états de l’automate tels que Qa = {Vx ∈ Q|x = a}, et soit AaR

le sous-automate induit par Qa. Par analogie avec un sous-graphe, un sous-automate induit est un multigraphe avec des arcs marqués (qui sont en fait des transitions) tel que l’ensemble des sommets est

Qa et l’ensemble des arcs est l’ensemble des transitions entre les éléments deQa. Comme il n’y a que des transitions passives entre les éléments deQa, toutes les séquences de transitions dans un sous-automate sont passives37. SoitP(Ux,Vx)la longueur du plus court chemin38 entreUx etVx. Cette longueur peut-être calculée entre chaque paire d’éléments deQa grâce à l’algorithme de Floyd-Warshall [44, 114]. Soit

Succ(Vx)L’ensemble des états successeurs deVx dans l’automate originalAR, i.e.,Succ(Vx) ={Wy ∈ Q|∃(Vx,hx,α,βi,Wy)∈δ}.

L’algorithme 4 prendAR en entrée et calcule l’automate transforméA0R = (Q0000,SA,z0,{DA}). L’automate A0R est initialisé avec les valeurs de AR. Ensuite, l’algorithme 4 calcule le sous-automate

Ax

R pour toute lettre de l’alphabet x∈ A(étape (1)) ainsi que la distanceP(Ux,Vx)pour chaque paire d’états (Ux,Vx) dans le sous-automate (étape (2)). Chaque chemin entre une paire d’états de AxR est une séquence de transitions passives car le sous-automate ne contient que des transitions passives (par construction). Si un tel chemin existe (étape (3.1)), l’algorithme crée une nouvelle transition dansδ0. Cette nouvelle transition ira de l’étatUx vers chaque état dansSucc(Vx)(étapes(3.1.2)et (2.1.3)). Les transitions ajoutées sont les mêmes que celles qui relient Vx à ces successeurs Wy ∈ Succ(Vx), mais

37. Par abus de langage, nous appelleronsséquences de transitions passives une séquence de transitions où il n’y a ni empilement ni dépilement.

avec une lettre en lecture indexée par le nombre de transitions passives entreUx et Vx (c’est-à-dire la longueurP(Ux,Vx)) plus1. Ces nouvelles transitions indiquent qu’il y avait dans l’automate originalAR

une séquence de transitions qui correspond à la séquence de protocolesxx . . . xde longueurP(Ux,Vx) + 1. Le symbole indexé est ajouté à l’alphabetΣ0 du nouvel automate (étape(3.1.1)).

Algorithme 4Transformation de l’automateAR enA0R

Entrée : L’automate à pileAR= (Q,Σ,Γ,δ,SA,z0,{DA})

Sortie : L’automate transforméA0R= (Q0000,SA,z0,{DA})

Q0← Q,Σ0←Σ,Γ0 ←Γ,δ0←δ

Pour chaquex∈ A

(1) CalculerAxR

(2) Calculer la longueurP(Ux,Vx)entre chaque paire d’étatsUxet Vx dansAxR

(3) Pour chaqueUx∈ Qx et chaqueVx∈ Qxfaire

(3.1) SiP(Ux,Vx)<∞ /* Il y a un chemin entreUxet Vx */ (3.1.1) Ajouter le symbolexP(Ux,Vx)+1et xP(Ux,Vx)+1 àΣ

(3.1.2) Pour chaqueWy ∈Succ(Vx)\{Ux}et chaque(Vx,hx,α,βi,Wy)∈δ

Ajouter la transition(Ux,hxP(Ux,Vx)+1,α,βi,Wy)àδ0

(3.1.3) Pour chaqueWy ∈Succ(Vx)\{Ux}et chaque(Vx,hx,α,βi,Wy)∈δ

Ajouter la transition(Ux,hxP(Ux,Vx)+1,α,βi,Wy)toδ0

Complexité de l’algorithme 4. Le calcul du sous-automate (étape(1)) se fait enO(|δ|+|Q|), car il suffit de parcourir l’ensemble des nœuds et des transitions de l’automate et de ne garder que les états indexés par la lettre xet les transitions entre ces états. Calculer le chemin le plus court entre chaque paire de nœuds se fait grâce à l’algorithme de Floyd-Warshall enO(|Qx|3). Si x=y, il a au maximum

|A| −1transitions entre Vxet Wy dans Q(des transitions de la forme(Ux,hx,α,αi,Wx)pour toutes les valeurs possibles deα, exceptéx, puisque la construction de l’automate interdit l’encapsulation d’un pro-tocolexdans lui-même car l’architecture Pseudo-Wire ne le permet pas – il est donc impossible d’avoir

x comme protocole courant et en même temps comme sommet de pile). Si x 6= y, il y a au plus |A|

transitions entre Vx et Wy dansQ (le dépilement(Vx,hx,y,∅i,Wy)et les empilements(Vx,hx,α,xαi,Wy)

pour toutes les valeurs deα∈Γ, exceptéx). Et comme|Succ(Vx)|<|Q|, la complexité des étapes(3.1.2)

et(3.1.3)est bornée parO(|Q| × |A|). Cependant un état ne peut appartenir qu’à un seul sous-automate, la complexité de l’algorithme 4 est bornée par O P

x∈A

|δ|+|Q|+|Qx|3+ (|Qx|2× |Q| × |A|) . De plus ∀x ∈ A,|Qx| ≤ |V|(voir l’algorithme 3 pour la construction de l’ensemble d’états Q). En consé-quence, la complexité de l’algorithme 4 est enO max |A| ×(|δ|+|Q|),|A| × |V|3,|A|2× |V|2× |Q|

, ce qui correspond à O max(|A|4× |E|,|A|3× |V|3)

dans le modèle de réseau multicouche. Le nombre de transitions dansδ0 est borné par|δ|+O P

x∈A(|Qx|2× |Q| × |A|), ce qui correspond àO(|A|3× |V|3)

dans le modèle de réseau multicouche.

Exemple. L’algorithme 4 transforme l’automate illustré par la figure 5.6 en l’automate illustré par la figure 5.7. Par exemple, en considérant le protocoleb, l’algorithme calcule le sous-automate induit par les étatsVb,Wb et Kb. La longueurP(Vb,Wb) = 1 est ensuite calculée. Pour court-circuiter la séquence de transitions(Vb,hb,a,ai,Wb) (Wb,hb,a,∅i,Da), la transition(Vb,hb2,a,∅i,Da)est créée et ajoutée à l’au-tomate transformé.

Soit L(AR) le langage (i.e., l’ensemble de mots) accepté par AR, et soit L(A0R)le langage accepté parA0R. Enfin, soitf : Σ0→Σ la fonction définie par :

– Si xi=ai∈ A0 alorsf(xi) =aa . . . aa | {z } ifois – Si xi=ai∈ A0 alorsf(xi) =aa . . . aa | {z } ifois

Figure5.7 – L’automate à pile transformé correspondant à l’automate sur la figure 5.6.

Puis, par extension du domaine def à (Σ0):

f : (Σ0)→Σ

w0=x1ix2j. . . xnk →f(w0) =f(x1i)f(x2j). . . f(xnk)

Par souci de simplicité, nous ne ferons pas de distinction entrexetx1 pour toutx∈ A. Nous noterons

f(L(A0

R)) le langage (ou l’ensemble des mots) accepté par A0

R transformé par f (i.e. f(L(A0 R)) =

{f(w0)tel que w0∈L(A0R)}).

Il est évident quef n’est pas une bijection puisquef(xixj) =f(xi+j). Pour opérer la transformation entreL(AR)etL(A0R), Nous définissonsg: Σ→(Σ0) telle que :

– Pour chaque w=xx . . . x | {z } ifois yy . . . y | {z } jfois . . . zz . . . z | {z } k fois ∈Σ,g(w) =xiyj. . . zk.

En d’autres termes :w0 =g(w)est le mot le plus court dans(Σ0)tel que f(w0) =w.

Les lemmes et les propositions suivantes montrent que le langage accepté par l’automate transformé

A0R est «équivalent» au langage accepté par l’automate originalAR. Ici,équivalent signifie que chaque mot accepté parA0

Rpeut être associé à un mot accepté parAR, et ceci via la fonctionf. De plus, l’auto-mate transformé a une nouvelle propriété :il y a une relation linéaire entre la longueur d’un mot accepté et le nombre minimum d’encapsulations et de désencapsulations nécessaires pour l’accepter.Cette propriété permet de trouver le mot nécessitant le nombre minimum d’encapsulations et de désencapsulations accepté par l’automate originalAR. Cela peut-être fait simplement en calculant le mot le plus court accepté par l’automate transforméA0R.

Lemme 1. Le langage f(L(A0R)) accepté par A0R puis transformé par f, est le même que le langage

L(AR)accepté par AR.

Démonstration. Nous démontrons cette égalité par double inclusion :

1. L(AR)⊆ f(L(A0R)) :∀w ∈L(AR),f(w) = w (nous rappelons que x= x1). Donc f(L(AR)) =

L(AR)(1). D’un autre côté, la construction deA0R par l’algorithme 4 ne supprime aucun symbole de l’alphabet, aucune transition, aucun état (que cet état soit final ou non) deAR. DoncL(AR)⊆

L(A0 R). Et doncf(L(AR))⊆f(L(A0 R))(2) . De (1) et (2) Nous déduisonsL(AR)⊆f(L(A0R)). 2. L(AR)⊇f(L(A0R)) :Soitw0 =x1 ix2 j. . . xn

l un mot dans L(A0R) et soitt01t02. . . t0n+1 une séquence de transitions acceptant w0. Pour chaque transition t0m = (Uxm−1,hxmk1,α,βi,Wxm)(1< m < n) de cette séquence, telle que t0m∈δ0\δ, il y a une séquence dek−1 transitions passives dans AR

(puisque la construction det0mdansA0R nécessite l’existence d’une telle séquence dansAR). Cette séquence débute par l’état Uxm−1 et est suivie par la transition (Vxm−1,hxm1,α,βi,Wxm). Donc, cette séquence dansARcorrespond àf(xmk1). Et pour chaquet0mdansA0R, ou bient0m∈δet donc

t0mcorrespond àxm+1k (sik= 1), ou bient0m∈δ0\δet donc il y a une séquence de transitions dans

AR qui correspond àf(xm+1k )(sik >1). Et comme, par définition,f(w0) =f(x1i)f(x2j). . . f(xnl),

f(w0)∈L(AR). Ainsif(L(A0

R))⊆L(AR).

Soitw0 le mot le plus court accepté parA0

R. Soit N bA0R

push(w0)le nombre minimum d’empilements dans une séquence de transitions acceptantw0dansA0R. Et soitN bA

0 R

pop(w0)le nombre minimum de dépilements dans une séquence de transitions acceptantw0 dansA0R.

Lemme 2. La longueur de la plus courte séquence de transitions acceptant w0 dans A0R est égale à

1 +N bA 0 R push(w0) +N bA 0 R pop(w0). De plus,N bA 0 R pop(w0) =N bA 0 R push(w0) + 1.

Démonstration. Tout d’abord, nous prouvons que w0 ne peut pas être de la forme. . . xmi xm+1j . . . avec

xm=xm+1. SoitUxm l’état dans lequelA0Rest avant de lire le symbolexmi . SoitVxm+1 l’état dans lequel est A0

R après la lecture du symbolexm

i et avant la lecture du symbolexm+1j . Enfin soit Wy l’état dans lequel estA0R après la lecture du symbolexm+1j .

Si xm = xm+1, alors, par construction, il y a une transition (Uxm,hxm

i+j,α,βi,Wy) (où α,β est un dépilement dey ou un empilement dexmifxm6=y). Alors, si nous remplaçons xmi xm+1j parxmi+j dans

w0, le mot obtenu serait plus court que w0 et il serait aussi accepté parA0R. Donc le mot le plus court accepté parA0R estw0 =x1ix2j. . . xnk oùxm6=xm+1 avec(1≤m < n).

Par construction de A0R, pour chaque symbole xmi dans le mot w0, il y a une transition d’empile-ment(Uxm,hxm

i ,α,xmαi,Wy) sixm

i ∈ A0 ou une transition (Uxm,hxm

i ,y,∅i,Wy) sixm

i ∈ A0. Donc toutes les transitions dans la plus courte séquence de transitions acceptant w0 sont des empilements ou des dépilements, excepté la première transition à partir de l’état initial (SA,h,z0,z0i,Ux1)et le dépilement final (Vxn,hxn

k,z0,∅i,DA). Le nombre des autres dépilements est égal au nombre d’empilements (ce qui est nécessaire pour avoirz0au sommet de la pile avant la transition finale).

Maintenant, soitwun mot accepté parAR, soitN bAR

push(w)le nombre minimum d’empilements dans une séquence de transitions acceptantwdansAR, et soitN bAR

pop(w)le nombre minimum de dépilements dans une séquence de transitions acceptantwdansAR.

Lemme 3. Pour chaque mot w∈L(AR): – N bAR pop(w) =N bA 0 R pop(g(w)) – N bAR push(w) =N bA 0 R push(g(w))

Démonstration. Soitt1t2. . . tnla séquence de transitions acceptantwdansARavec un nombre minimum d’empilements et de dépilements. Pour chaque séquencetiti+1. . . tj de transitions passives suivie par un empilement ou un dépilement, il y a une transition avec le même empilement ou dépilement et le même symbole en lecture indexé parj−i+ 1. Alorsg(w)∈L(A0R).

Soitt01t02. . . t0n0la séquence de transitions ayant le minimum d’empilements et dépilements et acceptant

g(w)dansA0

R. Il est évident quef(g(w)) =w. Ainsi, s’il y a une séquencet00

1t00

2. . . t00

n0 qui accepteg(w)

avec moins d’empilements et de dépilements quet0

1t0

2. . . t0

n0, alors chaquet00

i ∈δ0\δpeut être remplacée par une séquence de transitions passives suivies par un empilement ou un dépilement dansAR. Et cette séquence accepte f(g(w))(qui est égal à w) avec moins d’empilements et de dépilements que dans la séquencet1t2. . . tn, ce qui contredit le fait que cette séquence minimise le nombre d’empilements et de dépilements pour accepterw.

Proposition 4. Le mot accepté par AR qui minimise le nombre d’empilements et de dépilements est

f(w0), oùw0 est le mot le plus court (i.e., ayant le minimum de symboles) accepté par A0R.

Démonstration. Par le lemme 2, le mot le plus court accepté parA0R minimise le nombre d’empilements et de dépilements dansA0R pour être accepté (puisque le nombre d’empilements et de dépilements croît linéairement en fonction de la longueur du mot). Soitw0 ce mot.

Supposons qu’il y a un mot w accepté par AR tel que N bAR

push(w) < N bA

0 R

push(w0). Par le lemme 3,

N bA 0 R push(g(w)) = N bAR push(w), et donc N bA 0 R push(g(w)) < N bA 0 R

push(w0), puisque w0 = arg minN bA

0 R

push. Par l’absurde,f(w0)est le mot qui minimise le nombre d’empilements et de dépilements dansAR pour être accepté.