Complementos de Engenharia de Software 2005/06

Slides:



Advertisements
Apresentações semelhantes
Decidibilidade e Indecidibilidade
Advertisements

Exemplo.
Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Máquina de.
Problema da Aceitação ATM
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Erick Vagner Cabral Igor Lucena Vitor Baptista
Informática Teórica Engenharia da Computação
Complexidade computacional
Máquina de Turing Universal
Redução.
Decidibilidade, Corretude, Completude, Consistência
Computabilidade e Linguagens Formais
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação. REDUTIBILIDADE Uma redução é uma maneira de converter um problema em outro Uma redução é uma maneira de.
Universidade Federal de Campina Grande – UFCG Centro de Ciências e Tecnologias – CCT Unidade Acadêmica de Engenharia Química - UAEQ Universidade Federal.
POLINÔMIOS – Parte 2. Dispositivo de Briot-Ruffini Exemplo Veja, passo a passo, a utilização do dispositivo de Briot-Ruffini para determinar o quociente.
 Princípio de leitura ( Sistema Inglês ) Leitura de polegada fracionária. No sistema inglês, a escala fixa do paquímetro é graduada em polegada e frações.
Aula 3 - Estruturas de Repetição
Geometria Aula 3, ciclo 1.
PROFESSOR: ALEXSANDRO DE sOUSA
Complementos de Engenharia de Software 2005/06
Barão de Cocais, 26 de Fevereiro de 2016 – Pólo: Barão de Cocais
INSTITUTO FEDERAL DO CEARÁ Mauro Oliveira
Contagem Aula 2, ciclo 1.
Áreas e perímetros de polígonos
Divisão Euclidiana Aula 1, ciclo 4.
Critérios de divisibilidade
Critérios de divisibilidade
Fundamentos de Aritmética
POTÊNCIAS DE EXPOENTE NATURAL
FUNÇÃO DO 2º GRAU OU FUNÇÃO QUADRÁTICA.
Exercícios.
TQS - Teste e Qualidade de Software (Software Testing and Quality) Análise de cobertura de testes com a ferramenta Coverlipse.
Metodologia do Ensino da Matemática – Aula 14
Números racionais 2,34.
Estruturas de Repetição
Estruturas de Repetição
M.d.c. algoritimo de Euclides
Diagrama de Atividade Prof. Thales Castro.
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
FUNDAMENTOS DE PROGRAMAÇÃO
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
Contagem Aula 2, ciclo 1.
PARIDADE Par ou ímpar?.
FEUP/LEEC Algoritmos e Estruturas de Dados 2001/2002
Existe um número natural que não é par nem ímpar?
Introdução instrumental às Linguagens Formais
Algoritmos e Fluxogramas
TQS - Teste e Qualidade de Software (Software Testing and Quality) Discussão de Exercícios de Análise de Cobertura de Código.
LIMITE DE UMA FUNÇÃO Aula 01 – Matemática I – Engenharia de Aquicultura Prof. Danilene Donin Berticelli.
Simplificação ou redução de frações
Degenerescência, ciclagem e eficiência do Simplex
Múltiplos e Divisores.
Algoritmos e Programação I
Zeros de funções.
Representação da Informação
Professor : Neilton Satel
Grafos eulerianos 1.
Múltiplos e Divisores Disciplina: Matemática TABUADA.
Divisibilidade.
Divisibilidade Múltiplos e Divisores
Professora Roberta Bonamichi Guidi Garcia
Múltiplos e divisores.
É COMO UMA MÁQUINA ONDE ENTRAM
Representação de Algoritmos
Limites.
Divisibilidade Divisores e Múltiplos Profº: Rafael Chaves.
Razões e proporções Professor João Gilberto. Razões e proporções 1) O conceito de razão A razão entre dois números a e b é o quociente entre eles, o seja,
Limite no ponto e limites laterais
Transcrição da apresentação:

