Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS

Slides:



Advertisements
Apresentações semelhantes
Decidibilidade e Indecidibilidade
Advertisements

Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Algoritmo e Programação
Programação em Java Prof. Maurício Braga
Motivação para listas duplamente encadeadas e circulares
Fluxo em Redes Prof. Ricardo R. Santos.
Marco Antonio Montebello Júnior
Variantes de Máquina de Turing
Linguagem Fabrício Dias
REVISÃO– FUNÇÕES Fabrício Dias
Exemplo.
Teoria da Computação MÁQUINA DE TURING (Continuação) Fabrício Dias
REVISÃO– CONJUNTOS E FUNÇÕES Fabrício Dias
Teoria da Computação EQUIVALÊNCIA DE PROGRAMAS E MÁQUINA Fabrício Dias
MÁQUINAS UNIVERSAIS Fabrício Dias
Exercícios PAA- Grafos
Exercícios PAA- Grafos
Celso C. Ribeiro Caroline T. Rocha
Estrutura Condicional
Prof. Yandre Maldonado e Gomes da Costa
Teoria da Computação FIC– Ciência da Computação
1 Domínios Finitos A eficiência das programas em domínios finitos (incluindo booleanos) podem ainda ser melhoradas pelo uso de Algoritmos de Propagação.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
SISTEMAS DE EQUAÇÕES.
Modelos no Domínio do Tempo de Sistemas LTI Contínuos
Resolução.
Árvore Binária de Busca
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Árvores.
Arquivos Seqüenciais Inhaúma Neves Ferraz
EXPRESSÕES ARITMÉTICAS
autômatos finitos com transições e
Introdução à Lógica de Programação (cont.)
Prof. Luiz A M Palazzo Pelotas, fevereiro de 2011
DEDUÇÃO NO CÁLCULO PROPOSICIONAL
Conceitos Básicos.
PRC Bruno Correa.
Campus de Caraguatatuba
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Semana 03: Comandos de desvio de fluxo. Expressões lógicas.
Algoritmos em Grafos.
PROGRAMAÇÃO I UNIDADE 1.
TEORIA AXIOMÁTICA DOS CONJUNTOS
Fundamentos de Engenharia de SW
Exercícios PAA- Grafos
Resolução de problemas por meio de busca
Salas de Matemática.
Algorítmos e estrutura de dados III
Operações com grafos União Exemplo
Semana 03 Comandos de desvio de fluxo. Expressões lógicas.
Ling. Formais e Autômatos AFN-ε
Introdução e Busca Cega
Teoria da Computação Aula 1 Prof. Fabiano Sabha.
Teoria da Computação Aula 5 Prof. Fabiano Sabha.
Teoria da Computação Aula 3 Prof. Fabiano Sabha.
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Campus de Caraguatatuba Aula 12: Sistemas de Equações Lineares (2)
Técnicas e Projeto de Sistemas
Aula 6 - Estruturas de Controle
1 A COMPUTAÇÃO MODERNA Valdemar W. Setzer Depto. de Ciência da Computação da USP
Estrutura de Decisão Multipla
Campus de Caraguatatuba Aula 2: Somatório e Produtório
Máquina de Turing Universal
Introdução a Algoritmos
Campus de Caraguatatuba Aula 9: Noções Básicas sobre Erros (3)
LFA: Unidade 03 – Parte B Engenharia/Ciência da Computação
Faculdade Pernambucana - FAPE Setembro/2007
Engenharia/Ciência da Computação
Algoritmo e Estrutura de Dados I Introdução ao conceito de algoritmo Márcia Marra
Transcrição da apresentação:

Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br

Agenda Instruções rotuladas compostas Definições Operações Exemplo

Instruções rotuladas compostas Possuem apenas um formato, diferente das instruções rotuladas, que podem ter dois formatos: operação e teste.

Instruções rotuladas compostas Definição: Uma instrução rotulada composta, é uma seqüencia de símbolos da forma: (Suponha F e G identificadores de operação e T identificador de teste) r1 : Se T então faça F vá_para r2 senão faça G vá_para r3 r2 e r3 são ditos rótulos sucessores de r1; r1 é dito rótulo antecessor de r2 e r3.

Instruções rotuladas compostas Instrução rotulada Operação r1: faça F vá_para r2 Teste r1: se T então vá_para r2 senão vá_para r3 Instrução rotulada composta r1: se T então faça F vá_para r2 senão faça G vá_para r3

Instruções rotuladas compostas Definição: Um Programa Monolítico com Instruções Rotuladas Compostas P é um par ordenado P = (I, r) no qual: I = Conjunto das instruções Rotuladas Compostas, o qual é finito; R = Rótulo inicial o qual distingue a instrução rotulada inicial em I.

