Análise e Projeto de Algoritmos

Documentos relacionados
Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente

Marcos Castilho. DInf/UFPR. 16 de maio de 2019

GBC015: INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Teoria de Algoritmos: Computabilidade e Máquina de Turing

Variantes de Máquinas de Turing

Linguagens Formais e Autômatos. Autômatos Finitos Determinísticos (AFD)

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Teoria da Computação. Máquinas Universais Máquina de Turing

Universidade Federal de Alfenas

Aula 10: Decidibilidade

Modelos Universais de Computação

Máquinas de Turing - Computabilidade

Teoria da Computação. Máquinas de Turing: variações

Autómatos determísticos de k-pilhas

Laboratório 3 Comandos de repetição while, do-while e for

Apostila 06. Objetivos: Estudar a Computabilidade Estudar a Decidibilidade Estudar a Redutibilidade

PCC104 - Projeto e Análise de Algoritmos

Teoria da Computação. Computabilidade e complexidade computacional

Programação de Computadores

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

Computabilidade e Complexidade (ENG10014)

Universidade Federal de Alfenas

Aula 10: Decidibilidade

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)

Linguagens recursivamente enumeráveis

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Computabilidade e Complexidade (ENG10014)

1. Uma linguagem de uma máquina de Turing

Máquinas de Turing 3

Introdução Maquinas de Turing universais O problema da parada. Indecidibilidade. Rodrigo Gabriel Ferreira Soares DEINFO - UFRPE.

Redutibilidade. Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02)

Teoria da Computação. Computabilidade

ECO026 TEORIA DA COMPUTAÇÃO. Prof: Rafael Santos Site:

Linguagens Formais e Autômatos Decidibilidade

PCS3616. Programação de Sistemas (Sistemas de Programação) Máquinas de Turing

Computação 1 - Python Aula 9 - Teórica: Interferindo no fluxo de repetição: Break e Continue Laços Aninhados

Turing e Complexidade

Linguagens Formais e Autômatos P. Blauth Menezes

Teoria da Computação

Laços de repetição for, while, do-while

Computação efectiva. Que linguagens podem ser reconhecidas por algum tipo de autómato?

Teoria dos Grafos Aula 21

Universidade Federal de Alfenas

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

Teoria da Computação. Computabilidade e complexidade computacional

Apostila 05 Assunto: Linguagens dos tipos 0 e 1

Draft-v0.1. Máquinas de Turing Máquinas de Turing

Teoria da Computação 19 de Abril de 2017 Teste 1A Duração: 1h30

Juliana Kaizer Vizzotto. Universidade Federal de Santa Maria. Disciplina de Teoria da Computação

Capítulo 2: Procedimentos e algoritmos

Turing to Norma, uma ferramenta para auxiliar o estudo da equivalência entre Máquina de Turing e Máquina Norma

Máquinas Universais. Máquina de Turing. Celso Olivete Júnior.

Linguaguens recursivamente enumeráveis

Capítulo 8: O problema da parada. Decidibilidade e computabilidade. José Lucas Rangel Introdução.

A Teoria Matemática que serviu como Base para Turing.

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

Aula 9: Máquinas de Turing

Estruturas de Repetição

Computação. Sob uma perspectiva teórica. Elloá B. Guedes. IQuanta. 22 de setembro de 2008

MC-102 Aula 08 Comandos Repetitivos

INTRODUÇÃO. Prof. Msc. Luis Filipe Alves Pereira 2015

Complexidade computacional

Compiladores - Autômatos

Faculdade de Computação

Problemas Algoritmicos

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO II Campus Rio Pomba

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Máquinas de Turing para construção: Foram encontrados dois modelos que se destacaram em nossas pesquisas.

Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios

S. C. Coutinho. Máquina de Turing Universal p. 1/22

Universidade Federal de Uberlândia Mestrado em Ciência da Computação

Teoria da Computação 27 de Maio de 2015 Teste 2A Duração: 1h30

Máquina de Turing. Controle finito

Recursividade. Objetivos do módulo. O que é recursividade

MT como calculadoras de funções parciais

A resposta apresentada em aula, no quadro, (em Chapin e/ou Português Estruturado) está correta?

SIMULAÇÃO DE MÁQUINA DE REGISTRADORES COM MÁQUINA DE TURING MULTIFITA

