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.

Slides:



Advertisements
Apresentações semelhantes
Decidibilidade e Indecidibilidade
Advertisements

Linguagens Livre-de-contexto
FAPE - Curso de Ciência da Computação
Variantes de Máquina de Turing
Teoria da Computação MÁQUINA DE TURING (Continuação) Fabrício Dias
Teoria da Computação EQUIVALÊNCIA DE PROGRAMAS E MÁQUINA Fabrício Dias
Prof. Yandre Maldonado e Gomes da Costa
Linguagens Formais e Autômatos
Prof. Yandre Maldonado e Gomes da Costa
TEORIA DA COMPUTAÇÃO Parte III  Máquina de Turing
3 AUTÓMATOS FINITOS.
Ling. Formais e Autômatos Autômatos finitos
Máquinas de Turing Não Deterministas
Equivalência de Autômatos
Problema de Correspondência de Post (PCP)
Máquinas de Turing Teoria da Computação.
Teoria da Computação Sandra de Amo
Complexidade de Linguagens Influência do Modelo de Computação
Teorema da Recursão Teoria da Computação
Linguagens Não Decidíveis
esquerda p/ direita,read only
Linguagens e Máquinas WILSON ROSA DE OLIVEIRA DEPARTAMENTO DE INFORMÁTICA UFPE
autômatos finitos com transições e
Identificando Linguagens Não Regulares
Máquina de Turing e Computabilidade
Linguagem de Prog. e Programas
Construção de Compiladores
Informática Teórica Engenharia da Computação
Máquinas de Turing, Procedimentos, Algoritmos e Tese de Church
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Aula prática 6 Vetores e Matrizes
Erick Vagner Cabral Igor Lucena Vitor Baptista
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
SIPSER – Capítulo 3: A tese de Church-Turing
Ling. Formais e Autômatos AFN-ε
Teoria da Computação Aula 5 Prof. Fabiano Sabha.
Inteligência Artificial
1 A COMPUTAÇÃO MODERNA Valdemar W. Setzer Depto. de Ciência da Computação da USP
Máquina de Turing Universal
Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Teoria da.
Máquinas de Turing.
LFA: Unidade 03 – Parte B Engenharia/Ciência da Computação
Redução.
A Classe NP Teoria da Computação Profa. Sandra de Amo.
Prof. André Luis Roland Tancredo Engenheiro da Computação e Pesquisador em Desenvolvimento Tecnológico para Semicondutores pelo CNPq Especialista em Microeletrônica.
MÁQUINAS DE TURING Acadêmicos: Karen Juliani Tosta Tomaz RA – 47566
Informática Teórica Aula 8 Por: Tarcisio Coutinho da Silva
Tese de Church-Turing.
Informática Teórica Arthur Ramos David Hulak
1 Decidibilidade continuação…. 2 Teorema: Para qualquer linguagem recursivamente enumerável é indecidível determinar se é finita Prova: Vamos reduzir.
Informática Teórica Engenharia da Computação. Teoria da Computação Contexto do que vamos começar a estudar As linguagens também podem ser definidas formalmente.
Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE
Módulo I Capítulo 7: Funções e Procedimentos William Ivanski Curso de Programação C#
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação. Autômatos Com Pilha São como autômatos finitos não-determinísticos mas com uma pilha. São como autômatos.
Informática Teórica Engenharia da Computação. REDUTIBILIDADE POR MAPEAMENTO Formalizaremos a noção de redutibilidade de uma dentre várias maneiras. Formalizaremos.
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.
1 Máquinas de Turing 3 Exercícios Máquinas de Turing com Múltiplas Fitas Máquinas de Turing Não-deterministicas A Tese/Hipótese de Church-Turing Linguagens.
Transcrição da apresentação:

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 Turing Teoria da Computação 2005.1

Máquina de Turing Memória ilimitada e irrestrita Inicialmente a fita contém apenas a entrada (palavra) e o resto é “branco”. Se a máquina precisa armazenar informação ela pode escrever essa informação na fita.

Máquina de Turing Para ler a informação que está na fita, a máquina pode mover o cabeçote para trás A máquina continua computando até que possa produzir uma saída As saídas aceitação e rejeição são obtidas quando a máquina entra nos estados projetados para tal. Se ela não vai para um desses estados, ela pode entrar em loop.

Máquina de Turing Diferenças entre autômato finito e máquina de Turing : A máquina de Turing pode tanto ler quanto escrever na fita O cabeçote pode se mover tanto para a frente quanto para trás. A fita é infinita Os estados especiais de aceitação e rejeição tem efeito imediato A máquina de Turing pode não parar.