Complementos de Engenharia de Software 2005/06 Introdução à Teoria da Computação: Decidibilidade João Pascoal Faria (jpf@fe.up.pt, www.fe.up.pt/~jpf) (Com base em notas de Gabriel David e Cristina Ribeiro)

Problemas de computação e de decisão Problema de computação: calcular saída (resposta) em função de entrada Exemplo (resto da divisão inteira): achar o resto da divisão inteira de dois números Entrada: dois números inteiros Saída (resposta): o resto da divisão inteira do 1º pelo 2º Pode-se formular como problema de tradução de linguagens Problema de decisão: problema de computação com resposta “sim” ou “não” Exemplo (divisibilidade): determinar se um número inteiro é divisível por outro Resposta: sim (o 1º é divisível pelo 2º) ou não (o 1º não é divisível pelo 2º) Pode-se formular como problema de aceitação de linguagem Problemas de decisão podem-se reduzir a problemas de computação e vice-versa Problema de decisão  problema de computação Para determinar se n é divisível por m, calcula-se o resto da divisão inteiro do n pelo m. Se este resto for 0, a resposta é “sim”, caso contrário a resposta é “não”. Problema de computação  problema de decisão Para achar o resto da divisão inteira de n por m, verifica-se se n+m-r é divisível por m, para r=0, 1, …, m-1. O valor de r em que a resposta é “sim” é o resto procurado.

Computabilidade e decidibilidade Problema solúvel: existe um algoritmo (isto é, uma máquina de Turing) que dá a resposta em tempo finito Sem entrar em ciclo infinito! Se for um problema de computação, diz-se computável O resto da divisão inteira é computável Se for um problema de decisão, diz-se decidível A divisibilidade é decidível Existem problemas insolúveis, como veremos a seguir! Caso paradigmático – problema da terminação

Problema da Terminação Problema da terminação genérico: Existe algum algoritmo A capaz de decidir em tempo finito, para qualquer programa P e entrada E, se o programa P termina (não entra em ciclo infinito) quando executado com entrada E? Não chega executar o programa P com entrada E e ver o que acontece, pois, se o programa P não terminar ao fim de um certo tempo (por maior que seja esse tempo), não sabemos se vai algumas vez terminar ou não Problema da terminação para máquinas de Turing: Dada uma máquina de Turing arbitrária T e uma cadeia de entrada arbitrária w sobre o alfabeto {a, b} (ou, equivalentemente, sobre o alfabeto {0, 1}), existe algum algoritmo capaz de decidir se T termina (não entra em ciclo infinito) quando executado com entrada w? Problema indecidível! Prova por contradição (redução ao absurdo)!

Prova por contradição (1) Suponhamos que existe o algoritmo/programa A Sim (se P for executado com entrada E, termina) programa P A entrada E Não (se P for executado com entrada E, não termina) (A termina em tempo finito)

Prova por contradição (2) Se A existe, podemos definir o algoritmo/programa B da seguinte forma: B Sim (se P for executado com entrada E, termina) programa P programa P A ciclo infinito entrada E Não (se P for executado com entrada E, não termina) Não (se P for executado tendo como entrada o seu próprio código, não termina) (A termina em tempo finito) Comportamento de B tendo como entrada o código do programa P: - Se o programa P termina quando executado tendo como entrada o próprio código do programa P, então B não termina. - Caso contrário, B termina e imprime “não”.

Prova por contradição (3) Correndo agora B tendo como entrada o próprio B: B Sim (se P for executado com entrada E, termina) B programa P A ciclo infinito entrada E Não (se P for executado com entrada E, não termina) Não (A termina em tempo finito) Comportamento de B tendo como entrada o código do programa B: - Se o programa B termina quando executado tendo como entrada o próprio código do programa B, então B não termina (quando executado tendo como entrada o código do programa B). - Caso contrário, B termina e imprime “não”. Contradição!

Prova por contradição (4) Portanto, não pode existir o programa/algoritmo B! Se A existe, então B existe. Como B não existe, então A não existe! Logo o problema da terminação não é decidível!