Linguaguens recursivamente enumeráveis e recursivas

Paradigmas de Programação

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.

Decidibilidade. Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02)

ACH5531 Introdução à Computação Estruturas de repetição

Teoria dos Grafos Aula 16

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Variações de Máquinas de Turing

CIRCUITOS SEQUENCIAIS. Adão de Melo Neto

Nelma Moreira. Departamento de Ciência de Computadores da FCUP. Aula 2. Nelma Moreira (DCC-FC) Fundamentos de Linguagens de Programação Aula 2 2 / 12

Computação 1 - Python Aula 8 - Teórica: Estrutura de Repetição : for 1/ 10

Máquinas Universais. Departamento de Ciência de Computadores da FCUP MC Aula 23 1

Aulas Anteriores. Detalhes da linguagem de programação

Linguagens Formais e Autômatos (LFA)

Teoria da Computação. Expressões Regulares e Autômatos Finitos. Thiago Alves

Estruturas de Repetição

Máquina de Turing. Controle finito

Reconhecimento de Padrões. Prof. Flávio Humberto Cabral Nunes

LINGUAGENS FORMAIS E AUTÔMATOS

Capítulo A máquina de Turing (TM) padrão Combinações de máquinas de Turing A Tese de Turing. ADC/TC/Cap.9/ /LEI/DEIFCTUC 375

Transcrição:

Análise e Projeto de Algoritmos 2018.2

Modelo de Computação Determinação de como os cálculos são realizados pelo computador e que funcionalidades ele possui.

Máquina de Turing É um modelo de computação definido por Alan Turing antes da construção do primeiro computador. Fita: é dividida em células e cada uma possui um valor Cabeçote: le e escreve na fita Registradores: armazena o estado atual da máquina Ações: leva de um estado a outro

Máquina de Turing É um modelo de computação definido por Alan Turing antes da construção do primeiro computador. Dada uma certa entrada, ela realiza uma série de passos para calcular a saída esperada. Ela espera uma determinada entrada. Ela nem sempre gera um tipo determinado de saída, ela pode não gerar nada (loop infinito) ou travar (Segmentation Fault).

Máquina de Turing

Máquina de Turing

Máquina de Turing Determinística Pode ser descrita como um autômato finito em que cada transição leva a somente um estado.

Máquina de Turing Não-Determinística Pode ser descrita como um autômato finito em que cada transição leva a mais de um estado.

Máquina de Turing Quântica É um autômato que descreve as funcionalidade de um computador quântico, onde existe superposição de bits.

Problema da Parada Determinar se um programa irá parar em algum momento, mesmo que depois de muito tempo de cálculo. Como você sabe que um problema entrou em loop infinito ou que só está demorando muito? Como você determina que um programa travou?

Problema da Parada Determinar se um programa irá parar em algum momento, mesmo que depois de muito tempo de cálculo. Como você sabe que um problema entrou em loop infinito ou que só está demorando muito? Como você determina que um programa travou? Não é possível resolver o problema da parada!!!! Turing provou que não há um algoritmo que pode ser aplicado a qualquer programa arbitrário para decidir se o programa pára ou não com esta entrada.

Problema da Parada

Problema da Parada

Problema da Parada

Problema da Parada

Problema da Parada

Problema da Parada

Problema da Parada

Prova do Problema da Parada Dado uma máquina M, construir uma máquina H que determina se M com entrada e trava ou não.

Prova do Problema da Parada Dado uma máquina M, construir uma máquina H que determina se M com entrada e trava ou não. Suponha que existe tal máquina H: ela recebe uma máquina M e uma entrada e e retorna 0 se o M trava e 1 caso contrário.

Prova do Problema da Parada Dado uma máquina M, construir uma máquina H que determina se M com entrada e trava ou não. Suponha que existe tal máquina H: ela recebe uma máquina M e uma entrada e e retorna 0 se o M trava e 1 caso contrário. Suponha que existe uma máquina N que negue o valor de 0: se ela recebe 0, ela retorna 1; caso contrário, ela trava.

Prova do Problema da Parada Dado uma máquina M, construir uma máquina H que determina se M com entrada e trava ou não. Suponha que existe tal máquina H: ela recebe uma máquina M e uma entrada e e retorna 0 se o M trava e 1 caso contrário. Suponha que existe uma máquina N que negue o valor de 0: se ela recebe 0, ela retorna 1; caso contrário, ela trava. Suponha que existe uma máquina P que copia qualquer entrada dada, retornando como saída a entrada duas vezes.