Máquina de Turing Exemplo: Uma máquina de Turing para reconhecer a linguagem : L = { w#w : w  {0,1}* } . Estratégia : Zig-Zag para os lugares (símbolos) correspondentes aos 2 lados do # e determinar se eles “casam” . Usar marcas para conservar traço de qual lugar (símbolo) corresponde. Se todos os símbolos respectivos casarem, ir para o estado de aceitação.

Máquina de Turing M1 = Com entrada w : Scanear a entrada para estar certo que ela contém um simples #. Senão, rejeitar. Zig-Zag através da fita para posição correspondentes relativas à # para checar se essas posições contém o mesmo símbolo. Senão, rejeitar. Marcar símbolos à medida em que eles são checados para conservar traço de qual símbolo corresponde. Quando todos os símbolos à esquerda do # estiverem marcados, checar para símbolos remanescentes do lado direito. Se existir símbolo, rejeitar, senão, aceitar.

Máquina de Turing Definição Formal: Uma MT é uma 7-tupla < Q, , , , q0 , qaceitação, qrejeição >, onde : Q : conjunto finito de estados  : é o alfabeto de entrada não contendo B.  : é o alfabeto da fita, onde B   e   .  : Q x   Q x  x { L, R }. q0  Q é o estado inicial. qaceitação  Q é o estado de aceitação. qrejeição  Q é o estado de rejeição.

Máquina de Turing Configuração Inicial q0 w  1011q7011  onde w = w1w2 ... wn  * nas primeiras n posições da fita com o resto preenchido c/ B e o cabeçote posicionado no primeiro símbolo w1. Uma configuração C qualquer é representada por: u q v onde u e v  *. 1011q7011 

Máquina de Turing Supondo que temos a, b e c em , bem como u e v em * e estados qi e qj, dizemos que : u a qi b v produz u qj a c v se (qi ,b) = (qj, c, L) u a qi b v produz u a c qj v se (qi ,b) = (qj, c, R) Casos Especiais : A configuração qi b v produz qj c v se (qi ,b) = (qj, c, L) A configuração u a qi é equivalente a u a qi B

Máquina de Turing: aceitação/rejeição A configuração de aceitação é uma configuração onde o estado da configuração é qaceitação. Uma configuração de rejeição é uma configuração onde o estado da configuração é qrejeição. Uma máquina de Turing M aceita uma entrada w. Se existe uma sequência de configuração C1,C2, ... , Ck, onde : C1 é a configuração inicial de M p/ entrada w. Ci produz Ci+1. 1  i  k-1 Ck é uma configuração de aceitação. O conjunto de palavras que M aceita é a linguagem de M.

Máquina de Turing Uma linguagem é Turing-reconhecível se existe alguma máquina de Turing que a reconheça. Operando uma MT sobre uma entrada, três possibilidades podem existir : aceitação, rejeição e loop . Uma MT pode não aceitar uma entrada por entrar no estado qrejeição ou por nunca parar (loop). Uma MT que sempre pára é chamada um decididor. Um decididor que reconhece alguma linguagem também é dito decidir aquela linguagem. Uma linguagem é Turing-decidível se alguma máquina de Turing a decide. Toda linguagem Turing-decidível é Turing-reconhecível . O inverso não é verdadeiro.

Máquina de Turing M : L = { 02n : n  0 } Q = (q1, q2, q3, q4, q5, qaceita, qrejeita),  = {0}, e  = {0,x,}. q0 = q1 qaceita q1 q2 q4 q5 q3 qrejeita   R x  R 0  , R 0  x, R 0  L x  L   L 0  R

Variantes de MT: Multifitas Cada fita tem seu cabeçote de leitura/escrita. Inicialmente, entrada na fita 1 e demais com λ. Transição implica em ler/escrever/mover sobre todas as fitas simultaneamente :

Variantes de MT: Multifitas δ : Q x гk  Q x гk x { L,R}k ou seja, δ(qi,a1,...,ak) = (qj,b1,...,bk,L,R,...L} Significa que, se a máquina está no estado qi, lendo simultaneamente os símbolos a1,...,ak nas k fitas, ela vai para o estado qj, escreve os símbolos b1,...bk nas fitas respectivas e move cada cabeçote conforme especificado.

Variantes de MT:Multifitas Teorema 14: Toda MT multi-fita M tem uma MT de uma fita S equivalente.

Variantes de MT Corolário: Prova: Uma linguagem é Turing-reconhecível se e somente se alguma MT multifita a reconhece. Prova: ) Uma linguagem é Turing-reconhecível se existe uma MT que a reconheça (definição). Como uma MT convencional (1-fita) é um caso particular de MT multifita, então se uma linguagem é Turing-reconhecível,ela é reconhecível por alguma MT multifita.