Instruções rotuladas compostas Observações: Não existem duas instruções diferentes com um mesmo rótulo; Rótulo Final é um rótulo referenciado por alguma instrução o qual não é associado a qualquer instrução rotulada.

Instruções rotuladas compostas Definição: Considerando-se um único identificador de teste, uma instrução rotulada composta da forma: r1: se T então faça F vá_para r2 senão faça G vá_para r3 Pode ser abreviada para: r1: (F, r2) , (G, r3) T = verdade T = falso

Instruções rotuladas compostas Algoritmo: Fluxograma → Rotuladas Compostas Os componentes elementares de partida, parada e operação de um fluxograma são denominados de Nó.

Instruções rotuladas compostas Algoritmo: Fluxograma → Rotuladas Compostas Algoritmo para traduzir um fluxograma P para um programa monolítico P' constituído por instruções rotuladas compostas: Rotulação de nós Instruções rotuladas compostas

Instruções rotuladas compostas Rotulação de Nó Rotula-se cada nó do fluxograma Suponha que exista um único componente elementar de parada, associado ao identificador ν (palavra vazia) O rótulo correspondente ao nó partida é o Rótulo Inicial do programa P’.

Instruções rotuladas compostas A construção de uma instrução rotulada composta parte do nó partida e segue o caminho do fluxograma Teste Operação Parada Testes encadeados Testes encadeados em ciclos infinitos.

Instruções rotuladas compostas Teste: Para um teste, a correspondente instrução rotulada composta é: r1: (F, r2), (G, r3)

Instruções rotuladas compostas Operação: Para uma operação, a correspondente instrução rotulada composta é: r1: (F, r2), (F, r2)

Instruções rotuladas compostas Parada: Para uma parada, a correspondente instrução rotulada composta é: r: (parada,  ), (parada,  )

Instruções rotuladas compostas Testes encadeados: No caso de testes encadeados, segue-se o fluxo até que seja encontrado um nó, resultando na seguinte instrução rotulada composta: r1: (F, r2), (G, r3)

Instruções rotuladas compostas Teste encadeados em ciclos infinitos: Para um ciclo infinito determinado por testes encadeados, a correspondente instrução rotulada composta é: r1: (F, r2), (ciclo, ω) Neste caso, deve ser incluída, adicionalmente, uma instrução rotulada composta correspondente ao ciclo infinito: ω: (ciclo, ω), (ciclo, ω)

Instruções rotuladas compostas Testes encadeados em ciclo infinito: r1: (F, r2), (ciclo, ω)

Instruções rotuladas compostas Exemplo: Considere o programa monolítico especificado na forma de fluxograma cujos nós já estão rotulados. Definir o correspondente programa com instruções rotuladas compostas.

Teste

Teste

Teste

Teste

Testes Encadeados em Ciclo Infinito.

Teste Parada

Operação

Instruções rotuladas compostas Observações: O rótulo 2, 4, 7 e ω são sucessores deles mesmos Existem dois caminhos no fluxograma que atingem o nó parada. Entretanto, somente um é representado no conjunto de instruções rotuladas compostas. O segundo caminho é impossível Na instrução rotulada por 7, ocorre um clico infinito.

Equivalência forte de programas monolíticos Equivalência forte: União disjunta A união disjunta de conjuntos garante que todos os elementos dos conjuntos componentes constituem o conjunto resultante, mesmo que possuam a mesma identificação.

Equivalência forte de programas monolíticos Equivalência Forte: União disjunta Dados os conjuntos: A = {a, x} e B = {b, x}. O conjunto resultante da união disjunta é: {a, xA, b, xB}

Equivalência forte de programas monolíticos Equivalência forte: união disjunta Sejam: Q = (IQ, q) e R = (IR, r) dois programa monolíticos especificados usando instruções rotuladas compostas ; IQ – instruções rotuladas compostas de Q IR – instruções rotuladas compostas de R Pq = (I, q) e Pr = (I, r) programas monolíticos onde I é o conjunto resultante da união disjunta de IQ e IR. Então: Pq ≡ PR se, e somente se, Q ≡ R

Equivalência forte de programas monolíticos Definições Cadeia de conjuntos Cadeia finita de conjuntos Limite de cadeia finita de conjuntos

Definições Uma seqüência de conjuntos A0A1... é dita: uma Cadeia de Conjuntos se, para qualquer k ≥ 0: Ak  Ak+1 uma Cadeia Finita de Conjuntos é uma cadeia de conjuntos onde existe n, para todo k ≥ 0, tal que: An = An+k o Limite da Cadeia Finita de Conjuntos é: lim Ak = An

