Sunteți pe pagina 1din 58

Equivalencia de Programas e Maquinas

Equivalencia de Programas e Maquinas

Equivalencia de Programas e Maquinas

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)

Equivalencia de Programas e Maquinas Equivalencia de Programas

Equivalencia Forte de Programas

Resultado da Equivalencia Forte


programas recursivos sao mais gerais que os monolticos, e os programas monolticos sao mais gerais que os iterativos

Equivalencia de Programas e Maquinas Equivalencia de Programas

Algumas Propriedades Uteis

Igualdade de funcoes:

f , g : X Y , f = g se, e somente se, x X

ou f(x) e g(x) sao indenidas ou denidas e f(x)=g(x)

Composicao sucessiva de funcoes:

f : S S , f n = f f f . . . f (n vezes)

Equivalencia de Programas e Maquinas Equivalencia de Programas

Denicao de Equivalencia Forte de Programa

P e Q (nao necessariamente do mesmo tipo) sao equivalentes

fortemente, P Q, se e somente se, para qualquer maquina M as funcoes parciais sao iguais:

< P , M >=< Q , M >

Equivalencia de Programas e Maquinas Equivalencia de Programas

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 )

Equivalencia de Programas e Maquinas Equivalencia de Programas

Computacao de P1 em M

Seja M uma maquina qualquer e x

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 ))

Equivalencia de Programas e Maquinas Equivalencia de Programas

Computacao de P2 em M

Como ca a computacao de P2 em M? Lembra da denicao de computacao para iterativo?

Equivalencia de Programas e Maquinas Equivalencia de Programas

Computacao de P3 em M

Da mesma forma para P3

< P3 , M > (x ) = Y (F n (v ))
Logo

< P1 , M >=< P3 , M > e P1 P3

E como ca a computacao?

Lembra do (D0 , v0 ), . . . , (Dn , vn )? Entao, Tente!!!

Equivalencia de Programas e Maquinas Equivalencia de Programas

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 ) )

Equivalencia de Programas e Maquinas Equivalencia de Programas

Importancia da Equivalencia Forte de Programas

Classes de equivalencia (conjunto de programas para uma

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)

Equivalencia de Programas e Maquinas Equivalencia de Programas

Relacao de equivalencia de programas

Hierarquia de programas

P. Recursivos P. Monoliticos P. Iterativos

Equivalencia de Programas e Maquinas Equivalencia de Programas

EFP: Iterativo Monoltico (1)

Para qualquer programa iterativo P, existe um monoltico Q, onde

PQ
Sejam P e Q, programas iterativo e monoltico, respectivamente Como transformar P em Q?

Equivalencia de Programas e Maquinas Equivalencia de Programas

EFP: Iterativo Monoltico (2)


Para a operacao

temos

1: va para 2
Para um identicador de operacao F temos

1: faca F va para 2
Para composicao sequencial V ; F temos

1: faca V va para 2 2: faca F va para 3

Equivalencia de Programas e Maquinas Equivalencia de Programas

EFP: Iterativo Monoltico (3)


Para composicao condicional (se T entao V senao F) temos

1: se T entao va para 2 senao va para 3 2: faca V va para 4 3: faca F va para 4


Para composicao enquanto (enquanto T faca (F)) temos

1: se T entao va para 2 senao va para 3 2: faca F va para 1


Para composicao ate (ate T faca (F)) temos

1: se T entao va para 3 senao va para 2 2: faca F va para 1

Equivalencia de Programas e Maquinas Equivalencia de Programas

EFP: Monoltico Recursivo (1)

Para qualquer programa monoltico P, existe um recursivo Q, onde

PQ
Sejam P e Q, programas monoltico e recursivo, respectivamente, tal

que P possui um conjunto de rotulos L = {r1 , r2 , . . . , rn }


Supondo que rn e o unico rotulo nal do programa monoltico P, entao

Q e um programa recursivo construdo a partir de P

Equivalencia de Programas e Maquinas Equivalencia de Programas

EFP: Monoltico Recursivo (2)


Q e R1 onde R1 def E1 , R2 def E2 ,

. . ., 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 )

Equivalencia de Programas e Maquinas Equivalencia de Programas

EFP: Iterativo Recursivo

Trivial por transitividade Mas como exerccio e interessante para xar

Equivalencia de Programas e Maquinas Equivalencia de Programas

EFP: Recursivo

Monoltico

Provando por absurdo

Tomando o programa que duplica para a maquina de um registrador (< Rec duplica, M1R >) a funcao computada e dada para qualquer n tal que,

< Rec duplica, M1R > (n) = 2n


Suponha, agora, que exista um programa monoltico P que computa a mesma funcao,

< Rec duplica, M1R >=< P , M1R >

Equivalencia de Programas e Maquinas Equivalencia de Programas

Continuando a prova (1)

Se P for constitudo de k operacoes ad, onde n k , entao para

< P , M1R > (n) = 2n e preciso que P execute n vezes a operacao de ad

