Faculdade de Computação



Documentos relacionados
Faculdade de Computação

Máquinas de Turing 1

CAPÍTULO 2. Grafos e Redes

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

PESQUISA OPERACIONAL TEORIA DOS GRAFOS

Lista n 0 1 de Exercícios de Teoria da Computação

Potenciação no Conjunto dos Números Inteiros - Z

Análise de Arredondamento em Ponto Flutuante

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Programação em papel quadriculado

Desmistificando o Programa de Computador

MD Sequências e Indução Matemática 1

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

QUANTIFICADORES. Existem frases declarativas que não há como decidir se são verdadeiras ou falsas. Por exemplo: (a) Ele é um campeão da Fórmula 1.

Usando um Simulador da Máquina de Turing Claudio Kirner 2010

Prof. Bruno Holanda - Semana Oĺımpica Nível 1. Teoria dos Grafos

Estruturas de Repetição

Sistemas de Apoio à Decisão

Notas de Cálculo Numérico

Um jogo de preencher casas

PROGRAMAÇÃO BÁSICA DE CLP

Universidade Federal de São João Del Rei - UFSJ

AV1 - MA (b) Se o comprador preferir efetuar o pagamento à vista, qual deverá ser o valor desse pagamento único? 1 1, , , 980

A B C F G H I. Apresente todas as soluções possíveis. Solução

Um estudo sobre funções contínuas que não são diferenciáveis em nenhum ponto

O sinal de menos ( ) colocado antes de um número indica o oposto desse número. Assim: 11 é o oposto de 11.

Estrutura Condicional em Java

Material Teórico - Aplicações das Técnicas Desenvolvidas. Exercícios e Tópicos Relacionados a Combinatória. Segundo Ano do Ensino Médio

Bacharelado em Ciência da Computação Matemática Discreta

QUESTÕES COMENTADAS E RESOLVIDAS

Especificação Operacional.

9 Comandos condicionais

1 CIRCUITOS COMBINACIONAIS

0, OU COMO COLOCAR UM BLOCO QUADRADO EM UM BURACO REDONDO Pablo Emanuel

TEXTO DE REVISÃO: Uso da calculadora científica e potências de 10.

Sistemas Operacionais. Curso Técnico Integrado Profa: Michelle Nery

CONSERVAÇÃO DA ENERGIA

INSTITUTO TECNOLÓGICO

Lista 1 para a P2. Operações com subespaços

por séries de potências

Exercícios Adicionais

Introdução às Máquinas de Turing (TM)

Exemplos de Testes de Hipóteses para Médias Populacionais

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90.

Seu pé direito nas melhores faculdades

Notas sobre a Fórmula de Taylor e o estudo de extremos

5. Uma lousa denominada EPI (registrador de endereço de próxima instrução).

Aula 9 Plano tangente, diferencial e gradiente

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

Avaliação 1 - MA Gabarito

Prog A B C A e B A e C B e C A,B e C Nenhum Pref

Resolverei neste artigo uma prova da fundação VUNESP realizada em 2010.

1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela?

Resolvendo problemas com logaritmos

Morfologia Matemática Binária

Programa Olímpico de Treinamento. Aula 9. Curso de Combinatória - Nível 2. Tabuleiros. Prof. Bruno Holanda

BCC242. Alfabeto, Strings, Linguagens. Registro aqui o agradecimento à Profa. Lucília por ceder slides que fazem parte deste material.

CAPÍTULO 3. Sistemas com Vários Componentes (Multicomponentes) em Modelos Markovianos de Decisão

Dinâmica de um Sistema de Partículas Faculdade de Engenharia, Arquiteturas e Urbanismo FEAU

Eduardo Camponogara. DAS-5103: Cálculo Numérico para Controle e Automação. Departamento de Automação e Sistemas Universidade Federal de Santa Catarina

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

Trabalho Computacional

Casamento de Cadeias. Introdução. Introdução. Estrutura de Dados. Cadeia de caracteres: sequência de elementos denominados caracteres.

Cálculo em Computadores trajectórias 1. Trajectórias Planas. 1 Trajectórias. 4.3 exercícios Coordenadas polares 5

MODELAGEM E SIMULAÇÃO

Capítulo 5: Aplicações da Derivada