Prova do Problema da Parada Construa uma máquina X, tal que X seja a combinação sucessiva de P, H e N.

Prova do Problema da Parada Construa uma máquina X, tal que X seja a combinação sucessiva de P, H e N. X recebe como entrada a descrição de uma máquina.

Prova do Problema da Parada Construa uma máquina X, tal que X seja a combinação sucessiva de P, H e N. X recebe como entrada a descrição de uma máquina. P primeiro copia essa entrada retornando duas vezes a descrição da máquina.

Prova do Problema da Parada Construa uma máquina X, tal que X seja a combinação sucessiva de P, H e N. X recebe como entrada a descrição de uma máquina. P primeiro copia essa entrada retornando duas vezes a descrição da máquina. H, então, recebe a descrição dessa máquina e a entrada (também a descrição de uma máquina) e decide se o programa trava ou não.

Prova do Problema da Parada Construa uma máquina X, tal que X seja a combinação sucessiva de P, H e N. X recebe como entrada a descrição de uma máquina. P primeiro copia essa entrada retornando duas vezes a descrição da máquina. H, então, recebe a descrição dessa máquina e a entrada (também a descrição de uma máquina) e decide se o programa trava ou não. Finalmente a máquina N nega o resultado retornado por H.

Prova do Problema da Parada Suponha que X recebe como entrada a descrição de si mesmo.

Prova do Problema da Parada Suponha que X recebe como entrada a descrição de si mesmo. P primeiro copia essa entrada retornando duas vezes a descrição da máquina.

Prova do Problema da Parada Suponha que X recebe como entrada a descrição de si mesmo. P primeiro copia essa entrada retornando duas vezes a descrição da máquina. H, então, recebe a descrição de X e simula X usando como entrada a própria descrição de X.

Prova do Problema da Parada Suponha que X recebe como entrada a descrição de si mesmo. P primeiro copia essa entrada retornando duas vezes a descrição da máquina. H, então, recebe a descrição de X e simula X usando como entrada a própria descrição de X. Se H decidir que X para, ele passará 1 como entrada para N que irá travar, travando assim X.

Prova do Problema da Parada Suponha que X recebe como entrada a descrição de si mesmo. P primeiro copia essa entrada retornando duas vezes a descrição da máquina. H, então, recebe a descrição de X e simula X usando como entrada a própria descrição de X. Se H decidir que X para, ele passará 1 como entrada para N que irá travar, travando assim X.

Prova do Problema da Parada Suponha que X recebe como entrada a descrição de si mesmo. P primeiro copia essa entrada retornando duas vezes a descrição da máquina. H, então, recebe a descrição de X e simula X usando como entrada a própria descrição de X. Se H decidir que X para, ele passará 1 como entrada para N que irá travar, travando assim X. Se H decidir que X não para, ele passará 0 como entrada para N que retorna 1, fazendo com que X retorne 1.

Prova do Problema da Parada Suponha X recebe como entrada a descrição de si mesmo. P primeiro copia essa entrada retornando duas vezes a descrição da máquina. H, então, recebe a descrição de X e simula X usando como entrada a própria descrição de X. Se H decidir que X para, ele passará 1 como entrada para N que irá travar, travando assim X. Se H decidir que X não para, ele passará 0 como entrada para N que retorna 1, fazendo com que X retorne 1.

Máquina de Turing e Problema da Parada Video https://www.youtube.com/watch?v=92whn-pafcs

Exercício Dê exemplo de uma classe de programas que seria muito fácil para o Problema da Parada decidir. Diga outra classe de problemas que seria muito difícil.

Exercício: Solução Muito fácil: programas sem loop ou com loop bem definidos, por exemplo, um for no qual o contador não pode ser modificado durante o loop. even = 0; odd = 0; for (int i=0; i<n; i++) { if (i % 2 == 0) even++; else odd++; }

Exercício: Solução Muito difícil: programas com while no qual a condição de parada não é bem definida, programas que usam break ao invés da condição do while. while (x!= 1) { if (x % 2 == 0) x = x / 2; else x = 3x + 1; }