Variantes de MT Cont. da prova:  ) Se uma linguagem é reconhecida por uma MT multifita, então ela é reconhecida por uma MT convencional (1-fita) equivalente (teorema14). Então, ela é Turing-reconhecível.

Não-determinismo A função de transição para uma máquina de Turing não determinística é da seguinte forma: : Q ×   P(Q ×  × {L, R}) A computação de uma máquina de Turing não determinística é uma árvore cujos nodos correspondem às diferentes possibilidades para a máquina.

Não-determinismo Teorema 15: Toda MT não-determística N tem uma equivalente determinística D.

Não-determinismo Prova: Fazer D tentar todos os possíveis ramos da computação não-determinística. Fita 1 contém w (entrada). Não é modificada. Fita 2 contém cópia de trabalho de w Fita 3 contém um ramo (finito) de escolha.

Não-determinismo D = “ Inicialmente, a fita 1 contém a cadeia de entrada w, e as fitas 2 e 3 estão vazias. Copiar a fita 1 na fita 2. Usar a fita 2 para simular a entrada w em uma das possibilidades da computação não determinística. Antes de cada passo de N, consulte o próximo símbolo na fita 3 para determinar que escolha tomar entre as permitidas pela função de transição de N. Se não restam mais símbolos na fita 3, ou se esta opção não determinística for inválida, cancele esta execução, indo para o estado 4. Vá também para o estado 4 se uma configuração de rejeição for encontrada. Se um estado final (de aceitação) for encontrado, aceite a entrada. Substitua a cadeia na fita 3 com a próxima cadeia. Simule a próxima execução de N indo de volta para o estágio 1.

Não-determinismo Corolário: Prova: Uma linguagem é Turing-reconhecível se e somente se alguma máquina de Turing não determinística a reconhece. Prova: ) Qualquer MT determinística é automaticamente uma MT não determinística ) Ver Teorema 2.

Não-determinismo Definição: Corolário: Uma MT não determinística é um decididor se todos os ramos param para todas as entradas. Corolário: Uma linguagem é decidível se e somente se alguma MT não determinística a decide.

Enumerador Inicialmente fita vazia Se não pára, pode imprimir uma lista infinita de palavras A linguagem enumerada por E é a coleção de todas as palavras que ele eventualmente imprime Pode gerar as palavras da linguagem em qualquer ordem, possivelmente com repetição

Enumerador Teorema 16: Uma linguagem é Turing-reconhecível se e somente se algum enumerador a gera. Prova:  ) Se existe um E para uma linguagem A, então uma TM M a reconhece. 1. Execute E. Cada vez que E imprime uma palavra compare-a com w. 2. Se w aparece como uma saída de E, aceitar.”  Claramente, M aceita as cadeias que aparecem na lista gerada por E. M = “Para a entrada w:

Enumerador  ) Se a MT M reconhece A, podemos construir o enumerador E que a gera. Digamos s1, s2, s3, ... é uma lista de todas as cadeias possíveis sobre *. E = “Ignore a entrada. Repita o seguinte para i = 1, 2, 3, ... 1. Execute M i vezes para cada entrada, s1,s2,s3,..., si. 2. Se alguma das computações aceita, imprima o sj correspondente.”  

Calculadora de Função Representar naturais como string’s de 0’s, ou seja, i > 0, é representado 0i. Se uma função tem n argumentos, então n naturais são colocados na fita como um string de 0’s separados por 1: 0i10i21...10in. (Funções de Nn em N). Se a máquina pára no estado de aceitação com a fita consistindo apenas de 0m , para algum m > 0, dizemos então que f(i1,i2,...in) = m, isto é, a máquina computa o valor de f para a entrada i1,i2,...,in. Se f(i1,...in) é definida para todos i1,...in e existe uma MT que a compute, dizemos que f é uma função total recursiva. Se f(i1,...,in) é parcialmente definida para i1,...in e existe uma MT que a compute, dizemos que f é uma função parcial recursiva.

Máquina Universal AMT = {<M, w> | M é uma MT e aceita w} Teorema 17: AMT é Turing-reconhecível. Prova: U= “Com entrada <M, w>, onde M é uma MT e w um string: Simular M com entrada w. Se M entra no estado de aceitação, aceitar. Se M entra no estado de rejeição, rejeitar.”

Máquina Universal U entra em loop com entrada <M,w> se M entra em loop com entrada w. A máquina U é chamada “Máquina de Turing Universal”, porque ela é capaz de simular qualquer outra máquina de Turing a partir de sua descrição.