Cotagem de dimensões básicas

INTRODUÇÃO À ENGENHARIA

UNIVERSIDADE FEDERAL DE. Programa de Mestrado em Ciência da

1) Eficiência e Equilíbrio Walrasiano: Uma Empresa

36 a Olimpíada Brasileira de Matemática Nível Universitário Primeira Fase

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

FUNÇÃO REAL DE UMA VARIÁVEL REAL

Programação: Estruturas de seleção

Função do 2º Grau. Alex Oliveira

Conceitos básicos da linguagem C

7 - Análise de redes Pesquisa Operacional CAPÍTULO 7 ANÁLISE DE REDES. 4 c. Figura Exemplo de um grafo linear.

Astra LX Frases Codificadas Guia para o processo de Configuração de Frases Codificadas no Programa AstraLX.

Bem-vindo ao tópico sobre administração de listas de preços.

Probabilidade - aula I

Profa. Ma. Adriana Rosa

O Planejamento Participativo

Aula 17 GRANDEZAS ESCALARES E VETORIAIS. META Apresentar as grandezas vetoriais e seu signifi cado

LÓGICA DE PROGRAMAÇÃO. Professor Celso Masotti

Sessão 2 UFCD 0804 Algoritmos

01/05/2016. Danillo Tourinho Sancho da Silva, MSc ROTEIRIZAÇÃO TEORIA DOS GRAFOS MOTIVAÇÃO

Universidade Federal de Rondônia Técnicas de Desenvolvimento de Programas Lista 4

Tabelas vista de estrutura

Estrutura de Dados Básica

A Torre de Hanói e o Princípio da Indução Matemática

Universidade Estadual do Ceará

Introdução à Engenharia de Computação

ALGORITMOS E FLUXOGRAMAS

QUESTÃO 16 Na figura, temos os gráficos das funções f e g, de em. O valor de gof(4) + fog(1) é:

Material Teórico - Módulo de Métodos sofisticados de contagem. Princípio das Casas dos Pombos. Segundo Ano do Ensino Médio

Programação científica C++

Truques e Dicas. = 7 30 Para multiplicar fracções basta multiplicar os numeradores e os denominadores: 2 30 = 12 5

Unidade II - Sistemas de Equações Lineares

Exemplo: Na figura 1, abaixo, temos: Clique aqui para continuar, que é a primeira atividade que você precisa realizar para iniciar seus estudos.

MÓDULO 4 DISTRIBUIÇÃO DE FREQÜÊNCIAS

Transcrição:

UNIVERSIDADE FEDERAL DE UBERLÂNDIA Faculdade de Computação Disciplina : Teoria da Computação Professora : Sandra Aparecida de Amo Lista de Exercícios n o 2 Exercícios sobre Modelos de Máquinas de Turing 1. Uma máquina de Turing com fita duplamente infinita é similar ao nosso modelo simples exceto que sua fita é infinita à esquerda e à direita. A fita é inicialmente preenchida com brancos, exceto para a porção que contém o input. A computação é definida como de costume, exceto pelo fato de que o ponteiro de controle nunca encontra o fim da fita a medida que se move para a esquerda (como é o caso da fita comum). Mostre que este tipo de modelo de Máquina de Turing pode ser simulado pelo modelo simples de uma fita limitada à esquerda e vice-versa. Portanto, os dois modelos são equivalentes. 2. Uma máquina de Turing com reset à esquerda é é similar ao nosso modelo simples exceto que a função de transição δ tem a forma : δ : Q Γ Q Γ {R, RESET } Se δ(q, a) = (r, b, RESET ) quando a máquina está no estado q lendo o símbolo a na fita, então escreve b no lugar do a, entra no estado r e o ponteiro do controle pula para a posição mais à esquerda na fita. Repare que este tipo de máquina não tem a habilidade de mover uma casa para a esquerda. Só tem a habilidade de mover uma casa para a direita e de voltar para trás até a posição inicial. Mostre que este tipo de modelo de Máquina de Turing pode ser simulado pelo modelo simples de uma fita limitada à esquerda e vice-versa. Portanto, os dois modelos são equivalentes. Exercícios sobre Problemas e Linguagens Decidíveis e Turing-reconhíveis Modelo : como provar que um problema é decidível (a) Primeiramente, é preciso verificar se todos os elementos envolvidos na descrição do problema estão bem definidos. (b) Deixar bem claro : (1) qual é o input do problema, (2) qual a pergunta do problema, (3) a resposta é do tipo sim ou não? 1