Identificação de símbolos infinitos Partir da instrução de parada, rotulada por , determinando os seus antecessores Por exclusão, uma instrução que não é antecessor da parada determina um ciclo infinito.

Algoritmo para identificação de ciclos infinitos Seja I um conjunto de n instruções rotuladas compostas; Seja A0A1... uma seqüência de conjuntos de rótulos indutivamente definida como segue: A0 = {  }

Algoritmo para identificação de ciclos infinitos Ak+1 = Ak  {r | r é rótulo de instrução antecessora de alguma instrução rotulada por Ak} Então A0A1... é uma cadeia finita de conjuntos, e, para qualquer rótulo r de instrução de I, tem-se que (I, r) ≡ (I, ω) se e somente se r  lim Ak

Algoritmo para identificação de ciclos infinitos Considere o conjunto I de instruções rotuladas compostas abaixo:

Algoritmo para identificação de ciclos infinitos A correspondente cadeia finita de conjuntos é como se segue: A0 = {} A1 = {6, } A2 = {5, 6, } A3 = {3, 4, 5, 6, } A4 = {1, 2, 3, 4, 5, 6, } A5 = {1, 2, 3, 4, 5, 6, } Portanto: lim Ak = {1, 2, 3, 4, 5, 6, } ( IR , 7) = (I, ω), pois 7  lim Ak

Algoritmo de simplificação de de ciclos infinitos Seja I um conjunto finito de instruções rotulas compostas Determina-se a correspondente cadeia finita de conjuntos A0A1... Para qualquer rótulo r de instrução de I tal que r  lim Ak, tem-se que: a instrução rotulada por r é excluída; toda referência a pares da forma (F, r) em I é substituída por (ciclo, ω); I = I  {ω: (ciclo, ω), (ciclo,ω )}

Simplificação de ciclos infinitos Considere a correspondente cadeia finita de conjuntos: A0 = {} A1 = {6, } A2 = {5, 6, } A3 = {3, 4, 5, 6, } A4 = {1, 2, 3, 4, 5, 6, } A5 = {1, 2, 3, 4, 5, 6, } Portanto: lim Ak = {1, 2, 3, 4, 5, 6, } ( IR , 7) = (I, ω), pois 7  lim Ak

Simplificação de ciclos infinitos Portanto, pode-se simplificar um conjunto de instruções rotuladas compostas eliminando qualquer instruções de r ≠ ω que determine um ciclo infinito. 1: (G,2), (F,3) 1: (G,2),(F,3) 2: (G,2), (F,3) 2: (G,2), (F,3) 3: (F,4), (G,5) 3: (F,4), (G,5) 4: (F,4), (G,5) 4: (F,4), (G,5) 5: (F,6), (ciclo, ω) 5: (F,6), (ciclo, ω) 6: (parada, ), (G,7) 6: (parada, ), (ciclo, ω) 7: (G,7),(G,7) ω: (ciclo,ω),(ciclo,ω) ω: (ciclo, ω), (ciclo, ω)

Equivalência Forte de Programas Monolíticos Rótulos consistentes Seja I um conjunto finito de instruções rotuladas compostas e simplificadas Sejam r e s dois rótulos de instruções de I, ambos diferentes de .

Rótulos consistentes Então: r e s são consistentes se e somente se: Suponha que as instruções rotuladas por r e s são da seguinte forma, respectivamente: r: (F1, r1), (F2, r2) s: (G1, s1), (G2, s2) Então: r e s são consistentes se e somente se: F1 = G1 e F2 = G2

Rótulos equivalentes fortemente Seja I um conjunto finito de instruções rotuladas compostas e simplificadas Sejam r e s dois rótulos de instruções de I Então r e s são rótulos equivalentes fortemente se e somente se: Ou r= s=  ou r e s são ambos diferentes de  e consistentes, ou seja F1 = G1 e F2 = G2

Algoritmo para determinação de rótulos equivalentes fortemente Seja I um conjunto de n instruções compostas e simplificadas Sejam r e s dois rótulos de instruções de I Define-se, indutivamente, a seqüência de conjuntos B0B1... por: B0 = {(r, s)} Bk+1 = {(r", s") | r" e s" são rótulos sucessores de r’ e s’, respectivamente, (r’, s’)  Bk e (r", s")  Bi , i  (0, 1, ..., k)}

Algoritmo para determinação de rótulos equivalentes fortemente Então B0B1... é uma seqüência que converge para o conjunto vazio, e r, s são rótulos equivalentes fortemente se, e somente se, qualquer par de Bk é constituído por rótulos consistentes.

