3.2.3. Illustration de l'algorithme de la fusion
consensuelle
Nous illustrons l'algorithme de fusion consensuelle avec la
grammaire Gexpl de l'exemple 8. Nous associons des automates d'arbre
.91(1) et .91(2) respectivement aux
répliques par-
tielles mises à jour tma j
v1 et tma j
v2 (figure 3.2.c et 3.2.e), puis nous construisons
l'automate du
3.2. Calcul du consensus 40
Mémoire - ZEKENG NDADJI Milliam Maxime
LIFA
consensus 91(sc) = 91(1)
0 91(2) par application de la démarche
décrite dans la section 3.2.2 et enfin nous présentons les
documents les plus simples du consensus (figure 3.3 page 43).
FIGURE 3.2 - Exemple de workflow d'une édition avec
conflit et consensus correspondant.
Les schémas de transition pour la vue
{A,B}
Une liste d'arbres (forêt) est représentée
par la concaténation de leurs linéarisations. Nous utilisons la
parenthèse ouvrante '(' et fermante ')' pour représenter les
symboles de Dyck associés au symbole visible A et le crochet
ouvrant '[' et fermant ']' pour représenter ceux associés au
symbole visible B. Puisque les arbres manipulés peuvent
contenir des bourgeons, ils est nécessaire de pouvoir linéariser
ces derniers. Nous associons donc les symboles '(w' et
')w' (resp. '[w' et ']w') au bourgeon
Aw (resp. Bw) de type A (resp.
B). Chaque transition des automates associés aux
répliques partielles suivant la vue {A,B} est conforme
à l'un des schémas de règles suivants :
(A,w1) -+
(P1,[(C,u),(B,v)]) si w1
= u[v]
(A,w2) -+ (P2,[]) si w2 =
E
(A,w3) -+ (Aw,[]) si
w3 = (w )w
(B,w4) -+
(P3,[(C,u),(A,v)]) si w4
= u(v)
(B,w5) -+
(P4,[(B,u),(B,v)]) si w5
= [u][v]
(B,w6) -+ (Bw,[]) si
w6 = [w]w
(C,w7) -+
(P5,[(A,u),(C,v)]) si w7
= (u)v
(C,w8) -+
(P6,[(C,u),(C,v)]) si w8
= uv =6 E
(C,w9) -+ (Cw,[]) si
w9 = E
Ces schémas de règles [BTT08] sont obtenus
à partir des productions de la grammaire. Les états
(A,w3) avec w3 = (w )w,
(B,w6) avec w6 = [w]w et (C,w9)
avec w9 = E sont des états de sortie [BTT08]. La règle
(C,w9) -+ (Cw,[]) liée à la
production P7 stipule que l'AST
3.2. Calcul du consensus 41
généré à partir de l'état
(C,w9) est réduit à un bourgeon de type C
(C est le symbole situé en partie gauche de
P7).
Remarque 15 Nous ne représentons pas
tout l'ensemble des schémas de règles dans cet exemple; seul le
sous-ensemble utile pour la réconciliation des documents clos est
représenté car les documents à réconcilier ici sont
tous clos. L'ensemble des schémas de règles est totalement
représenté dans l'annexe A.
Construction de l'automate
A(1) associé à
tv1
Ayant associé les symboles de Dyck '(' et ')' (resp. '['
et ']') au symbole grammatical A (resp. B), la
linéarisation de la réplique partielle tmaj
.
v1 (fig. 3.2.c) donne (([[()()][()]])[()])
Comme A est l'axiome de la grammaire et qu'il est
visible, l'état initial de l'automate A(1) est
q10 = (A,([[()()][()]])[()]). En ne
considérant que les états accessibles à partir de
q10 et en appliquant les schémas de
règles présentés précédemment, nous obtenons
l'automate d'arbre suivant pour la réplique tma
j
v1 (fig. 3.2.c) :
q10
q11
q11
q12
q13
q14
q15
q16
q17
q18
q18
|
-+
-+
-+ -+ -+ -+ -+ -+ -+ -+ -+
|
(P1,[q11,q12]) (P5,[q13,q14])
(P6,[q1
4,q11]) |
(P3,[q14,q15])
(P1,[q14,q16])
(Cw,[])
(P2,[])
(P4,[q17,q12])
(P3,[q18,q15])
(P5,[q15,q14])
(P6,[q18,q14])
|
|
(P6,[q11,q14])
(P6,[q14,q18])
|
avec avec
avec avec
avec avec
|
q11 = (C,([[()()][()]]))
et q12 =
(B,())
q13 = (A,[[()()][()]]) et
q14 = (C,e)
q15 = (A,e)
q16 = (B,[()()][()])
q17 = (B,()())
q1 8= (C,())
|
L'état q14 =
(C,e) est le seul état de sortie de l'automate
A(1). Il est aisé de vérifier que le document
de la figure 3.2.f issu de la projection inverse de
tv1maj appartient au langage
accepté par l'automate A(1).
Construction de l'automate
A(2) associé à
tv2
En associant au symbole grammatical C (resp.
A) les symboles de Dyck '[' et ']' (resp. '(' et ')'), en associant
aussi au bourgeon Cw (resp. Aw) les
symboles de Dyck '[w' et ']w' (resp. '(w' et
')w'), les schémas des transitions des automates
associés aux répliques partielles suivant la vue {A,Cl
sont les suivants :
(A,w1) -+
(P1,[(C,u),(B,v)]) si w1
= [u]v
(A,w2) -+ (P2,[])
|
si w2 = e
|
(A,w3) -+ (Aw,[]) si
w3 = (w)w
(B,w4) -+
(P3,[(C,u),(A,v)]) si w4
= [u](v)
(B,w5) -+
(P4,[(B,u),(B,v)]) si w5
= uv =6 e
(B,w6) -+ (Bw,[]) si
w6 = e
(C,w7) -+
(P5,[(A,u),(C,v)]) si w7
= (u)[v]
(C,w8) -+
(P6,[(C,u),(C,v)]) si w8
= [u][v]
(C,w9) -+ (P7,[]) si w9 =
e
(C,w10) -+(Cw,[]) si
w10 = [w]w
Mémoire - ZEKENG NDADJI Milliam Maxime
LIFA
3.2. Calcul du consensus 42
Le mot de Dyck ([([][]()[]())[]][[][]]()) est la
linéarisation de la réplique partielle
tma j
v2
(fig. 3.2.e). L'état q20
= hA,[([][]()[]())[]][[][]]()i est donc l'état initial de
l'automate 91(2) associé à cette
réplique. Ses transitions sont :
avec q21 =
hC,([][]()[]())[]i et q22 =
hB,[[][]]()i
avec q23 = hA,[][]()[]()i
et q24 = hC,åi avec
q25 = hC,[][]i et
q26 = hA,åi avec
q27 = hB,[]()[]()i
avec q28 =
hB,åi, q29 = hB,[]i,
q210 = hB,()[]()i,
q211 = hB,[]()i,
q212 =
hB,[]()[]i et q2 13 = hB,()i
q20
q21
q22
q23
q24
q25
q26
q27
q28
q29
|
-?
-? -? -? -? -? -? -?
-?
-?
|
(P1,[q2
1,q22])
(P5,[q23,q24])
(P3,[q25,q26])
(P1,[q24,q27])
(P7,[])
(P6,[q24,q24])
(P2,[])
(P4,[q28,q27])
|
(P4,[q29,q210])
|
(P4,[q2 11,q211]) |
(P4,[q212,q213])
| (P4,[q27,q28])
(Bù,[])
(P4,[q2
8,q29]) |
(P4,[q29,q28])
|
Mémoire - ZEKENG NDADJI Milliam Maxime
LIFA
q210
q211
q212
q213
q214
|
-?
-?
-?
-?
-?
|
(P4,[q28,q210])
(P4,[q214,q213])
(P3,[q2
4,q26])
(P4,[q28,q212])
(P4,[q2 11,q29])
(P4,[q28,q213])
(P4,[q2 8,q214])
(P4,[q214,q28])
|
|
(P4,[q213,q211])
|
(P4,[q210,q28])
| (P4,[q29,q2 14])
|
(P4,[q212,q28])
| (P4,[q2 13,q28])
| (P4,[q2 13,q29])
|
|
|
|
|
avec
|
q214 = hB,()[]i
|
L'état q28 est le seul
état de sortie de l'automate 91(2).
Construction de l'automate du consensus
91(sc)
Par application du produit synchrone de plusieurs automates
d'arbres décrit dans la section 3.2.2 aux automates
91(1) et 91(2), l'automate du consensus
91(sc) = 91(1) ?Ù
91(2) a pour état initial q0 =
(q10,q20).
91(1) possède une transition de
q10 vers
[q11,q12]
étiquetée P1. De même, 91(2)
possède une transition de q20 vers
[q21,q22]
étiquetée P1. On a donc dans
91(sc) une transition étiquetée
P1 permettant d'accéder aux états [q1 =
(q11,q21),q2
= (q12,q22)]
à partir de l'état initial q0 =
(q10,q20).
Suivant ce principe, on construit l'automate consensuel suivant :
q0
q1
q2
q3
q4
q5
q6
|
-? -? -? -? -? -?
-?
|
(P1,[q1,q2])
(P5,[q3,q4]) (P3,[q5,q6])
(P1,[q4,q7]) (P7,[])
(P6,[q8,q8])
(P2,[])
|
q0 =
(q10,q20)
avec q1 = (q1
1,q21) et q2 =
(q1 2,q22)
avec q3 =
(q13,q23) et
q4 =
(q14,q24)
avec q5 =
(q14,q25) et
q6 =
(q15,q26)
avec q7 =
(q16,q27)
avec q8 = (qs1,q24) et
qs1
hOpen C,[]i
|
=
|
3.3. Synthèse 43
Mémoire - ZEKENG NDADJI Milliam Maxime
LIFA
q7 -+ (P4,[q9,q10]) |
(P4,[q11,q12]) |
(P4,[q13,q14]) |
(P4,[q15,q16]) |
(P4,[q17,q18])
|
avec q9 =
(q17,q28),
q10 =
(q12,q27),
q11 =
(q17,q29),
q12 =
(q12,q210),
q13 =
(q17,q211),
q14 =
(q12,q211),
q15 =
(q17,q212),
q16 =
(q12,q213),
q17 =
(q17,q27) et
q18 =
(q12,q28)
|
q8 -+ (P7,[])
q9 -+ (P3,[q19,q20]) avec
q19 = (q18,qs1) et q20 =
(q15,qs2),
qs2 = (Open A,[])
q13 -+ (P3,[q21,q6]) avec
q21 = (q1 8,q2
4)
q14 -+ (P3,[q4,q6])
q18 -+ (P3,[q22,q20]) avec
q22 = (q14,qs1)
q19 -+
(P5,[q20,q22]) |
(P6,[q19,q22]) |
(P6,[q22,q19])
q20 -+ (P2,[])
q10 -+
(Ba),[]), q11 -+
(Ba),[]), q12 -+
(Ba),[]), q15 -+
(Ba),[]), q16 -+
(Ba),[]),
q17 -+ (Ba),[]), q21
-+ (Ca),[]), q22 -+
(Ca),[])
Les états
{q10,q11,q12,q15,q16,q17,q21,q22}
sont les états de sortie de l'automate .(sc). Ce sont
des états dont les états composites sont soit en conflit (par
exemple q10 =
(q12,q7) et
q12 y q27), soit
sont tous des états de sortie (par exemple q22 =
(q14,qs1)).
L'utilisation de la fonction de génération des
AST (avec bourgeons) les plus simples d'un langage d'arbre à partir de
son automate [BTT08, BTT07, TT09] sur l'automate .(sc),
produit quatre AST dont les arbres de dérivations (les
consensus) sont schématisés sur la figure 3.3.
FIGURE 3.3 - Arbres consensuels générés
à partir de l'automate .(sc).
|
|