(c) Dar uma codificação do input do problema em forma de string. A codificação deve ser tal que : (1) a todo input I está associado um único string denotado por < I >, (2) a todo string na imagem da função codificação existe um input I (único) correspondente (é possível decodificar de forma única um string). (d) Dar a descrição em alto nível e se for pedido, dar também a descrição de implementação da Máquina de Turing que resolve o problema. EXEMPLO - Considere o seguinte problema : Dado um grafo não dirigido, o grafo é conexo? (a) Todos os elementos envolvidos no enunciado estão bem definidos? Grafo : Um grafo G é um par (V,E) onde V é um conjunto de vértices e E é um conjunto de conjuntos de dois elementos {A,B}, onde A e B são vértices. Grafo Conexo : Um grafo (V,E) é dito conexo se para quaisquer v, u V existem arestas a 1,..., a n E tais que a 1 = (v, x 1 ), a 2 = (x 1, x 2 ),..., a n = (x n 1, u) (as arestas formam um caminho ligando v e u). (b) (1) Input do Problema = um grafo, (2) Pergunta do Problema : o grafo é conexo? (3) A resposta é do tipo sim ou não. (c) Codificação do input em forma de string : Seja G = (V,E) onde V = {v 1,..., v n }, E = {e 1,..., e m }. O string que codifica G é dado por : onde (e i ) = (a, b) se a aresta e i = {a, b}. (v 1,..., v n )((e 1 )(e 2 )...(e m )) Exemplo : se V = {1,2,3,4} e E = { {1,2}, {1,3}, {2,4} } então a codificação do grafo é dada pelo string : (1, 2, 3, 4)((1, 2)(1, 3)(2, 4)) (d) Descrição em alto nível do algoritmo que decide se um grafo é ou não conexo : M = No input < G >, faça : i. Selecione o primeiro vértice de G e marque-o. ii. Repita o seguinte passo até que não existam novos vértices marcados : iii. Para cada vértice de G, marque-o se ele estiver ligado a um vértice que já foi marcado. iv. Varra os vértices de G para determinar se todos estão marcados. Se estiverem, responda Sim. Caso contrário, responda Não. (e) Descrição da implementação de uma Máquina de Turing que aceita somente strings que correspondem a grafos conexos e rejeita todos os strings que correspondem a grafos não conexos. M = No input < G >, faça : 2

i. M testa se o string do input é a codificação de um grafo G. Se for, continue. Se não for, páre no estado q r. ii. M marca com um ponto o primeiro vértice da parte do input correspondente aos vértices. iii. M escaneia os vértices até encontrar o primeiro vértice n 1 não marcado com um ponto. M marca este vértice com um traço. M escaneia novamente a lista dos vértices e seleciona o primeiro que tem um ponto. Vamos chamá-lo de n 2. Marca este vértice com um um traço também. iv. M escaneia a parte do string correspondente às arestas e testa se existe uma aresta contendo n 1 e n 2. Se existir, M marca n 1 com um ponto, retira os traços de n 1 e n 2 e recomeça do passo 3. Se não existir, M retira o traço de n 2 e procura o próximo vértice (diferente do n 2 ) marcado com um ponto. Chamo este novo vértice de n 2 e repete o passo 4. v. Se não existir mais nenhum vértice marcado com ponto para ser testado junto com n 1, então n 1 não está ligado a nenhum vértice marcados com pontos. Neste caso, M vai para o passo 3 (neste passo, o primeiro vértice que M vai encontrar sem ponto será o primeiro depois do atual n 1 ). vi. M escaneia a lista dos vértices para determinar se todos estão marcados com um ponto. Se for o caso, M entra no estado q a e portanto aceita o string de input. Caso contrário, M entra no estado q r e para o qual não existem mais movimentos futuros (logo, M pára no estado q r e portanto rejeita o string de input). 3. Considere a Máquina de Turing M descrita no modelo acima. Considere o seguinte grafo G = (V,E), onde V = {1,2,3,4,5} e E = { {1,3}, {3,5}, {4,5}, {2,5} }. Descreva o funcionamento da máquina de Turing M no input G. 4. Considere o seguinte problema : Dado um grafo não-dirigido etiquetado (com labels) e um número B, determinar se existe um circuito no grafo com comprimento B. Definições dos termos que aparecem no problema : Grafo dirigido etiquetado : G = (V,E) onde V = {v 1,..., v n } e E = {({a, b}, d) a, b V e d é um inteiro positivo }. Isto é E é um conjunto formado por pares de arestas junto com um número indicando o comprimento da aresta. Um circuito de G é uma sequência de arestas (a 1, a 2 ), (a 2, a 3 ), (a 3, a 4 ),..., (a k, a 1 ) tais que o conjunto dos vértices que aparecem nestas arestas {a 1,..., a k } é igual a V (todos os vértices são visitados). Comprimento de um circuito : soma de todos os labels correspondentes às arestas que aparecem no circuito. Pede-se : (a) Identifique o problema e diga se se trata de um problema de decisão. (b) Dê uma codificação do input do problema. 3

