Exemplo
Equivalência Forte de Programa
Monolítico
• Dados 2 programas, determinar se são
equivalentes fortemente.
Q
R
Equivalência de programa monolítico
• Passo 1: Transformar os fluxos em instruções
rotuladas compostas;
• Passo 2: Identificação dos ciclos infinitos dos
programas;
• Passo 3: União disjunta dos ciclos infinitos;
• Passo 4: Verificar se (I, 1) ≡ (I, 8), se sim Q ≡ R
então B0 = {(1,8)};
• Passo 5: Construção dos conjuntos sucessores:
(B k+1).
• Passo1: Transformar Q e R em instruções
rotuladas compostas e simplificadas:
Q
1:
2:
3:
4:
5:
6:
ω:
R
(G,2),(F,3)
(G,2),(F,3)
(F,4),(G,5)
(F,4),(G,5)
(F,6), (ciclo, ω)
(parada, ), (ciclo, ω)
(ciclo, ω), (ciclo, ω)
8: (G,9),(F,10)
9: (G,9),(F,10)
10: (F,10),(G,11)
11: (F,12), (ciclo, ω)
12: (parada, ), ciclo,ω)
13: (ciclo, ω), (ciclo, ω)
• Passo 2: Identificação dos ciclos infinitos.
• Ciclo infinito de Q
A0 = {}
A1 = {6, }
A2 = {5, 6, }
A3 = {3, 4, 5, 6, }
A4 = {3, 4, 5, 6, }
A5 = {1, 2, 3, 4, 5, 6, }
A6 = {1, 2, 3, 4, 5, 6, }
Portanto: lim Ak = {1, 2, 3, 4, 5, 6 , }
( IR , 7) = (I, ω), pois 7  lim Ak
• Ciclo infinito de R.
A0 = {}
A1 = {12, }
A2 = {11, 12, }
A3 = {10, 11, 12, }
A4 = {8, 9, 10, 11, 12, }
A5 = {8, 9, 10, 11, 12, }
Portanto: lim Ak = {8, 9, 10, 11, 12 , }
( IR , 13) = (I, ω), pois 13  lim Ak
• Passo 3: (Passo 1 algoritmo) União disjunta
dos programas
1:
2:
3:
4:
5:
6:
(G,2),
(F,3)
(G,2),
(F,3)
(F,4),
(G,5)
(F,4),
(G,5)
(F,6),
(ciclo, ω)
(parada, ), (ciclo, ω)
8:
9:
10:
11:
12:
ω:
(G,9),
(F,10)
(G,9),
(F,10)
(F,10),
(G,11)
(F,12),
(ciclo, ω )
(parada, ), (ciclo, ω )
(ciclo, ω ), (ciclo, ω )
• Passo 4: Verificar se (I, 1) ≡ (I, 8), se sim temos
que Q ≡ R e B0 = {(1,8)}
• Passo 5: Construção dos conjuntos sucessores
(Bk + 1)
B1 = {(2, 9), (3, 10)}
B2 = {(4, 10), (5, 11)}
B3 = {(6, 12), (ω, ω)}
B4 = {(, )}
B5 = Ø
– Dúvidas???
Download

Equivalencia de Programas