Como n k , pelo menos uma das operacoes de ad sera executada

mais de uma vez (existe um ciclo em P)

Como as operacoes das funcoes computadas, pelos dois programas

fortemente equivalentes, precisam ser executadas na mesma ordem, P e Rec duplica nao sao Programas Fortemente Equivalentes

Equivalencia de Programas e Maquinas Equivalencia de Programas

Continuando a prova (2)

Alem disso, com apenas um registrador nao e possvel fazer o controle

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

para n, o que e absurdo pois foi suposto que eram equivalentes


Assim, nao ha programa monoltico equivalente ao programa recursivo

Rec duplica

Equivalencia de Programas e Maquinas Equivalencia de Programas

Constatacao

Para um programa monoltico simular um recursivo sem saber o

numero nito e determinado de vezes que a recursao pode ocorrer, seria preciso prever innitas possibilidades das operacoes e testes dessas recursoes

Equivalencia de Programas e Maquinas Equivalencia de Programas

EFP: Monoltico

Iterativo

Provando por absurdo

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)

Equivalencia de Programas e Maquinas Equivalencia de Programas

Programa Par monoltico


inicio

ad

zero

sub

zero

sub

parada

Equivalencia de Programas e Maquinas Equivalencia de Programas

A prova por absurdo (1)

Suponha, agora, que exista um programa iterativo P que computa a

mesma funcao

< Par , M1R >=< P , M1R >


Se P for constitudo de k operacoes sub, onde n k , entao P deve

executar n vezes a operacao de sub

Como n k , pelo menos uma das operacoes sub, sera executada

mais de uma vez (existe um ciclo iterativo em P) ate aqui tudo bem

Equivalencia de Programas e Maquinas Equivalencia de Programas

A prova por absurdo (2)

Porem, o ciclo ira terminar, para um determinado valor de n, sempre no

mesmo caso, dando zero ou um (par ou mpar)


Por isso, nao ira retornar o resultado se o valor e par ou mpar, o que e

absurdo conforme proposto


Assim, nao ha programa iterativo equivalente ao programa monoltico

Par

Equivalencia de Programas e Maquinas Equivalencia de Programas

Poder computacional
Pergunta: Qual classe de programa tem maior poder computacional?

Com relacao a poder computacional, para a equivalencia forte de

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

programa e qualquer maquina


Quando forem analisados programas distintos para maquinas distintas

nao ha, necessariamente, uma relacao entre as operacoes e testes, e a ordem de execucao

Equivalencia de Programas e Maquinas Equivalencia de Programas

Equivalencia de Programas

Equivalencia de programas e dada por

P M Q , onde o programa P e equivalente ao programa Q sobre a maquina M


Suas respectivas funcoes computadas sao iguais, ou seja,

< P , M >=< Q , M >


Sao os chamados Programas Equivalentes na Maquina M ou

Programas M-Equivalentes

Equivalencia de Programas e Maquinas Equivalencia de Maquinas

Equivalencia de Maquinas

Duas maquinas sao equivalentes se uma pode simular a outra

Equivalencia de Programas e Maquinas Equivalencia de Maquinas

Simulacao forte 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

Equivalencia de Programas e Maquinas Equivalencia de Maquinas

Simulacao de maquinas (e mais abrangente)

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

Equivalencia de Programas e Maquinas Equivalencia de Maquinas

Conclusao sobre Equivalencia de Maquinas

Logo, duas maquinas, M1 e M2 , sao equivalentes se, e somente se,

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 Forte de Programas

Vericacao de Equivalencia

Vericacao de Equivalencia Forte de Programas

Nao existe algoritmo para vericar se dois programas recursivos sao

fortemente equivalentes
Existe um algoritmo para decidir se dois programas monolticos sao

fortemente equivalentes
Como todo programa iterativo pode ser transformado num monoltico,

para tal tambem temos um algoritmo

Vericacao de Equivalencia

Conceitos para se determinar equivalencia forte

1. Maquina de Traco: Gera um traco (uxograma) da execucao das operacoes do programa

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

Usando uma maquina de traco, um dado uxograma pode ser

transformado num programa de instrucoes rotuladas compostas


Por sua vez, as instrucoes rotuladas compostas induzem a nocao de

rotulos equivalentes fortemente, o que permite vericar se dois programas sao equivalentes fortemente

Vericacao de Equivalencia

Denicao da Maquina de Traco

= (Op , Op , Op , idOp , idOp , F , T ), onde

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

Funcao induzida por Maquina de traco

Seja M uma maquina com Op Seja w

= {F , G, H , . . .} operacoes interpretadas

= FG . . . H um traco de M

A funcao induzida pelo traco w em M e dada por