(c) Diga se o problema é decidível. Em caso afirmativo, dê a descrição em alto nível e a descrição de implementação da Máquina de Turing que resolve o problema (sempre pára para qualquer input). Não é necessário dar a descrição formal da Máquina de Turing. 5. Seja P um problema. Sejam c 1 e c 2 duas codificações dos inputs de P. Suponha que exista uma Máquina de Turing M 1 que transforma um string c 1 (I) num string c 2 (I), isto é, o código do input I segundo a primeira codificação pode ser transformado no código do input I segundo a segunda codificação, via uma Máquina de Turing M. Mostre que se existir uma máquina de Turing M 2 que resolve o problema P, onde o input é codificado segundo a segunda codificação então existe uma máquina de Turing M 1 que resolve o problema P, onde o input é codificado segundo a primeira codificação. Isto é : o fato de um problema ser ou não decidível não depende da maneira como seu input é codificado! 6. Dê descrições em nível de implementação de máquinas de Turing que decidem as seguintes linguagens sobre o alfabeto {0,1}. (a) {w w contém o mesmo número de 0 s e 1 s } (b) {w o número de 0 s em w é o dobro do número de 1 s} (c) {w w o número de 0 s em w não é igual ao dobro do número de 1 s} 7. Mostre que o conjunto das linguagens decidíveis (ou recursivas) é fechado com relação às seguintes operações : (a) união (b) concatenação (c) star (d) complementação (e) intersecção 8. Mostre que toda linguagem finita é decidível. 9. Seja A a linguagem contendo um único string s, onde : s = 0 se Deus existe s = 1 se Deus não existe Esta linguagem é decidível? Por que? Note que a resposta não depende de suas convicções religiosas! 10. Explique por que o seguinte texto não corresponde a nenhum tipo de descrição de uma máquina de Turing. O input é um polinômio p com as variáveis x 1,..., x n. Suponha que < p > é uma codificação de p : M = No input < p > : 4

1. Teste se < p > corresponde ao código de um polinômio com as variáveis x 1,..., x n. 2. Tente todas as possibilidades de associar valores inteiros a x 1,..., x n. 3. Teste p para cada uma destas possibilidades. 4. Se para uma das possibilidades, o teste em p der zero, entre no estado q a. 5. Se para nenhuma destas possibilidades, o teste em p der zero, entre no estado q r e páre. 11. Seja L uma linguagem e suponha que exista uma função parcial recursiva F é crescente e Imagem(F) = L. Mostre que L é decidível. Uma função f : N X é dita parcial recursiva se existe uma máquina de Turing M tal que, após executar M no input n, caso M parar num estado de aceitação, o resultado na fita é f(n). Veja que função parciais recursivas podem não estar definidas para todo N. Em alguns pontos ela pode entrar em loop. Repare que o fato de existir uma função parcial recursiva tal que Imagem(F) = L, significa que é possível enumerar os elementos de L por uma Máquina de Turing. O que o exercício está pedindo é o seguinte : se existir uma maneira de enumerar os elementos de uma linguagem de forma crescente através de uma máquina de Turing, então é possível decidir se um string pertence ou não a linguagem L. 5