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; }