Algoritmo de verificação da equivalência forte de programas monolíticos Sejam Q = (IQ, q) e R = (IR, r) dois programas monolíticos especificados usando instruções rotuladas compostas e simplificados O Algoritmo de Verificação da Equivalência Forte de Programas Monolíticos Q e R é determinado pelos passos:

Algoritmo de verificação da equivalência forte de programas monolíticos Passo 1: Sejam Pq = (I, q) e Pr = (I, r) programas monolíticos onde I é o conjunto resultante da união disjunta de IQ e IR, excetuando-se a instrução rotulada , se existir, a qual ocorre, no máximo, uma vez em I; Passo 2: Se q e r são rótulos equivalentes fortemente, então B0={(q, r)}. Caso contrário, Q e R não são equivalentes fortemente, e o algoritmo termina.

Algoritmo de verificação da equivalência forte de programas monolíticos Passo 3: Para k ≥ 0, define-se o conjunto Bk+1, contendo somente os pares (q", r") de rótulos sucessores de cada (q', r') Bk, tais que: q' ≠ r'; q' e r' são ambos diferentes de ; os pares sucessores (q", r") não são elementos de B0, B1....BK.

Algoritmo de verificação da equivalência forte de programas monolíticos Passo 4: Dependendo de Bk+1, tem-se que: Bk+1 = { } : Q e R são equivalentes fortemente, e o algoritmo termina; ) Bk+1 ≠ { } : se todos os pares de rótulos de Bk+1 são equivalentes fortemente, então vá para o Passo 3; caso contrário, Q e R não são equivalentes fortemente, e o algoritmo termina.

Exemplo Considere os programas monolíticos Q e R especificados na forma de fluxogramas. Determine se Q e R são equivalentes fortemente.

Q 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, ω) Especificação do Programa P usando instruções rótuladas compostas.

R 8: (G,9),(F,10) 9: (G,9),(F,10) 10: (F,10),(G,11) 11: (F,12),(F,13) 12: (parada, ), (F,13) 13: (F,13),(F,13)

Equivalência Forte de Programas Monolíticos A especificação do programa R usando instruções rotuladas compostas, tem-se: Conjunto de instruções rotuladas compostas Identificação de ciclos infinitos

Equivalência Forte de Programas Monolíticos Identificação de ciclos infinitos: 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

Equivalência Forte de Programas Monolíticos A especificação do programa R usando instruções rotuladas compostas, tem-se: Conjunto de instruções rotuladas compostas Identificação de ciclos infinitos Simplificação de ciclos infinitos

Equivalência Forte de Programas Monolíticos Simplificação de ciclos infinitos: 8: (G,9),(F,10) 9: (G,9),(F,10) 10: (F,10),(G,11) 11: (F,12),(ciclo, ω ) 12: (parada, ),(ciclo, ω ) ω: (ciclo, ω ), (ciclo, ω ) 8: (G,9),(F,10) 9: (G,9),(F,10) 10: (F,10),(G,11) 11: (F,12),(F,13) 12: (parada, ), (F,13) 13: (F,13),(F,13) Não simplificado!

Equivalência Forte de Programas Monolíticos Relativamente à aplicação do algoritmo, tem-se que: Passo 1: seja a união disjunta dos conjuntos IQ e IR, executando-se a instrução rotulada ω, como segue:

Equivalência Forte de Programas Monolíticos Passo 1: 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, ω )

Equivalência Forte de Programas Monolíticos Relativamente à aplicação do algoritmo, tem-se que: Para verificar se Q ≡ R é suficiente verificar se (I,1) ≡ (I,8).

Equivalência Forte de Programas Monolíticos Relativamente à aplicação do algoritmo, tem-se que: Passo 2: como 1 e 8 são rótulos equivalentes fortemente, então: B0 = {(1, 8)}

Equivalência Forte de Programas Monolíticos Relativamente à aplicação do algoritmo, tem-se que: Passo 3 e 4: para k ≥ 0, construção de Bk+1 é como se segue: B1 = {(2, 9), (3, 10)} pares de rótulos equivalentes fortemente B2 = {(4, 10), (5, 11)} pares de rótulos equivalentes fortemente B3 = {(6, 12), (ω, ω)} pares de rótulos equivalentes fortemente B4 = {(, )} pares de rótulos equivalentes fortemente B5 = Ø

Equivalência Forte de Programas Monolíticos Relativamente à aplicação do algoritmo, tem-se que: Logo (I,1) ≡ (I,8) e, portanto Q ≡ R.

Dúvidas????