[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

Instrucoes Rotuladas Compostas (IRC)

Sao usadas na vericacao de equivalencia forte de programas

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

Transformando Fluxograma em IRC (1)

Como obter Instrucoes Rotuladas Compostas

Teste: r1 : (F , r2 ), (G, r3 ) Operacao: r1 : (F , r2 ), (F , r2 ) Parada: rf : (parada, ), (parada, )

Vericacao de Equivalencia

Transformando Fluxograma em IRC (2)

Com testes encadeados

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

Fluxograma Rotuladas Compostas

Equivalencia Forte

P e um uxograma e P e um programa monoltico em Instrucoes Rotuladas Compostas equivalente

< P , M > () =< P , M > ()

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

Equivalencia Forte de Programas Monolticos (1)

Propriedade: Uniao Disjunta

Dados A = {a, x } e B = {b, x } a uniao disjunta de A e B e {aA , xA , bB , xB }, ou de forma simplicada:

{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

Equivalencia Forte de Programas Monolticos (2)

Por isso, e suciente mostrar que Pq e Pr sao equivalentes fortemente

para provar que Q e R tambem sao fortemente equivalentes


Para isso ainda precisamos considerar

cadeia de conjunto simplicacao de programas monolticos rotulos equivalentes fortemente

Vericacao de Equivalencia

Equivalencia Forte de Programas Monolticos (3)

Propriedade: Cadeia de Conjuntos


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

Equivalencia Forte de Programas Monolticos (4)

Propriedade: Identicacao de ciclos innitos Com A0

Assim, A0 , A1 , . . . e uma cadeia nita, e (I , r ) (I , ) se, e somente se,

= {}, temos que Ak +1 = Ak {r | r e rotulo de instrucao antecessora de alguma instrucao rotulado por Ak } r lim Ak /

Vericacao de Equivalencia

Programa em IRC: Exemplo

1: (G,2),(F,3) 2: (G,2),(F,3) 3: (F,4),(G,5) 4: (F,4),(G,5) 5: (F,6),(ciclo,) 6: (parada,),(G,7) 7: (G,7),(G,7) : (ciclo,,(ciclo,)

Vericacao de Equivalencia

Cadeia nita de conjuntos

A0 A1 A2 A3 A4 A5

= {} = {6, } = {5, 6, } = {3, 4, 5, 6, } = {1, 2, 3, 4, 5, 6, } = {1, 2, 3, 4, 5, 6, }

lim Ak = {1, 2, 3, 4, 5, 6, }

(I , 7) (I , ), pois 7 lim Ak /

Vericacao de Equivalencia

Algoritmo de simplicacao de ciclos innitos

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

1: (G,2),(F,3) 2: (G,2),(F,3) 3: (F,4),(G,5) 4: (F,4),(G,5) 5: (F,6),(ciclo,) 6: (parada,),(ciclo,) : (ciclo,,(ciclo,)

Vericacao de Equivalencia

Equivalencia Forte de Programas Monolticos (5)

Propriedade: Rotulos Consistentes

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

Equivalencia Forte de Programas Monolticos (6)

Propriedade: Rotulos Equivalentes Fortemente

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

Equivalencia Forte de Programas Monolticos (7)

Propriedade: Determinacao dos Rotulos

1. B0 = {(r , s)} 2. Bk +1 = {(r , s )| r e s sao rotulos sucessores de r e s, respectivamente, (r , s ) Bk e (r , s ) Bi , i {0, 1, . . . , k }} /


Logo, a sequencia tende ao conjunto vazio, e r , s sao rotulos equivalente fortemente se, e somente se, qualquer par

de Bk e constitudo por rotulos consistentes

Vericacao de Equivalencia

Algoritmo de Equivalencia Forte de Programas Monolticos


1. Achar os programas Pq e Pr , simplicados, onde ocorre no maximo uma vez em I; 2. Se q e r sao fortemente equivalentes, entao B0 = {(q , r )}, senao Q e sao Fortemente Equivalentes e o algoritmo termina; R nao 3. Bk +1 , contendo (q , r ) sucessores de cada (q , r ) Bk , e:

3.1 q = r = 3.2 os sucessores (q , r ) nao sao elementos de B0 , B1 , . . . , Bk

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

Exemplo de aplicacao (1)


A uniao disjunta de dois programas, I, e denida como: 1: (G,2),(F,3) 2: (G,2),(F,3) 3: (F,4),(G,5) 4: (F,4),(G,5) 5: (F,6),(ciclo,) 6: (parada,),(ciclo,) 8: (G,9),(F,10) 9: (G,9),(F,10) 10:(F,10),(G,11) 11:(F,12),(ciclo,) 12: (parada,),(ciclo,) : (ciclo,,(ciclo,)

Vericacao de Equivalencia

Exemplo de aplicacao (2)


Para vericar se os programas sao fortemente equivalentes, basta

vericar se (I , 1) (I , 8)
Usando o passo 2 do algoritmo, se 1 e 8 sao rotulos fortemente

equivalentes, entao temos B0 = {(1, 8)}


No passo 3, temos:

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

Assim, (I , 1) (I , 8) Entao os programas sao fortemente equivalentes

S-ar putea să vă placă și