Академический Документы
Профессиональный Документы
Культура Документы
Nocao de Equivalencia
Relacao Equivalencia Forte de Programas se as funcoes computadas dos programas sao iguais para qualquer maquina Relacao Equivalencia de Programas em uma Maquina se as funcoes computadas dos programas sao iguais para uma determinada maquina Relacao Equivalencia de Maquinas se as maquinas podem simular umas as outras (a simulacao pode ser feita por programas diferentes)
Igualdade de funcoes:
f : S S , f n = f f f . . . f (n vezes)
fortemente, P Q, se e somente se, para qualquer maquina M as funcoes parciais sao iguais:
Exemplos de programas
1. Programa monoltico: P1 1: se T entao va para 2 senao va para 3 2: faca F va para 1 2. Programa iterativo: P2 enquanto T faca (F) 3. Programa recursivo: P3 P3 e R onde R def (se T entao F;R senao )
Computacao de P1 em M
X tal que X (x ) = v , entao se < P1 , M > e denida para x, sua computacao e dada por:
(1, v )(2, v )(1, F (v ))(2, F (v ))(1, F 2 (v ))(2, F 2 (v )) . . . (1, F n (v ))(3, F n (v )), onde n e o menor natural tal que T (F n (v )) = false
Assim
< P1 , M > (x ) = Y (F n (v ))
Computacao de P2 em M
Computacao de P3 em M
< P3 , M > (x ) = Y (F n (v ))
Logo
E como ca a computacao?
A computacao de P3
(R; ;v) ((se T entao F;R senao ); ,v) ((F;R); ,v) (R; ,F (v )) ((se T entao F;R senao); ,F (v )) (F;R; ,F (v )) (R; ,F 2 (v )) . . . (R; ,F n (v )) ((se T entao F;R senao); ,F n (v )) n ( , F ( v ) )
determinada maquina)
As operacoes das funcoes computadas sao as mesmas e efetuadas na
mesma ordem
Por isso a funcao parcial e unica Permite analise estrutural de programas (otimizacao)
Hierarquia de programas
PQ
Sejam P e Q, programas iterativo e monoltico, respectivamente Como transformar P em Q?
temos
1: va para 2
Para um identicador de operacao F temos
1: faca F va para 2
Para composicao sequencial V ; F temos
PQ
Sejam P e Q, programas monoltico e recursivo, respectivamente, tal
. . ., Rn def
, onde
k {1, . . . , n 1} e Ek e dado por: 1. Operacao, onde rk e: rk : faca F va para rj Temos que Ek e a expressao de subrotina F ; Rj 2. Teste, onde rk e: rk : se T entao va para rj senao va para ri Temos que Ek e a expressao de subrotina (se T entao Rj senao Ri )
EFP: Recursivo
Monoltico
Tomando o programa que duplica para a maquina de um registrador (< Rec duplica, M1R >) a funcao computada e dada para qualquer n tal que,
fortemente equivalentes, precisam ser executadas na mesma ordem, P e Rec duplica nao sao Programas Fortemente Equivalentes
do ciclo e ao mesmo tempo usar este registrador como acumulador, resultando num ciclo innito
e.g. sub R ad ad, onde sub controla e ad ad acumula Sendo a computacao innita, a funcao correspondente nao e denida
Rec duplica
Constatacao
numero nito e determinado de vezes que a recursao pode ocorrer, seria preciso prever innitas possibilidades das operacoes e testes dessas recursoes
EFP: Monoltico
Iterativo
Tomando o programa Par, dado a seguir, para a maquina de um registrador (< Par , M1R >) a funcao computada e dada para qualquer n tal que, < Par , M1R > (n) = 1, se n e par < Par , M1R > (n) = 0, se n e mpar
(1)
ad
zero
sub
zero
sub
parada
mesma funcao
mais de uma vez (existe um ciclo iterativo em P) ate aqui tudo bem
Par
Poder computacional
Pergunta: Qual classe de programa tem maior poder computacional?
programas, onde as funcoes computadas devem ser coincidentes para qualquer maquina, para 1. qualquer programa recursivo existe um monoltico, e 2. qualquer monoltico existe um iterativo
Ou seja, possuem o mesmo poder computacional, para qualquer
nao ha, necessariamente, uma relacao entre as operacoes e testes, e a ordem de execucao
Equivalencia de Programas
Programas M-Equivalentes
Equivalencia de Maquinas
1. Dadas as maquinas M1 = (V1 , X1 , Y1 , X1 , Y1 , F1 , T1 ) e M2 = (V2 , X2 , Y2 , X2 , Y2 , F2 , T2 ) 2. M2 simula fortemente M1 se, e somente se, para qualquer programa P para M1 , existe um programa Q para M2 tal que 2.1 suas funcoes parciais computadas sao iguais, ou seja 2.2 < P , M1 >=< Q , M2 > 3. Por isso, os conjuntos de entradas e sadas sao os mesmos nas duas maquinas
1. Dadas as maquinas M1 = (V1 , X1 , Y1 , X1 , Y1 , F1 , T1 ) e M2 = (V2 , X2 , Y2 , X2 , Y2 , F2 , T2 ) 2. M2 simula M1 se, e somente se, para qualquer programa P para M1 , existe um programa Q para M2 , tal que 2.1 exista a funcao de codicacao, c : X1 X2 ; 2.2 exista a funcao de decodicacao, d : Y2 Y1 ; e 2.3 < P , M1 >= d < Q , M2 > c
1. M1 simula M2 e 2. M2 simula M1
Relacao de Equivalencia de Maquina
Vericacao de Equivalencia
Vericacao de Equivalencia
Vericacao de Equivalencia
Vericacao de Equivalencia
Vericacao de Equivalencia
fortemente equivalentes
Existe um algoritmo para decidir se dois programas monolticos sao
fortemente equivalentes
Como todo programa iterativo pode ser transformado num monoltico,
Vericacao de Equivalencia
Logo, dois programas sao equivalentes fortemente se sao equivalentes em qualquer maquina de traco
2. Programa monoltico com Instrucoes Rotuladas Compostas r1 : se T entao F va para r2 senao faca G va para r3
Vericacao de Equivalencia
Maquina de traco
rotulos equivalentes fortemente, o que permite vericar se dois programas sao equivalentes fortemente
Vericacao de Equivalencia
Op e o conjunto de palavras (Op = {F , G, . . .}), para memoria, entrada e sada idOp e a funcao identidade, de entrada e sada F e o conjunto de interpretacoes de operacoes, onde F : Op Op e F (w ) = wF , para w Op T e o conjunto de interpretacoes de testes, onde T : Op {V , F }
Vericacao de Equivalencia
= {F , G, H , . . .} operacoes interpretadas
= FG . . . H um traco de M
[w , M ] : X V
A funcao e total, [w , M ] : H Para uma entrada especca, [wx , M ] : H
. . . G F X
. . . G F X ( x )
Vericacao de Equivalencia
monolticos
Possui um unico tipo de instrucao
r1 : se T entao faca F va para r2 senao faca G va para r3 , pode ser escrita da forma r1 : (F , r2 ), (G, r3 )
Vericacao de Equivalencia
Vericacao de Equivalencia
Testes encadeados: r1 : (F , r2 ), (G, r3 ) Testes encadeados em ciclo innito: r1 : (F , r2 ), (ciclo, ), neste caso inclumos a instrucao : (ciclo, ), (ciclo, )
Vericacao de Equivalencia
Equivalencia Forte
Vericacao de Equivalencia
Prova trivial
concatenacao de identicadores
, rotulo de parada e smbolo neutro indica a computacao innita e que as funcoes sao indenidas
Vericacao de Equivalencia
{a, xA , b, xB }
Assim, se Q = (IQ , q ) e R = (IR , r ) sao programas com I.R.C, temos que Pq = (I , q ) e Pr = (I , r ) sao programas onde I e a uniao disjunta de IQ e IR , logo: Pq Pr se, e somente se, Q R
Vericacao de Equivalencia
Vericacao de Equivalencia
E uma sequencia A0 , A1 , . . ., onde Ak Ak +1 Sendo a cadeia nita, An = An+k e o limite e dado por, lim Ak = An
Vericacao de Equivalencia
= {}, temos que Ak +1 = Ak {r | r e rotulo de instrucao antecessora de alguma instrucao rotulado por Ak } r lim Ak /
Vericacao de Equivalencia
Vericacao de Equivalencia
A0 A1 A2 A3 A4 A5
lim Ak = {1, 2, 3, 4, 5, 6, }
(I , 7) (I , ), pois 7 lim Ak /
Vericacao de Equivalencia
1. Determinar a cadeia nita de conjuntos, e 2. Para instrucoes com rotulos r , onde r lim Ak / 2.1 Eliminar a instrucao de r ; 2.2 Todo par da forma (F , r ) deve ser substituda por (ciclo, ); e 2.3 I = I { : (ciclo, ), (ciclo, )}.
Vericacao de Equivalencia
Simplicacao do Exemplo
Vericacao de Equivalencia
r : (F1 , r1 ), (F2 , r2 ) s : (G1 , s1 ), (G2 , s2 ) r e s sao ditos consistentes se, e somente se, F1 = G1 e F2 = G2
Vericacao de Equivalencia
Logo, r e s sao ditos Rotulos Equivalentes Fortemente se, e somente se 1. r = s = ; 2. r e s sao diferentes de e consistentes.
Vericacao de Equivalencia
Vericacao de Equivalencia
4. Em Bk +1 :
/ 4.1 Bk +1 = 0: Q e R sao equivalentes fortemente e o algoritmo termina; / 4.2 Bk +1 = 0: Todos os rotulos de Bk +1 sao equivalentes fortemente, entao volte para o passo 3, senao Q e R nao sao equivalentes fortemente e o algoritmo termina.
Vericacao de Equivalencia
Vericacao de Equivalencia
vericar se (I , 1) (I , 8)
Usando o passo 2 do algoritmo, se 1 e 8 sao rotulos fortemente
B1 B2 B3 B4 B4
= {(2, 9), (3, 10)}, pares fortemente equivalentes = {(4, 10), (5, 11)}, pares fortemente equivalentes = {(6, 12), (, )}, pares fortemente equivalentes = {(, )}, pares fortemente equivalentes / =0