O problema da parada. Problemas como linguagens. 1. O que um computador pode fazer? Existem limites? Se sim, que

Tamanho: px
Começar a partir da página:

Download "O problema da parada. Problemas como linguagens. 1. O que um computador pode fazer? Existem limites? Se sim, que"

Transcrição

1 Teoria da Computação Notas de Aula Prof Christiano Braga cbraga/tc/2005 Motivação O que um computador pode fazer? Existem limites? Se sim que limites são estes? Quão aceitáveis são estes limites? (O que é aceitável?) 2 Existem coisas que um computador não pode fazer por uma limitação definida de maneira precisa isto é matematicamente Adjetivamos estas coisas como não-computáveis ou indecidíveis e definiremos matematicamente tais coisas como problemas 4 Os problemas que podem ser resolvidos computacionalmente adjetivamos como computáveis ou decidíveis 5 Dado que um problema é computável pode ser que o tempo que o computador leva ou os recursos necessários para resolver um problema sejam inaceitáveis isto é falta paciência ou dinheiro para resolvê-lo 2 O problema da parada Como ilustração de um problema que um computador não consegue resolver considere as seguintes funções onde é a string que representa um programa e sua entrada Estes problemas são chamados intratáveis e iremos definir matematicamente o que significa ser intratável "! $ % se pára com a entrada caso contrário & '$ ( se ) caso contrário 2 O que acontece com a chamada "! + onde + é a string que representa o programa "!? Temos uma inconsistência : 4 Se "! + retorna + + significa que a chamada retornou ) ou seja "! não pára Caso contrário ou seja se " "! + ' + entra + em loop isto é não pára significa que a chamada retornou -" significando que & "! + pára 4 Esta é uma prova por absurdo da inexistência da função Para definirmos "! assumimos a existência da função definindo " "! & por casos No entanto mostramos que "! não pode existir E não pode existir por que não existe Ou seja não é possível em geral decidir (isto é computar) se um problema pára ou não Teoria da Computação Máquinas de Turing 5 Problemas como linguagens Uma linguagem é o conjunto de todas a palavras que podem ser construídas a partir de um alfabeto Exemplo Dado o alfabeto /02 a linguagem das palavras binárias com mesmo número de 0 s e s é dada pelo conjunto /0&54'879&2:;/0 &0-0 &-0-0&0 -&&<<< 2 2 Dado um alfabeto o conjunto de linguagens que podem ser definidas sobre este alfabeto tem cardinalidade (tamanho do conjunto) incontável Seria contável se pudéssemos estabelecer uma bijeção ou seja uma relação para com os números naturais Note que existem muito mais linguagens que programas: basta considerar a representação textual dos programas e ordená-los por tamanho e lexicograficamente criando então uma ordem que permite o mapeamento destes com os naturais 4 Um problema é definido então como a decisão sobre a pertinência de 7 uma palavra a uma linguagem ou seja a pertinência de um elemento a um conjunto 8

2 Redução de problemas Como mostrar que um problema é computável? Será que teremos de tentar encontrar paradoxos como o do problema da parada para cada problema que quisermos argumentar sobre sua computabilidade? 2 Sim e não No caso particular do problema da parada o paradoxo surgiu como ilustração de uma técnica conhecida como diagonalização que é muito utilizada em computabilidade Temos no entanto uma outra técnica chamada de redução de problemas que será muito utilizada durante o curso A idéia básica é conseguir representar um problema conhecidamente indecidível na forma do problema em questão construíndo então uma implicação do tipo onde é o problema conhecidamente indecidível e é o que se deseja demonstrar indecidível Desta forma se fosse decidível bastaria aplicar o algoritmos de redução de a e teríamos decidido também Mas como não é decidível então também não pode ser 9 0 Máquinas de Turing Tese de Church-Turing: computável é o que pode ser representado por uma função parcial recursiva ou equivalentemente por uma máquina de Turing (Não podemos formalizar o que pode ser computável por isso a tese de Church-Turing é uma tese e não um teorema) 2 Uma máquina de Turing é uma representação abstrata dos computadores atuais (Claro que quando Turing a definiu os computadores não existiam como hoje) Utilizaremos esta representação a partir da próxima aula para falar sobre computabilidade e sobre tratabilidade Linguagens e problemas Linguagem é um conjunto de palavras (strings) geradas a partir de um alfabeto de símbolos usualmente representado por 2 Um problema é definido como um predicado sobre pertinência de uma string w a uma linguagem L Exemplo 2 /0 2 a linguagem é a linguagem dos números binários ;/0 4' 7;2 A linguagem são os números binários /0-0-0 &-0&0&0&&-'<<< 2 Exemplo de problema: decidir se um número binário pertence a L 2 Máquina de Turing Constituem um formalismo para escrever soluções para problemas Um problema é então decidível se conseguirmos escrever uma máquina de Turing (MT) que verifica se uma string pertence a linguagem associada ao problema ou em outras palavras uma MT que aceite aquela string Uma máquina de Turing é dada por um controle que controla uma cabeça de leitura que por sua vez opera sobre uma fita se movimentando para esquerda ou para a direita lendo e escrevendo sobre a fita O programa que faz a cabeça de leitura se mover é chamado de função de transição (Ver Sessão 822 do livro para notação) 2 Formalmente uma MT onde é o conjunto de estados; é o alfabeto dos símbolos de entrada; é conjunto de símbolos da fita contendo e ; é a função de transição; é o estado inicial; é o símbolo para o caracter branco; e o conjunto de estados finais A função de transição tem a seguinte notação: 8 5 significando que no estado lendo o símbolo da fita a máquina irá para o estado substiuirá por e se movimentará na direção / 2 com representando esquerda e direita 4 Descrições instantâneas (ou configurações): os estados da máquina de Turing ficam armazenados na prórpia fita da máquina Com isso a configuração!" <<'<$ %&'$ $ (& <<'<$) significa que a MT está no estado lendo o símbolo 5 A movimentação da máquina é representada da seguinte maneira Assume-se que a string é sempre demarcada por caracteres B no 4 início e no fim Movimentação para a esquerda +' <<< - + <'<< /!" <<'< %0' "!" <'<< %2 %0 4)5-5 Movimentação para a direita / <<< %7 %0 ' ( <'<< /! <<<$ %7 $ %0" (& <<< /!" <<< 8-/! <<< 5 4) 7-5 / <<< %0 (& <<< / <<< %0 (& <'<< Exemplo (Livro: 82) MT que reconhece a linguagem /0 4'879&2 ;/0 2- / (0'&2 0 é trocado por X e por Y Começando pela esquerda repete o seguinte processo: (a) Troca 0 por X e anda para direita sobre os 0 e Y até encontrar (b) Troca o por Y e se move para a esquerda sobre Y e 0 até achar um X (c) Procura por um 0 a direita do X recém encontrado Encontrando-o repete o processo Caso contrário a máquina pára sem aceitar a string

3 2 Condições de parada: Ao andar para a esquerda encontra X e não encontra um 0 a direita: se encontrar B ao andar para a direita significa que a string está OK Se encontrar então o bloco de é maior que o de 0 Se enquanto procura por encontrar B então o bloco de 0 é maior que o de Notação gráfica: (Livro Figura 80 pg 24) No estado lendo o símbolo X substitui X por Y e anda para a direita Exemplo 4 (Livro: 84) Máquinas de Turing foram desenhadas inicialmente para computar funções sobe números inteiros Uma máquina de Turing que computa a subtração própria (monus) ou 7 seja se 0 e se 0 Os números m e n são codificados com strings de de tamanho m e n Estas strings são separadas pelo caracter A fita começa então com uma string 0 0& e termina com 0 % A estratégia para construção da máquina é a seguinte: para cada zero no loco de m zeros M transforma um zero no bloco de n zeros em Este processo se repete até que: Procurando por um zero no bloco de n zeros um branco é encontrado significando que todos os zeros no bloco de n zeros foram transformados em e dos m zeros foram transformados em brancos Os : s são então transformados em um zero mais brancos restando então zeros na fita 7 Neste caso No início de um ciclo se não existir um zero para ser 5 transformado em B significa que e todos os m zeros foram transofmrados em brancos A fita é então totalmente apagada 8 Um especificação para MT em Maude Na página do curso está disponível uma especificação executável para máquinas de Turing assim como a especificação dos exemplos 82 e 84 do livro A linguagem utilizada se chama Maude ( e é uma linguagem de especificação/programação algébrica A idéia básica é programar orientado a tipos de dados Um programa Maude tem pelo menos um módulo que define sorts (tipos) operações (funções) variáveis equações e regras (Num primeiro momento não é necessário diferenciar estes dois últimos elementos) As regras especificam como strings (ou termos) escritos segudo os sorts e operações representando máquina de Turing que inclui os módulos anteriores e especifica na forma de regras como a cabeça da máquina se movimenta segundo o item 5 Estude e entenda estas especificações Elas serão discutidas em sala de aula 2 Na nossa especificação definimos um módulo representando a fita chamado TAPE; um módulo representando as descrições instantâneas chamado ID; um módulo representando funções de transição chamado TRANSITION-FUNCTION; e finalmente um módulo 9 20 Linguagem de uma Máquina de Turing Uma linguagem de uma máquina de Turing é (/4 4 (2 2 Linguagens aceitas por uma MT são chamdas recursivamente enumeráveis O recursivo nesta caso significa decidível ou seja existe uma função recursiva que aceita a linguagem Máquinas de Turing no entanto não necessariamente param Linguagens reconhecidas por máquinas de Turing que param ao aceitar uma string da linguagem associada e (eventualmente) param quando são chamadas recursivas Técnicas de programação de MTs Podemos adicionar macros às MTs com o intuito de facilitar sua programação sem no entanto aumentar seu poder computacional da mesma maneira com linguagens de programação modernas definem abstrações para facilitar a vida do programador como tipos de dados definidos pelo usuário orientação a objetos 2 Máquina de Turing com memória: permite que informações sejam armazenadas no controle Desta forma o estado fica representado como uma tupla Exemplo 5 (Livro: 8) Uma MT que aceita /0 A máquina armazena o primeiro caracter no controle e se move comparando os caracteres lidos com aquele armazenado no controle Pára aceitando uma string ou num estado que não é de aceitação (Ver função de transição pg ) Exercício Estenda a specificação Maude que descreve máquinas de Turing disponível na página do curso para suportar memória Especifique e execute o exemplo 8 MT com fita com várias trilhas: o alfabeto da fita é organizado como uma tupla Exemplo (Livro: 87) Uma MT para reconhecer ;/ 4 0 ( 2 Utilizamos uma MT com memória e fita com duas trilhas Uma das trilhas é utilizada para marcar os elementos verificados (a) Marca elemento a esquerda (b) Anda para direita até encontrar c (c) Após encontrar c continua movendo a cabeça para a direita até encontrar primeiro elemento não-marcado (d) Ao encontrar o elemento não-marcado compara com elemento armazenado no controle Se for igual marca e começa a se mover para esquerda Se não for igual simplesmente pára num estado de não-aceitação (e) Ao encontrar c ou todos os símbolos a esquerda estão marcados e então é necessário verificar se todos a direita também estão ou existe existe um não-marcado e o processo recomeça (Ver função de transição na página 2) Exercício 2 Estenda a specificação Maude que descreve máquinas de Turing com memória para suportar fita com trilhas Especifique e execute o Exemplo 4 Subrotinas: aparecem como subautômatos (subconjunto da MT) que representa uma parte recorrente do processo de decisão No entanto como não temos um mecanismo para armazenar o endereço de retorno para que chamadas às subrotinas possam acontecer em diferentes pontos do autômato A solução é fazer diferentes cópias do subautômato que representa a subrotina em cada um dos pontos onde as chamadas devem ser feitas 2 24

4 Exemplo 7 (Livro: 88) Uma máquina que multiplique m por n Inicialmente a fita contém a string 0 0& e termina com 0 Em um passo básico modificamos um zero no primeiro grupo para B adicionando n zeros ao último grupo resultando numa string 0 %0 ( 0&0 para algum durante a multiplicação A parte do algoritmo que se repete é a que copia um bloco de n zeros para a direita do mais a direita Ela faz isso substituindo o primeiro 0 do bloco de n zeros por X Depois procura por B substituindo-o por 0 Volta procurando por X e repete o processo até encontrar A chamada é dada pela repetição da execução do autômato m vezes Após a chamada deve testar pela presença de 0 ou B No primeiro caso ainda devem ser feitas cópias do bloco de n zeros Caso contrário o processo termina e os s e os n zeros devem ser apagados Exercício Especifique a MT do Exemplo 7 utilizando a especificação de MT em Maude 25 Exercício 4 Pense: por que as técnicas de extensão de MT com memória e trilhas podem ser vistas como macros sobre a MT original? 2 Máquina de Turing com mais de uma fita Assim como MT não-determinísticas (apresentadas a frente) MT com mais de uma fita estendem o modelo mas não aumentam o poder computacional da MT básica 2 Figura 8 pg 7 No início as cabeças de leitura das fitas que não possuem a string de entrada estão colocadas em posições arbitrárias As cabeças podem não se mover ao contrário da MT básica 4 MT com fitas (M) pode ser simulada por uma MT com uma fita só (N) da seguinte maneira: (a) N possui uma fita com trilhas (b) trilhas guardam as fitas de M e k trilhas guardam uma marca indicando a posição da cabeça da fita correspondente em M Figura 87 pg 8 27 (c) Para simular um movimento da M N guarda no seu controle o número de marcações a serem lidas A cada leitura de um marcador o símbolo lido é guardado também no controle de N O estado de M é também armazenado no controle de M Com estas informações N consegue mudar o símbolo nas trilhas de dados eventualmente modificar a marcação nas trilhas de posição das cabeças e finalmente mudar o estado no seu controle simulando então um movimento de M Todos os estados de aceitação de M estão presentes em N e nenhum outro estado de aceitação é adicionado por construção 5 Por que armazenar a posição das cabeças em trilhas ao invés de representá-las como inteiros no controle da MT? O problema é enquanto as posições são finitas a qualquer momento o conjunto completo de posições possíveis a qualquer momento é infinito O componente inteiro no controle força o número de estados a ser 28 infinito mesmo que num dado momento somente um subconjunto finito seja utilizado E uma máquina de Turing por definição deve ter um conjunto finito de estados Note também que mostrar a simulação de uma MT com mais de uma fita por uma com uma única fita é equivalente a dizer que as linguagens aceitas por MT com várias fitas são recursivamente enumeráveis 7 O tempo (ou melhor a complexidade do tempo) que uma MT com uma fita leva para simular uma MT com várias fitas é da ordem onde é o número de passos a serem simulados Pode parecer a princípio uma diferença muito grande mas o tempo de execução para solução de diversos problemas é dada por polinômio Isso quer dizer que utilizar uma MT com uma ou várias fitas não é uma questão fundamental na solução de um problema 8 Para mostrar que a simulação de passos de uma MT com fitas por uma com fita considere: (a) Após passos de M os marcadores para as cabeças não podem estar a uma distância maior que ou seja a máquina N não precisa se mover mais do que células para a direita para encontrar as marcas das cabeças de M (b) movimentos são necessários para que N se movimente para a esquerda alternado o conteúdo das trilhas que simulam fitas de M e para modificar as marcações das cabeças de M No máximo movimentos a mais são necessários para reverter movimentos se as cabeças de M se movem para a direita (c) Um movimento de M significa então no máximo movimentos de N ou seja (d) Após movimentosa complexidade é 29 0 Máquinas de Turing Não-Determinísticas Máquinas de Turing não-determiníticas formam um modelo de computação importante não só para falar sobre computabilidade mas também sobre tratabilidade Clarificaremos ao apresentar o mapeamento de máquinas de Turing Não-Determinísticas (MTN) para máquinas de Turing Determinísticas (MTD) 2 Numa MTN não é uma função mas uma relação A partir de um estado pode-se escolher o estado destino a partir de um conjunto de triplas O modelo MTN é equivalente ao modelo MTD sob o ponto de vista de computabilidade Em outras palavras para todo MTN existe um MTD que reconhece a mesma linguagem L que o MTN reconhece 4 Isto pode ser provado construindo-se um MTD que simula um MTN O MTD possui duas fitas A segunda fita é de rascunho e na primeira fita ficam armazenadas as configurações (ou descrições instantâneas) do MTN separadas por com a configuração corrente marcada por X Quando a partir da configuração corrente a relação de transição programada no contole da MTD permite que diferentes transições sejam realizadas a MTD copia a configuração corrente para a segunda fita e depois copia para o final da a fita tantas cópias da configuração corrente quantas alternativas especificar para aquela configuração modificadas apropriadamente A MTD então ou aceita ou então move a marca de configuração corrente para a próxima configuração a direita da configuração corrente 5 A questão que surge é como mostrar que se a MTN aceita então a MTD também irá aceitar? Observe que a MTD analisa as possíveis configurações utilizando busca em largura (ou breadth-first search ) Ao contrário de uma busca em profundidade (ou depth-first search ) se um estado de aceitação existe ele será encontrado pela MTD pois não ficará preso em um dos ramos de execução Mais ainda este estado será encontrado em tempo finito 2

5 ( 2 pois existe um limite superior para o número de alternativas a partir de uma configuração dado que o conjunto definido pela relação é finito Suponha agora que este limite superior seja Após passos a MTD poderá alcançar no máximo configurações (Após um passo configurações são alcançáveis após dois passos após passos <<< ) Apesar de grande o tempo é finito É exatamente esta exponencial que caracteriza uma das grandes questões em computação Não se sabe se esta imposição é de fato necessária ou se existe uma outra maneira mais barata de simular uma MTN através de uma MTD que não tenha um custo exponencial (Mais sobre isso depois) Máquinas de Turing Restritas Já vimos técnicas de programação em MT (memória trilhas e subrotinas) que facilitam a programação de MTs e modelos que estendem a MT (mais de uma fita e não-determinismo) mas que no entanto não adicionam poder computacional a MT original Na realidade podemos simplificar ainda mais a MT sem também perder poder computacional As simplificações que veremos a seguir serão úteis na discussões sobre computabilidade 4 MT com fita semi-infinita A primeira simplificação é restringir o a leitura da fita a elementos a direita do símbolo inicial ou em outras palavras imaginar uma MT com um fita semi-infinita (MTS) A idéia é que a fita pode crescer indefinidamente para a direita sendo limitada a esquerda pelo símbolo inicial $! " O que desejamos agora é mostrar que a MTS é capaz de computar tudo o que a MT original computa A intuição é simples: a MTS terá duas trilhas em sua fita a de cima representando os símbolos a direita do símbolo inicial e a de baixo representando os símbolos a esquerda do símbolo inicial em forma invertida isto é o primeiro símbolo a esquerda do símbolo inicial é o primeiro da trilha e assim sucessivamente O símbolo de controle é utilizado para garantir a fita não cruze o limite esquerdo da fita Uma última restrição é a de que a MTS nunca escreverá o símbolo B de forma a garantir que o conteúdo da fita é sempre uma string seguida de um string A MTS que simula uma MT é essencialmente a seguinte: seu conjunto de estados é aqulele da MT estendido com mais dois estados de set up necessários para incializar a MTS colocando o símbolo na trilha inferior e depois colocando a MTS no estado inicial da MT Os estados da MTS são estruturados como duplas / com U representando a fita superior ou seja está a direita da posição incial da cabeça de leitura e L a inferior ou seja está a esquerda da cabeça de leitura A função de transição da MTS deve ter o cuidado no entanto de se deslocar na direção contrária da MT quando estiver lidando com símbolos da trilha inferior (Lembre-se que os símbolos da trilha inferior estão na ordem reversa na MTS em relação a MT) Cuidado especial também 5 deve ser dedicado as situações no limite esquerdo da fita fazendo a cabeça se deslocar sempre para a direita porém olhando para a trilha superior ou inferior apropriadamente Por construção os estados de aceitação da MT estão na MTS Finalmente mostra-se por indução no número de movimentos da MT que as configurações da MT são obtidas concatenando-se a fita de baixo da MTS ao final da fita de cima da MTS Teoria da Computação Indecidibilidade 7 8 Indecidibilidade Já sabemos existir um problema indecidível: o problema da parada Não é possível escrever um programa que verifica se outro programa pára ou não A nossa demonstração foi feita na forma de um paradoxo pára(pe) confunde(p) sim se P pára com entrada E não caso contrário sim se pára(confundeconfunde) = não loop caso contrário 2 Outro problema indecidível está associado a linguagem de diagonalização definida como contendo todas as strings tal que a MT representada por não aceita a entrada Codificação das MT Precisamos definir como MTs podem ser codificadas em termos de strings de 0 s e s (O caso mais genérico para qualquer alfabeto é claramente indecidível se o caso binário também for) 2 Dada uma MT devemos estabelecer inteiros para representar os estados símbolos e direções de tal forma que uma transição ( $ fica representada pela string Note que uma MT não possui uma única representação binária: numa MT com quatro transições teríamos por exemplo diferentes possibilidades 9 40

6 < < Linguagem de Diagonalização Com esta codificação para máquinas de Turing podemos falar agora sobre a MT cujo código é (Ou seja a -ésima string da linguagem ordenada por comprimento e lexicograficamente no caso de strings do mesmo tamanho) 2 Existem no entanto strings que não representam MTs ou seja não estão bem-formadas segundo a nossa codificação Para estes valores consideramos representar uma MT que imediatamente pára para qualquer entrada Formalmente para onde não é um código para $(/&2 MT válido Podemos agora definir formalmente: é o conjunto de strings tal que não é RE Uma linguagem é recursivamente enumerável (RE) se existe uma MT que a aceita A linguagem não é RE A prova deste teorema está associada ao motivo pela qual esta linguagem é chamada de linguagem de diagonalização 2 Primeiro vamos construir a seguinte matriz: a digonal é se a MT aceita a string onde é a linha da matriz e a coluna e 0 caso contrário Note que cada linha desta matriz é o vetor característico $ que define a linguagem 4 42 <<< 0 <<< 0 0 <<< 0 0 <<< 0 0 <<< Para construir basta complementar a diagonal Se este exemplo fosse verdadeiro o vetor característico de 0&0&0<<< comçaria significando que a string vazia é aceita de 0 0&0 a não seriam aceitos isto é etc Como este vetor característico difere de qualquer linha pela diagonal ele não pode ser vetor característico de nenhuma MT 4 A prova de que a linguagem não é recursivamente enumerável é feita por absurdo Vamos assumir que existe uma máquina que aceita Deve então existir pelo menos uma string que codifica Se então aceita o que é uma contradição pois é definida como o conjunto das strings não aceitas por nenhuma MT Da mesma maneira se então não é aceita por No entanto pela definição de Então não pode existir tal MT e consequentemente não é RE 4 44 RE Indecidibilidade Uma linguagem é recursiva se existe uma MT que dada uma string pára se a ou eventualmente pára sem aceitar 2 Um problema visto como aceitação de uma string por uma linguagem é decidível se é recursiva e indecidível caso contrário Existem três classes de linguagens: recursivas (R) recursivamenteenumeráveis (RE) e não-recursivamente-enumeráveis (NRE) A linguagem é um exemplo de linguagem NRE 4 Teorema: Se é recursiva o complemento de também é Intuitivamente basta inverter os estados de 5 Teorema: Se e são RE então é R Basta construir uma MT com duas fitas composição das MT que aceitam e mas invertendo a saída da máquina que aceita aceita e sempre pára caracterizando como R 45 Linguagem Universal Uma máquina de Turing representa um PC? Ou representa um possível problema que um PC pode resolver? 2 Uma máquina de Turing pode ser utilizada para simular uma máquina de Turing Esta máquina é chamada de máquina de Turing universal A máquina de Turing universal é uma máquina de Turing com quatro fitas organizadas da seguinte maneira: (a) A primeira fita guarda as transições da máquina de Turing cujas transições são codificada na forma representando 8 5 com / 2 assim como a entrada a ser processada por (b) A segunda fita de representa a fita de com os símbolos de codificados da mesma forma que ou seja o símbolo " 0 4 separados por (c) A terceira fita de 0 representa o estado de ' de representado por (A 4a fita é de rascunho) 4 simula da seguinte maneira: (a) Para realizar uma transição é necessários que na terceira fita que contém o estado de 0 esteja lendo e na segunda fita que contém a fita de 0 esteja lendo (b) 0 0 então apaga todos os s da terceira fita substituíndo-os por que representa o novo defindo por 0 0 (c) Substitui por na 2 fita shiftando a entrada se necessário Para tanto pode fazer uso da quarta fita se necessário (d) Move a cabeça de leitura na 2 fita para a próxima sequência de zeros após o a direita ou a esquerda dependendo de 0 que representa direita ou esquerda 5 aceita o par codificado se aceita 47 A Linguagem Universal é indecidível A linguagem é indecidível Mais ainda é mas não é Lembre-se que Ou seja 2 é por causa do algortimo de simulação através de uma MT com múltiplas fitas Para provar que é indecidível precisamos precisamos mostrar que não é recursiva A prova é por contradição Assuma que é recursiva Então também é recursiva O problema de aceitação de pode ser reduzido ao problema de aceitação de Lembre-se que é a linguagem das strings cuja máquina de Turing codificadas por não aceitam é exatamente a máquina de Turing universal que aceita quando dada uma string executa a máquina de Turing codificada por sobre a string e aceita se a máquina de Turing codificada por rejeitar No entanto sabemos que não é logo não pode ser recursiva 48

7 4 4 Note que este resultado do ponto de vista de decidibilidade é mais relevante do que é não- Isso pois uma redução de para um problema só é possível se for não- Ou seja não pode ser utilizada para mostrar indecidibilidade de problemas que são mas não são 4 Por outro lado se desejamos mostrar que um problema é não- então somente pode ser utilizada Reduções Os teoremas sobre indecidibilidade de e pertinência de ao conjunto das linguagens não- constituem ferramental básico para falarmos sobre outros problemas relacionados a máquinas de Turing 2 Vimos anteriormente a técnica de redução de problemas que nos permite falar sobre a decidibilidade de problemas fazendo uso de uma biblioteca de problemas conhecidamente indecidíveis (Ou intratáveis como veremos mais tarde) Reduções serão representadas como máquinas de Turing de tal forma que reduzir de para significa começar com uma instância de na fita e terminar com uma instância de na fita 4 Ao mostrar que um problema reduz para um problema podemos concluir que é tão difícil quanto 5 Teorema Se existe uma redução de para então: (a) Se é indecidível então é indecidível (b) Se é não- então é não- A prova deste teorema é por absurdo Para o Item 5a assuma indecidível e decidível Se existe um algoritmo que reduz de para e um algoritmo para então dada uma instância de basta aplicar a transformação de em e depois o algoritmo de definindo um algoritmo para ao contrário do que haviamos assumido logo é indecidível Para o Item 5b assuma não- e Neste caso temos um reconhecedor para de tal forma que dada uma string em ao aplicarmos a redução e depois o reconhecedor de definimos uma máquina de Turing que irá parar se e pode parar ou não caso contrário Uma contradição a nossa hipótese de que é logo tem que ser não- 5 As linguagens e Intuitivamente uma linguagem e seu complemento são o mesmo problema 2 Para motivar um resultado importante sobre linguagens (Teorema de Rice) provaremos alguns resultados sobre as linguagens / (-2 / 2 e sendo estas duas linguagens definidas sobre o alfabeto binário que contradizem esta intuição Teorema 2 Para tanto precisamos mostrar que é e não é recursiva 4 Para mostrar que precisamos construir uma MT que reconheça pelo menos uma string Construímos então uma MT para que recebe uma string representando uma MT que será entrada para uma máquina universal junto com uma string gerada por Se aceitar então aceita Caso 52 contrário continua gerando as possíveis strings que a aceitar pode vir 5 Para mostrar que não é recursiva devemos construir uma redução de para Ou seja temos que construir uma MT que aceita sss aceita faz o seguinte: sua entrada é ignorada e substituída pela string hard coded então se comporta como a máquina universal que recebe e executa sobre aceitar aceitará Dada esta tradução vamos assumir agora que é recursiva Poderíamos então utilizar este algoritmo para resolver simplesmente dizendo que se é aceita então aceita e caso contrário não aceita Mas sabemos que não é decidível então tal algoritmo não pode existir Desta forma se Teorema é não- A prova é simples Se fosse como é então tanto quanto seriam recursivas não pode ser recursiva pois não é recursiva Logo é não Teorema de Rice A intuição por traz do teorema de Rice é a de que qualquer propriedade que fale especificamente sobre uma linguagem é indecidível 2 A versão formal deste teorema requer algumas definições Primeiro é a noção de propriedade Uma propriedade sobre uma linguagem é um conjunto de linguagens Por exemplo a propriedade livre de contexto é o conjunto das linguagens livres de contexto Uma propriedade é dita trivial se é vazia ou o conjunto de todas as linguagens 4 Ao falarmos sobre decidibilidade de uma propriedade falamos na realidade sobre a linguagem ou seja o conjunto de códigos de máquinas de Turing tal que é uma linguagem em ou seja os códigos das máquias de Turing que reconhecem as linguagens em 5 Teorema 4 Toda propriedade não trivial sobre as linguagens é não decidível Vamos assumir inicialmente que a linguagem vazia não faz parte de Se é não-trivial então existe uma linguagem com a MT que aceita Para provar indecidível vamos criar uma redução de para O algoritmo de redução recebe um par e produz uma MT que se comporta como se aceitar Ou seja tanto quanto estão hard coded em 7 Considere como parte de é o conjunto de linguagens que não tem a propriedade é indecidível ( e é indecidível) Como toda MT aceita uma o conjunto de códigos para MT que não aceitam uma linguagem em é o mesmo que ou seja o conjunto de códigos de MT que aceitam um linguagem em Se é decidível então também é 8 O que o teorema de Rice coloca é que propriedades sobre a 55 5

8 Problema da Correspondência de Post PCP linguagem que a TM aceita são indecidíveis alguns considerados interessantes por si só como decidir se uma linguagem é regular ou livre de contexto No entanto questões sobre os estados da máquina de Turing ao invés da linguagem aceita pela máquina podem ser decidíveis como saber de uma TM tem um número de estados ou saber se existe uma entrada para a qual a máquina faz no mínimo passos dado que a máquina estará limitada pelo número de células na fita que poderão ser lidas em passos permitindo uma simulação destas condições Desejamos falar sobre a indecidibilidade de problemas que não estejam estruturados diretamente como máquinas de Turing O problema da correspondência de Post é um problema chave utilizado por exemplo para demonstrar a indecidibilidade da ambiguidade de uma linguagem livre de contexto (CFL) reduzindo-se o PCP ao da ambiguidade da CFL 2 Para mostrar PCP indecidível primeiro definimos uma variante do PCP chamada MPCP e mostramos existir uma redução de MPCP a PCP Depois mostramos existir uma redução de para MPCP PCP: dadas duas strings <<< e <<'< <'<< sequência de índices tal que <<'< <'<< Exemplo 8 Exemplo de PCP encontrar uma i A B -& 0&& & Uma possível solução: seja : :0 &-&&-0 Outra possível solução? & ou 4 PCP como linguagem: Como PCP permite que suas instâncias tenham alfabetos arbitrários a linguagem PCP é na realidade um conjunto de strings sobre um alfabeto fixo que codifica instâncias de PCP como fizemos com as máquinas de Turing Cada instância de PCP tem um alfabeto com cardinalidade Os pares de strings são então codificados como strings de -bits separadas por vírgula 59 5 Soluções parciais: uma técnica para fazer a análise de uma instância de PCP é procurar por suas soluções parciais ou seja sequências de <<'< índices que fazem com que <<'< seja prefixo de <<< ou o contrário porém sem que as strings sejam '<<<' necessariamente iguais A existência de uma solução faz com que cada prefixo seja uma solução parcial Portanto a identificação de soluções parciais auxilia na argumentação sobre as soluções Exemplo 9 Exemplo de instância que PCP i A B 0 0 0& & (a) Assumindo que exista uma solução 0 <<'<' 79 por ser o único índice onde existe prefixo entre e (Neste caso ) (b) O índice pois nem ou permitem a construção de strings iguais O índice falha na quarta posição e o índice falha na terceira (c) A situação para é a mesma em : as strings diferem pelo <<<- símbolo ; Seria necessário escolher mas a string <<'< nunca alcançaria <'<< 0 0 (<<'< : 0 0 &(<<< : PCP Modificado MPCP Seguindo nossa estratégia para mostrar PCP indecidível vamos definir uma variante de PCP MPCP e mostrar que esta variante se reduz ao PCP A prova de que MPCP se reduz a PCP é construtiva ou seja é um algoritmo que recebe uma instância de MPCP é constrói uma instância de PCP 2 MPCP: PCP com a restrição extra de que começa e começa Mais ainda se PCP não aceitava a solução vazia MPCP aceita se Exemplo 0 Exemplo 8 MPCP 2 i A B -& 0&& Pela restrição de - que é necessário começar pelo índice uma diferença de é criada pela string que de maneira análoga ao Exemplo 9 nunca poderá ser alcançada : : (<'<< &&(<<< Algoritmo de Redução de MPCP para PCP O algoritmo considera que os símbolos e não fazem parte do alfabeto da instância de MPCP sendo traduzida recebe 9 <<'< e <<< <<< (& e produz <<< (& da seguinte maneira: & <<<' : for do 2: : end for 4: ; (& 5: ; (& 2 Prova: Temos que mostrar que dada uma solução para o MPCP é possível construir uma solução para para o PCP e vice-versa <<<' Considere uma solução para o MPCP Então <<< <<'< Substituindo por obtemos <<< a partir de e substituindo por obtemos e 4

9 a partir de Como é uma solução significa que a menos de e pois começa com e termina com o que é resolvido pelas últimas duas linhas do algoritmo de construção do PCP <'<< '<<<' É necessário mostrar que se o PCP construído possui uma solução o MPCP também possuirá Uma solução no PCP construído é da forma 0 <<'<' 0 (Os índices e são adicionados pelo <<'<' é uma solução para algoritmo) Precisamos mostrar que o MPCP Ao removermos os e de e obtemos exatamente <<'< e <<'< E sabemos também que logo 9 provando que uma solução para o PCP é uma solução para o MPCP O algoritmo constrói uma instância de PCP a partir de MPCP quer exista uma solução ou não Definimos então uma redução de MPCP para PCP e consequentemente se PCP for decidível MPCP tb é O próximo passo é construir uma redução de para MPCP Redução de para MPCP Intuição sobre a instância de MPCP produzida pela redução: uma computação ou derivação numa máquina de Turing isto é uma sequência de configurações (ou descrições instantâneas) é simulada por soluções parciais na instância do MPCP produzido pelo algoritmo de redução de tal forma que a string fica sempre deslocada de uma configuração da string Caso chegue num estado de aceitação as strings são colocadas do mesmo comprimento Caso contrário ou seja quando não aceita sua string de entrada existirá sempre uma diferença (de uma configuração) entre as duas strings no MPCP e consequentemente não haverá uma solução para a instância do MPCP produzida pela redução 2 A título de ilustração considere a computação no Exemplo realizada por uma máquina de Turing Ela seria representada pelas seguintes soluções parciais na instância de MPCP gerada a 5 partir de Exemplo Exemplo de simulação de uma MT por uma instância de MPCP 0 ' Em : Em ' : A primeira solução parcial tem vazio e no estado inicial Esta solução parcial representa a primeira derivação: passa a ter a string representando o o estado e a é apendada a string representando a segunda configuração na computação de A segunda configuração é completada copiando-se os símbolos faltantes para cada string Intuição sobre o algoritmo de redução de MT para MPCP: Existem cinco tipos de pares de lista em MPCP que podem ser produzidos a partir de uma MT : (a) O primeiro tipo de par na MPCP é o par inicial tem a forma do primeiro par no Exemplo com vazio e contendo a representação da primeira configuração da MT (b) O segundo tipo de par é o que faz cópias como no último passo do Exemplo (c) O terceiro tipo de par simula uma transição na MT como no segundo passo do Exemplo As soluções parciais seguintes a este passo completam a representação de uma configuração no MPCP como no terceiro passo do Exemplo A forma geral destes pares é: 7 8 ' ' se se 8 se 8 e 4! se e 4! (d) O quarto tipo de par é aquele que completa a string quando atinge um estado de aceitação Sua forma geral é a seguinte: 8 8 (e) O último tipo de par completa a string após a string ter sido completada 4 Apesar de termos visto toda a intuição da redução de para MPCP procurando apresentá-la de uma maneira ainda mais didática do que aquela apresentada no livro texto esta redução deve ser estudada com cuidado na sessão 94 do livro texto 9 70 Indecidibilidade da Ambiguidade para CFGs Nossa motivação para definir o problema de correspondência de Post (PCP) e demonstrar sua indecidibilidade foi a de que ficasse facilitada a argumentação sobre a indecidibilidade de problemas que não tem a cara de uma máquina de Turing 2 O problema de decisão sobre a ambiguidade de uma gramática livre de contexto ( context free grammar CFG) é um destes problemas Uma CFG é dita ambígua se para alguma string que pertença a linguagem definda pela CFG existir mais de uma derivação Para abreviar chamaremos o problema de decisão da ambiguidade de uma CFG de ACFG O ACFG pode ser reduzido ao PCP seguindo a seguinte intuição: (a) Construiremos uma gramática a partir da união de duas outras gramáticas que são por construção não-ambíguas (b) As produções de cada uma destas duas gramáticas é construída a partir de uma string do PCP ou seja a partir de <'<< e <<'< e a partir de símbolos de índice <<<' solução do PCP que representam os índices de uma (c) A construção da gramática é de tal forma que se existir uma solução para o PCP existirão também duas derivações para uma string que pertence a linguagem induzida pela gramática resultante da união das suas gramáticas construídas a partir de e 4 As gramáticas e tem a seguinte forma geral: 4 4(<<< (<<<4 é construída de forma análoga porém utilizando a string <<< ao invés de <<< 7 72

10 5 Note que a forma das strings derivadas da gramática (resp ) é <<'< <<'< <<< (resp <<< Mais ainda e não são ambíguas: uma produção em é utilizada quando o passo de derivação não for o último e quando for o último O mesmo raciocínio vale para 7 e são unidas formando da seguinte maneira: (a) Adiciona-se a produção inicial 4 (b) Adicionam-se as produções de (c) Adicionam-se as produções de 8 Como dito anteriormente será ambígua se houver uma solução para o PCP Se houver uma solução para então <<'< <<'< <<'< <'<< ) sendo possível derivar a mesma string a partir do ramo da gramática assim como do ramo da gramática Teorema 5 é ambígua sss a instância (AB) do PCP tem solução Prova ( ) Se é ambígua existem <'<< <<< <<< <<'< <'<< e representando a mesma string Se representam a mesma string então e é uma solução para o PCP pois <'<< <<'< ( ) Se <<'< tem solução por exemplo então <<'< <<'< <<'< <'<< e a mesma string pode ser derivada de duas formas por 7 74 Teoria da Computação Intratabilidade Problemas Intratáveis Se antes o foco era argumentar sobre a existência ou não de um algoritmo para um problema a questão agora é saber se dado um problema decidível existe uma algoritmo que o resolva em tempo polinomial (TP) 2 Por que tempo polinomial? A prática mostrou que problemas solúveis em tempo polinomial podem ser toleráveis (a paciência humana? :) ou tratáveis enquanto que problemas solúveis em tempo exponencial seriam intoleráveis ou intratáveis Na teoria da intratabilidade a noção de redução deve mudar Não basta a existência de um algoritmo para fazer a tradução de uma instância de um problema numa instância de outro problema como fazíamos dentro da teoria da indecidibilidade Um problema é considerado intratável se pode ser reduzido em tempo polinomial como sendo um problema que requer tempo exponencial para ser 75 7 resolvido Caso contrário a própria redução seria intratável e não teríamos paciência :) para saber se um problema é intratável ou não 4 Um aspecto bastante importante numa comparação entre indecidibilidade e intratabilidade é a irrefutabilidade do que é demonstrado indecidível contra a conjectura de que ou seja de que existem problemas que podem ser resolvidos por uma máquina de Turing não-determinística (NTM) em tempo polinomial e não podem ser resolvidos por uma máquina de Turing determinística (DTM) em tempo polinomial Esta conjectura está amparada por séculos de experiência e da prática de não ter sido possível encontrar soluções de tempo polinomial numa DTM para alguns problemas No entanto ainda não foi demonstrado matematicamente que: (i) ou estamos deixando de ver como resolver problemas que podem ser resolvidos em TP numa NTM numa DTM em TP (ii) ou de fato estes problemas só podem ser resolvidos numa DTM em tempo exponencial A Classe Uma máquina de Turing é dita de complexidade de tempo + (ou de tempo de execução + quando recebe uma entrada de comprimento pára após + passos reconhecendo ou não Definição Uma linguagem está na classe se existe um para alguma TM determinística + polinômio tal que + de complexidade de tempo 2 Para mostrar a pertinência de um problema é necessário associar um máquina de Turing ao problema Uma TM no entanto responde sim ou não a uma pergunta Podemos no entanto pensar numa versão predicativa do problema de tal maneira que se possa responder sim ou não É claro que se uma versão sim-ou-não de um problema é intratável sua versão com uma resposta mais estruturada também será Para ilustrar a pertinência de um problema a classe utilizaremos o algoritmo de Kruskal para o cálculo da árvore geradora de peso mínimo ( minimum-weight spanning tree MWST) de um grafo 4 Uma MWST é definida sobre um grafo cujas arestas tem pesos Uma árvore geradora (ST) é um subconjunto das arestas do grafo tais que todos os nós são conectados por estas arestas sem a presença de ciclos Uma MWST é uma ST onde a soma dos pesos das aresta é a menor de todas as ST possíveis 5 A pergunta que nossa MT responderá será dado um grafo e o limite tem uma árvore geradora de peso ou menor? Vamos primeiro entender como o algoritmo funciona A intuição do algoritmo é organizar os nós em componentes conexos dados pelas arestas do grafo Inicialmente cada nó constitui um componente conexo Enquanto existirem arestas (não consideradas pelo algoritmo) que liguem nós em componentes conexos distintos as arestas de menor peso são adicionadas a MWST e os componentes conexos são intercalados O algoritmo termina quando: (i) não existirem mais arestas a serem cosideradas ou (ii) o número de arestas selecionadas é um número menor do que o número de nós significando que todos do grafo estão num único componente conexo e podemos então parar de analisar as arestas do grafo 7 Precisamos no entanto pensar numa máquina de Turing que resolva a MWST e consequentemente numa codificação para este problema Dado um grafo com nós e um problema MWST com peso máximo de o MWST pode ser codificado como "<'<< codificados em binário onde são números binários representando nós é o número máximo de nós é o peso máximo do MWST <<< são as arestas do grafo Uma aresta significa que os nós e estão ligados por uma aresta com peso 79 80

11 8 É importante dizer que a diferença entre o tamanho como uma string de entrada de TM e como uma entrada informal de um problema nunca é maior do que um pequeno fator em geral um logaritmo do tamanho da entrada Desta forma o que pode ser feito em tempo polinomial numa medida pode ser feito em tempo polinomial noutra medida 9 A MT que executa o algoritmo de Kruskal utilizando a codificação apresentada para o problema MWST é uma MT de várias fitas Considere o tamanho da codificação de uma entrada da MT: (a) Uma fita é utilizada para armazenar os nós e os componentes conexos numa iteração do algoritmo Utilizando o argumento de proporcionalidade entre a entrada codificada e a entrada informal o tamanho desta fita é proporcional ao tamanho da entrada ou mais formalmente tem complexidade (b) Uma fita é usada para armazenar a aresta de menor peso 8 encontrada A busca pela aresta é feita sobre a representação binária das arestas considerando uma única vez cada aresta levando um tempo proporcional a entrada Novamente (c) Quando uma aresta é encontrada é necessário buscar pelos nós da aresta na a fita assim como seus componentes Como o comprimento da fita é esse é o tempo desta tarefa (d) A intercalação entre componetes conexos é dada pela mudança em cada nó do componente do número que representava o componente anterior pelo novo número Esta tarefa também leva por ser o tamanho da fita que contém os nós e seus componentes Com isso um passo do algoritmo leva para ser executado Como são executados tantos passos quanto arestas a complexidade do algoritmo é Sabemos da discussão sobre MTs que uma máquina com várias fitas pode ser simulada por uma MT de uma única fita pelo quadrado do tempo Se MT para Kruskal com várias 82 fitas leva MWST está em numa fita só lavará e portanto polinomial portanto A Classe Definição 2 Uma linguagem está na classe (polinomial não determinística) se existe uma MT não-determinística + e uma complexidade de tempo polinomial tais que e quando recebe uma entrada de comprimento não existe nenhuma sequência de mais de + movimentos de 2 Como toda DTM é uma NTM então No entanto aparentemente existem problemas que estão em e não estão em Isso pois a NTM funcionando em tempo polinomial tem a capacidade de pressupor um número exponencial de soluções possíveis para um problema e verificar cada uma em tempo polinomial em paralelo A questão é um importante problema matemático em aberto que em outras palavras significa responder se tudo que é feito em tempo polinomial por uma NTM pode ser feito em tempo 8 84 polinomial por uma DTM eventualmente com um polinômio de grau mais alto 4 O problema do caixeiro viajante é um problema clássico que parece estar em mas não em O problema é encontrar um circuito hamiltoniano num grafo Um circuito hamiltoniano é um conjunto de arestas que conectam os nós de um grafo num único ciclo com cada nó aparecendo uma vez (A menos do nó de origem) Considerando que o nó de origem e a ordem dos nós são significativas num ciclo o número de ciclos num grafo é com o número de nós no grafo o que é maior do que 5 Uma máquina de Turing não-determinística com várias fitas poderia adivinhar um ciclo e calcular o peso para o ciclo em (O algoritmo de Kruskal nos dá uma intuição sobre a complexidade: lembre-se que conseguimos computá-lo em numa DTM com várias fitas Precisamos da NTM para fazer as adivinhações sobre as arestas em cada iteração sobre o conjunto de arestas) O processo 85 todo é feito num NTM de uma fita só em Reduções de tempo polinomial: da mesma maneira que na teoria sobre decidibilidade de problemas utilizamos reduções como uma técnica para nos auxiliar na demonstração sobre a indecidibilidade de problemas na teoria sobre intratabilidade de problemas também procuramos relacionar um novo problema a outro aceitado como intratável 7 No entanto reduções entre problemas intratáveis devem ser elas próprias de tempo polinomial Essa restrição deve existir pois se ao reduzirmos um problema a um problema : (a) a string produzida pelo algoritmo de redução produz uma entrada para que é exponencial na entrada para a instância de assumindo-se que executa em tempo com uma entrada executa em executaria então em tempo exponencial em relação a sua entrada sendo que é de tempo polinomial 8 (b) a string de entrada para produzida pelo algoritmo de redução é proporcional a entrada para mas o algoritmo de construção é de tempo exponencial na entrada de Mesmo sendo de tempo polinomial a execução de pelo processo de redução é de tempo exponencial Nestes dois casos é possível e não É necessário então impor que o algoritmo de redução seja de tempo polinomial pois por construção resolve o item 7b e como um algoritmo de tempo exponencial não pode construir uma saída de tempo exponencial resolve o item 7a (Pense no funcionamento da máquina de Turing) 87 Problemas -completos Definição Seja uma linguagem em é -completa se: (a) (b) Para toda existe uma redução de tempo polinomial de a 2 Assumindo então todos os problemas -completos estão em (Se um problema -completo estivesse em todos os problemas -completos estariam em pela definição de e consequentemente teríamos ) Teorema Se é -completo está em e existe uma redução de tempo polinomial de a então é -completo Prova Como para mostrar -completo é necessário mostrar que existe uma redução de tempo polinomial de toda linguagem em para Como toda linguagem em se reduz a em tempo polinomial e existe uma redução também de 88

Linguagem Universal. assim como a entrada ser processada por a. (b) A segunda fita de representa a fita de

Linguagem Universal. assim como a entrada ser processada por a. (b) A segunda fita de representa a fita de Linguagem Universal 1. Uma máquina de Turing representa um PC? Ou representa um possível problema que um PC pode resolver? 2. Uma máquina de Turing pode ser utilizada para simular uma de Turing máquina.

Leia mais

1. Uma linguagem de uma máquina de Turing

1. Uma linguagem de uma máquina de Turing Linguagem de uma Máquina de Turing 1. Uma linguagem de uma máquina de Turing, é. 2. Linguagens aceitas por uma MT são chamdas recursivamente enumeráveis. O recursivo nesta caso significa decidível, ou

Leia mais

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

Capítulo 8: O problema da parada. Decidibilidade e computabilidade. José Lucas Rangel Introdução. Capítulo 8: O problema da parada. Decidibilidade e computabilidade. José Lucas Rangel 8.1 - Introdução. Como observado no capítulo anterior, podemos substituir a definição informal de procedimento pela

Leia mais

Problemas Computáveis

Problemas Computáveis Indecidibilidade Problemas Computáveis Máquinas de Turing ou Problemas Computáveis ou Linguagens Recursivamente Enumeráveis LER (*) podem ser divididas em 2 classes: as MT que sempre param (Algoritmos),

Leia mais

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

Marcos Castilho. DInf/UFPR. 16 de maio de 2019 16 de maio de 2019 Motivação Quais são os limites da computação? O que é um Problema de decisão? Um problema de decisão é um conjunto de perguntas, cada uma das quais tem um SIM ou um NÃO como resposta.

Leia mais

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

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados. Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados. José Lucas Rangel 9.1 - Introdução. Como já vimos anteriormente, a classe das linguagens sensíveis ao contexto (lsc) é uma

Leia mais

Aula 10: Decidibilidade

Aula 10: Decidibilidade Teoria da Computação Aula 10: Decidibilidade DAINF-UTFPR Prof. Ricardo Dutra da Silva Definição 10.1. Um problema de decisão P é um conjunto de questões para as quais as respostas são sim ou não. Exemplo

Leia mais

Aula 10: Decidibilidade

Aula 10: Decidibilidade Teoria da Computação Segundo Semestre, 2014 Aula 10: Decidibilidade DAINF-UTFPR Prof. Ricardo Dutra da Silva Definição 10.1. Um problema de decisão P é um conjunto de questões para as quais as respostas

Leia mais

Aula 10: Tratabilidade

Aula 10: Tratabilidade Teoria da Computação DAINF-UTFPR Aula 10: Tratabilidade Prof. Ricardo Dutra da Silva Na aula anterior discutimos problemas que podem e que não podem ser computados. Nesta aula vamos considerar apenas problemas

Leia mais

Modelos de Computação Folha de trabalho n. 10

Modelos de Computação Folha de trabalho n. 10 Modelos de Computação Folha de trabalho n. 10 Nota: Os exercícios obrigatórios marcados de A a D constituem os problemas que devem ser resolvidos individualmente. A resolução em papel deverá ser depositada

Leia mais

Linguagens recursivamente enumeráveis

Linguagens recursivamente enumeráveis Linguagens recursivamente enumeráveis Uma palavra x Σ é aceite por uma máquina de Turing M ( x L(M)) se M iniciando com a palavra x na fita e no estado inicial, pára num estado final. Caso contrário, M

Leia mais

Máquinas de Turing 3

Máquinas de Turing 3 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 decidíveis por Máquinas de Turing (Recursivas)

Leia mais

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

Computação efectiva. Que linguagens podem ser reconhecidas por algum tipo de autómato? Computação efectiva Que linguagens podem ser reconhecidas por algum tipo de autómato? O que é ser computável? Que linguagens são computáveis? Existem linguagens que não são computáveis? Isto é, existem

Leia mais

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens 1 Introdução Estudar computação do ponto de vista teórico é sinônimo de caracterizar

Leia mais

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

Redutibilidade. Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Redutibilidade Mário S. Alvim (msalvim@dcc.ufmg.br) Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Mário S. Alvim (msalvim@dcc.ufmg.br) Redutibilidade DCC-UFMG (2018/02) 1 / 46 Redutibilidade:

Leia mais

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

Draft-v0.1. Máquinas de Turing Máquinas de Turing 13 Máquinas de Turing A necessidade de formalizar os processos algorítmicos levou, nas décadas 20 e 30 do século XX, a diversos estudos, entre os quais os de Post, Church e Turing, com vista a estudo formal

Leia mais

Teoria da Computação. Computabilidade e complexidade computacional

Teoria da Computação. Computabilidade e complexidade computacional Teoria da Computação Computabilidade e complexidade computacional 1 Computabilidade e Complexidade Computabilidade: verifica a existência de algoritmos que resolva uma classe de linguagens trata a possibilidade

Leia mais

Universidade Federal de Alfenas

Universidade Federal de Alfenas Universidade Federal de Alfenas Linguagens Formais e Autômatos Aula 15 Máquinas de Turing (parte 2) humberto@bcc.unifal-mg.edu.br Última Aula Uma Máquina de Turing (MT) possui: uma fita infinita para representar

Leia mais

Teoria da Computação. Computabilidade e complexidade computacional

Teoria da Computação. Computabilidade e complexidade computacional Teoria da Computação Computabilidade e complexidade computacional 1 Computabilidade e Complexidade Computabilidade: verifica a existência de algoritmos que resolva uma classe de linguagens trata a possibilidade

Leia mais

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

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

Leia mais

Computabilidade e Complexidade (ENG10014)

Computabilidade e Complexidade (ENG10014) Sistemas de Informação Computabilidade e Complexidade (ENG10014) Profa. Juliana Pinheiro Campos E-mail: jupcampos@gmail.com Decidibilidade O estudo da decidibilidade objetiva determinar a solucionabilidade

Leia mais

Modelos Universais de Computação

Modelos Universais de Computação Modelos Universais de Computação 1 Equivalência entre Variantes de TM TM s definem naturalmente uma classe. Toda variante razoável de TM define a mesma classe de linguagens. (reforça a Tese Church-Turing)

Leia mais

Problemas Intratáveis ou computação eficiente X computação ineficiente

Problemas Intratáveis ou computação eficiente X computação ineficiente Problemas Intratáveis ou computação eficiente X computação ineficiente Problemas Tratáveis Os problemas que podem ser resolvidos em tempo polinomial em um computador típico são exatamente os mesmos problemas

Leia mais

PCC104 - Projeto e Análise de Algoritmos

PCC104 - Projeto e Análise de Algoritmos PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 5 de dezembro de 2017 Marco Antonio

Leia mais

Uma forma de classificação

Uma forma de classificação Uma forma de classificação L. Não-RE ou f. nãocomputáveis LRE ou MT ou f. comput. L. Indecidíveis ou Procedimentos L. Recursivas ou Decidíveis ou Algoritmos Outra forma de classificação Problemas Indecidíveis

Leia mais

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

Apostila 06. Objetivos: Estudar a Computabilidade Estudar a Decidibilidade Estudar a Redutibilidade Cursos: Bacharelado em Ciência da Computação e Bacharelado em Sistemas de Informação Disciplinas: (1493A) Teoria da Computação e Linguagens Formais, (4623A) Teoria da Computação e Linguagens Formais e

Leia mais

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens Formais e Autômatos P. Blauth Menezes Linguagens Formais e Autômatos P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Linguagens Formais e Autômatos - P. Blauth Menezes 1 Linguagens

Leia mais

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

ECO026 TEORIA DA COMPUTAÇÃO. Prof: Rafael Santos   Site: ECO026 TEORIA DA COMPUTAÇÃO Prof: Rafael Santos Email: rafafic@gmail.com Site: http://sites.google.com/site/rafafic Máquinas de Turing Uma linguagem Turing-reconhecível (Linguagem recursivamente enumeravel),

Leia mais

Linguaguens recursivamente enumeráveis

Linguaguens recursivamente enumeráveis Linguaguens recursivamente enumeráveis Uma palavra x Σ é aceite por uma máquina de Turing M ( x L(M)) se M iniciando com a palavra x na fita e no estado inicial, pára num estado final. Caso contrário,

Leia mais

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

Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente ESIN/UCPel 058814 Linguagens Formais e Autômatos TEXTO 5 Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente Prof. Luiz A M Palazzo Maio de 2007 0. Introdução A Ciência da Computação

Leia mais

Autómatos determísticos de k-pilhas

Autómatos determísticos de k-pilhas Autómatos determísticos de k-pilhas dados de entrada a a a3 an controlo finito (S, Σ, Γ, δ, Z, s 0, F ) δ (S Σ Γ k ) (S, (Γ ) k ) Departamento de Ciência de Computadores da FCUP MC Aula 3 Dados um estado

Leia mais

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Aula 18. Cap O Problema da Parada

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Aula 18. Cap O Problema da Parada ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO Aula 18 Cap 4.2 - O Problema da Parada Profa. Ariane Machado Lima ariane.machado@usp.br 1 Nas últimas aulas Tese de Church-Turing Problemas computacionais descritos

Leia mais

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

Máquinas Universais. Departamento de Ciência de Computadores da FCUP MC Aula 23 1 Máquinas Universais Um modelo de computação diz-se universal se todo o problema efectivamente computável o for nesse modelo. Um modelo universal é suficientemente poderoso para se aceitar a si próprio:

Leia mais

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

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo Proposta por Alan Turing em 1936; É universalmente conhecida e aceita como formalização de algoritmo; Teoria

Leia mais

Linguaguens recursivamente enumeráveis e recursivas

Linguaguens recursivamente enumeráveis e recursivas Linguaguens recursivamente enumeráveis e recursivas Uma linguagem diz-se recursivamente enumerável (r.e) ou semi-decidível se é aceite por uma máquina de Turing. SD: classe de linguagens recursivamente

Leia mais

Máquina de Turing. Controle finito

Máquina de Turing. Controle finito Máquinas de Turing Máquinas de Turing podem fazer tudo o que um computador real faz. Porém, mesmo uma Máquina de Turing não pode resolver certos problemas. Estes problemas estão além dos limites teóricos

Leia mais

14.1 Linguagens decidíveis ou Turing reconhecíveis

14.1 Linguagens decidíveis ou Turing reconhecíveis Linguagens decidíveis ou Turing reconhecíveis Problemas decidíveis para Linguagens Regulares Teorema Seja A linguagem A DFA é decidível A DFA = {A : A é um DFA e aceita } Dem Basta mostrar como construir

Leia mais

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

Máquinas Universais. Máquina de Turing. Celso Olivete Júnior. Máquinas Universais Máquina de Celso Olivete Júnior olivete@fct.unesp.br http://www2.fct.unesp.br/docentes/dmec/olivete/ Roteiro Hipótese de Church - Máquinas Universais: Máquina de Máquina de : Noção

Leia mais

INTRATABILIDADE e NP-COMPLETUDE

INTRATABILIDADE e NP-COMPLETUDE INTRATABILIDADE e NP-COMPLETUDE Sandro Santos Andrade Doutorado Multiinstitucional em Ciência da Computação UFBA/UNIFACS/UEFS Junho/2008 Grafos e Análise de Algoritmos Introdução Para alguns problemas

Leia mais

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

Teoria da Computação. Máquinas de Turing: variações Teoria da Computação Máquinas de Turing: variações 1 Máquina de Turing Modelo mais completo, feito com circuitos digitais http://aturingmachine.com 2 Máquina de Turing Modelo mais simplificado, feito com

Leia mais

Técnicas de Extensão de MT

Técnicas de Extensão de MT Máquinas de Turing Técnicas de Extensão de MT Permanecer parada após a leitura (STILL) Máquinas de Turing com Múltiplas Fitas e Cabeças Máquinas de Turing Não-deterministicas A Tese/Hipótese de Church-Turing

Leia mais

Linguagens Formais e Autômatos Decidibilidade

Linguagens Formais e Autômatos Decidibilidade Linguagens Formais e Autômatos Decidibilidade Andrei Rimsa Álvares Sumário Introdução A tese de Church-Turing Máquinas de Turing e problemas de decisão Máquina de Turing Universal O problema da parada

Leia mais

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens Formais e Autômatos P. Blauth Menezes Linguagens Formais e Autômatos P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Linguagens Formais e Autômatos - P. Blauth Menezes 1 Linguagens

Leia mais

Máquinas de Turing - Computabilidade

Máquinas de Turing - Computabilidade BCC244-Teoria da Computação Prof. Lucília Figueiredo Lista de Exercícios 03 DECOM ICEB - UFOP Máquinas de Turing - Computabilidade 1. Seja L uma linguagem não livre de contexto. Mostre que: (a) Se X uma

Leia mais

COMPUTABILIDADE 2. Indecidibilidade

COMPUTABILIDADE 2. Indecidibilidade Licenciatura em Ciências da Computação COMPUTABILIDADE 2. Indecidibilidade José Carlos Costa Dep. Matemática e Aplicações Universidade do Minho 15 de Novembro de 2011 José Carlos Costa DMA-UMinho 15 de

Leia mais

Complexidade de Tempo

Complexidade de Tempo Complexidade de Tempo 1 Complexidade de Tempo Quando um problema é decidível, ele pode não ser solúvel na prática se a solução requer uma quantidade excessiva de tempo ou memória Medindo a complexidade

Leia mais

Linguagens Livres de Contexto

Linguagens Livres de Contexto Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação 364018 Linguagens Formais e Autômatos TEXTO 4 Linguagens Livres de Contexto Prof. Luiz A M Palazzo Maio de 2011

Leia mais

I.2 Introdução a Teoria da Computação

I.2 Introdução a Teoria da Computação I.2 Introdução a Teoria da Computação O que é? Fundamento da Ciência da Computação Tratamento Matemático da Ciência da Computação Estudo Matemático da Transformação da Informação Qual sua importância?

Leia mais

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão Projeto e Análise de Algoritmos NP Completude Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Universidade Federal de Alfenas versão da aula: 0.4 Introdução Problemas intratáveis ou difíceis são comuns

Leia mais

Computabilidade e Complexidade (ENG10014)

Computabilidade e Complexidade (ENG10014) Sistemas de Informação Computabilidade e Complexidade (ENG10014) Profa. Juliana Pinheiro Campos E-mail: jupcampos@gmail.com Modelo de computação poderoso concebido pelo matemático britânico Alan Turing

Leia mais

Melhores momentos AULA PASSADA. Complexidade Computacional p. 205

Melhores momentos AULA PASSADA. Complexidade Computacional p. 205 Melhores momentos AULA PASSADA Complexidade Computacional p. 205 MT multifita por MT fita única Duas máquinas são equivalentes se elas reconhecem a mesma linguagem. Teorema. Dada uma máquina de Turing

Leia mais

Linguagens Regulares. Prof. Daniel Oliveira

Linguagens Regulares. Prof. Daniel Oliveira Linguagens Regulares Prof. Daniel Oliveira Linguagens Regulares Linguagens Regulares ou Tipo 3 Hierarquia de Chomsky Linguagens Regulares Aborda-se os seguintes formalismos: Autômatos Finitos Expressões

Leia mais

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

Introdução Maquinas de Turing universais O problema da parada. Indecidibilidade. Rodrigo Gabriel Ferreira Soares DEINFO - UFRPE. DEINFO - UFRPE Julho, 2014 Motivação Introdução O que pode ser computado? E mais intrigantemente, o que não pode ser computado? Motivação Introdução O que pode ser computado? E mais intrigantemente, o

Leia mais

printing problem: dado um programa e um valor arbitrários, o problema de determinar se sim ou não se vai obter como output do programa esse valor;

printing problem: dado um programa e um valor arbitrários, o problema de determinar se sim ou não se vai obter como output do programa esse valor; 1 Introdução 1 No texto que se segue vão ser apresentados resultados sobre não decidibilidade de alguns predicados (sobre os naturais). Para certos predicados vai ser apresentada uma prova de que não é

Leia mais

Teoria da Computação. Complexidade computacional classes de problemas

Teoria da Computação. Complexidade computacional classes de problemas Teoria da Computação Complexidade computacional classes de problemas 1 Universo de problemas Problemas indecidíveis ou não-computáveis Não admitem algoritmos Problemas intratáveis Não admitem algoritmos

Leia mais

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

Linguagens Formais e Autômatos. Autômatos Finitos Determinísticos (AFD) Linguagens Formais e Autômatos Autômatos Finitos Determinísticos (AFD) Cristiano Lehrer, M.Sc. Linguagens Regulares A teoria da computação começa com uma pergunta: O que é um computador? É, talvez, uma

Leia mais

Teoria da Computação

Teoria da Computação Ciência da Computação Teoria da Computação (ENG10395) Profa. Juliana Pinheiro Campos E-mail: jupcampos@gmail.com Máquinas Universais Máquinas Universais podem ser entendidas de duas formas: Se é capaz

Leia mais

Teoria da Computação. Capítulo 1. Máquina de Turing. Prof. Wanderley de Souza Alencar, MSc.

Teoria da Computação. Capítulo 1. Máquina de Turing. Prof. Wanderley de Souza Alencar, MSc. Teoria da Computação Capítulo 1 Máquina de Turing Prof. Wanderley de Souza Alencar, MSc. Pauta 1. Introdução 2. Definição de Máquina de Turing 3. Variações de Máquina de Turing 4. A Tese de Church-Turing

Leia mais

Capítulo 2: Procedimentos e algoritmos

Capítulo 2: Procedimentos e algoritmos Capítulo 2: Procedimentos e algoritmos Para estudar o processo de computação de um ponto de vista teórico, com a finalidade de caracterizar o que é ou não é computável, é necessário introduzir um modelo

Leia mais

Universidade Federal de Alfenas

Universidade Federal de Alfenas Universidade Federal de Alfenas Linguagens Formais e Autômatos Aula 14 Máquinas de Turing humberto@bcc.unifal-mg.edu.br Última aula Autômatos com Pilha Controle de estado a b a a b X Y Y X O que já vimos...

Leia mais

Universidade Federal de Alfenas

Universidade Federal de Alfenas Universidade Federal de Alfenas Linguagens Formais e Autômatos Aula 16 Decidibilidade humberto@bcc.unifal-mg.edu.br Últimas Aulas Uma Máquina de Turing (MT) possui: uma fita infinita para representar a

Leia mais

a n Sistemas de Estados Finitos AF Determinísticos

a n Sistemas de Estados Finitos AF Determinísticos a n Sistemas de Estados Finitos AF Determinísticos 1 Relembrando Uma representação finita de uma linguagem L qualquer pode ser: 1. Um conjunto finito de cadeias (se L for finita); 2. Uma expressão de um

Leia mais

Melhores momentos AULA PASSADA. Complexidade Computacional p. 136

Melhores momentos AULA PASSADA. Complexidade Computacional p. 136 Melhores momentos AULA PASSADA Complexidade Computacional p. 136 Configurações controle q 7 cabeça 1 0 1 1 0 1 1 1 fita de leitura e escrita Configuração 1 0 1q 7 1 0 1 1 1 Complexidade Computacional p.

Leia mais

Aula 9: Máquinas de Turing

Aula 9: Máquinas de Turing Teoria da Computação Aula 9: Máquinas de Turing DAINF-UTFPR Prof. Ricardo Dutra da Silva Uma máquina de Turing é uma máquina de estados finitos que pode mover o cabeçote em qualquer direção, ler e manipular

Leia mais

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Aula 25

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Aula 25 ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO Aula 25 Cap 7.2 A classe P Profa. Ariane Machado Lima ariane.machado@usp.br 1 Cap 7.2 A classe P 2 Tempo polinomial e exponencial Ex: Máquina de tempo n 3 (tempo

Leia mais

Turing e Complexidade

Turing e Complexidade (baseado em material da disciplina PCS2214) PMR2300 Escola Politécnica da Universidade de São Paulo Máquina de Turing Máquina de Turing: modelo mais poderoso de computador, proposto pelo inglês Alan M.

Leia mais

Máquina de Turing. Controle finito

Máquina de Turing. Controle finito Máquinas de Turing Máquinas de Turing podem fazer tudo o que um computador real faz. Porém, mesmo uma Máquina de Turing não pode resolver certos problemas. Estes problemas estão além dos limites teóricos

Leia mais

Máquina de Turing. Controle finito

Máquina de Turing. Controle finito Máquinas de Turing Máquinas de Turing podem fazer tudo o que um computador real faz. Porém, mesmo uma Máquina de Turing não pode resolver certos problemas. Estes problemas estão além dos limites teóricos

Leia mais

Máquinas de Turing 3

Máquinas de Turing 3 Máquinas de Turing 3 Máquinas de Turing com Múltiplas Fitas Máquinas de Turing Não-deterministicas A Tese/Hipótese de Church-Turing Linguagens decidíveis por Máquinas de Turing (Recursivas) Linguagens

Leia mais

Teoria da Computação. Computabilidade

Teoria da Computação. Computabilidade Cristiano Lehrer Introdução O objetivo do estudo da solucionabilidade de problemas é investigar a existência ou não de algoritmos que solucionem determinada classe de problemas. Ou seja, investigar os

Leia mais

Os números primos de Fermat complementam os nossos números primos, vejamos: Fórmula Geral P = 2 = 5 = 13 = 17 = 29 = 37 = 41 = Fórmula Geral

Os números primos de Fermat complementam os nossos números primos, vejamos: Fórmula Geral P = 2 = 5 = 13 = 17 = 29 = 37 = 41 = Fórmula Geral Os números primos de Fermat complementam os nossos números primos, vejamos: Fórmula Geral P = 2 = 5 = 13 = 17 = 29 = 37 = 41 = Fórmula Geral 4 4 13 + 1 = 53 Em que temos a fórmula geral: Exatamente um

Leia mais

Complexidade de Algoritmos. Edson Prestes

Complexidade de Algoritmos. Edson Prestes Edson Prestes A classe P consiste nos problemas que podem ser resolvidos em tempo Polinomial (Problemas tratáveis) A classe NP consiste nos problemas que podem ser verificados em tempo polinomial (Problemas

Leia mais

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

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000) Teoria da Computação Referência Teoria da Computação (Divério, 2000) 1 L={(0,1)*00} de forma que você pode usar uma Máquina de Turing que não altera os símbolos da fita e sempre move a direita. MT_(0,1)*00=({0,1},{q

Leia mais

CIC 111 Análise e Projeto de Algoritmos II

CIC 111 Análise e Projeto de Algoritmos II CIC 111 Análise e Projeto de Algoritmos II Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 19 Paths and circuits Eulerian paths Hamiltonian paths De Bruijn sequences Knight s

Leia mais

Limites da Computação Algorítmica: Problemas Indecidíveis

Limites da Computação Algorítmica: Problemas Indecidíveis Capítulo 10 Limites da Computação Algorítmica: Problemas Indecidíveis Tendo estudado o que as máquinas de Turing podem fazer, estudaremos, agora, o que elas não podem fazer. Embora a tese de Turing nos

Leia mais

Aula 3: Autômatos Finitos

Aula 3: Autômatos Finitos Teoria da Computação Primeiro Semestre, 25 Aula 3: Autômatos Finitos DAINF-UTFPR Prof. Ricardo Dutra da Silva Um procedimento ue determina se uma string de entrada pertence à uma linguagem é um reconhecedor

Leia mais

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens Formais e Autômatos P. Blauth Menezes Linguagens Formais e Autômatos P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Linguagens Formais e Autômatos - P. Blauth Menezes 1 Linguagens

Leia mais

INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação

INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação bas eado em material produzido pelo prof Olinto Jos é Varela Furtado Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: silveira@inf.ufsc.br

Leia mais

MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016

MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016 MC102 Aula 26 Recursão Instituto de Computação Unicamp 17 de Novembro de 2016 Roteiro 1 Recursão Indução 2 Recursão 3 Fatorial 4 O que acontece na memória 5 Recursão Iteração 6 Soma em um Vetor 7 Números

Leia mais

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

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo Diferencia-se das máquinas de Turing e Post principalmente pelo fato de possuir a memória de entrada separada

Leia mais

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

Juliana Kaizer Vizzotto. Universidade Federal de Santa Maria. Disciplina de Teoria da Computação Universidade Federal de Santa Maria Disciplina de Teoria da Computação Quais são as capacidades e limitações fundamentais dos computadores? Funções Computáveis Algoritmo: descrição finitade uma computação

Leia mais

Complexidade computacional

Complexidade computacional Complexidade computacional CLRS sec 34.1 e 34.2 Algoritmos p. 1 Algumas questões Por que alguns problemas parecem ser (computacionalmente) mais difíceis do que outros? Algoritmos p. 2 Algumas questões

Leia mais

Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ.

Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ. Linguagens O conceito de linguagem engloba uma variedade de categorias distintas de linguagens: linguagens naturais, linguagens de programação, linguagens matemáticas, etc. Uma definição geral de linguagem

Leia mais

Projeto e Análise de Algoritmos NP Completude Parte 2. Prof. Humberto Brandão

Projeto e Análise de Algoritmos NP Completude Parte 2. Prof. Humberto Brandão Projeto e Análise de Algoritmos NP Completude Parte 2 Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Universidade Federal de Alfenas Departamento de Ciências Exatas versão da aula: 0.2 Última aula

Leia mais

Como saber se um problema está em NP e não está em P?

Como saber se um problema está em NP e não está em P? ? P = NP Uma das principais questões em aberto é se P = NP, isto é, se de fato tudo o que pode ser feito em tempo polinomial por uma MTND poderia ser feito por uma MTD em tempo polinomial, talvez com um

Leia mais

Resolução Exe 2.12 Monolítico Recursivo

Resolução Exe 2.12 Monolítico Recursivo Resolução Exe 2.12 Monolítico Recursivo Recursivo P R é R 1 onde R 1 def (se T1 então R 2 senão R 3 ) R 2 def F; R 3 R 3 def (se T2 então R 4 senão R 7 ) R 4 def G; R 5 R 5 def (se T1 então R 7 senão R

Leia mais

SCC-5832 Teoria da Computação

SCC-5832 Teoria da Computação Teoria da Computação SCC-5832 Teoria da Computação João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos

Leia mais

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

Máquinas de Turing para construção: Foram encontrados dois modelos que se destacaram em nossas pesquisas. Máquina de Turing É um dispositivo imaginário que formou a estrutura para fundamentar a ciência da computação moderna. Seu inventor, o matemático Alan Mathison Turing, mostrou que a computação das operações

Leia mais

Faculdade de Computação

Faculdade de Computação UNIVERSIDADE FEDERAL DE UBERLÂNDIA Faculdade de Computação Disciplina : Teoria da Computação - 1 0 Semestre 007 Professora : Sandra Aparecida de Amo Solução da Lista de Exercícios n o 1 Exercícios de Revisão

Leia mais

15/03/2018. Professor Ariel da Silva Dias Algoritmo e Contagem de Instruções. Prof. Ariel da Silva Dias -

15/03/2018. Professor Ariel da Silva Dias Algoritmo e Contagem de Instruções. Prof. Ariel da Silva Dias - Professor Ariel da Silva Dias Algoritmo e Contagem de Instruções 1 Um algoritmo pode ser visto como uma sequência de ações executáveis para a obtenção de uma solução para um determinado tipo de problema.

Leia mais

Linguagens Formais e Autômatos (LFA)

Linguagens Formais e Autômatos (LFA) Linguagens Formais e Autômatos (LFA) Aula de 18/11/2013 Linguagens Recursivamente Enumeráveis, Complexidade (Custo) de Tempo/Espaço, Transdutores para exibir complexidade de Tempo/Espaço 1 Linguagens Recursivamente

Leia mais

Variedades Adicionais das Máquinas de Turing

Variedades Adicionais das Máquinas de Turing LFA - PARTE 5 Variedades Adicionais das Máquinas de Turing 1 Máquinas de Turing com uma Fita Infinita de um Sentido A fita da máquina é infinita apenas à direita O quadrado da fita mais à esquerda contém

Leia mais

LINGUAGENS FORMAIS E AUTÔMATOS

LINGUAGENS FORMAIS E AUTÔMATOS LINGUAGENS FORMAIS E AUTÔMATOS O objetivo deste curso é formalizar a idéia de linguagem e definir os tipos de sintaxe e semântica. Para cada sintaxe, analisamos autômatos, ue são abstrações de algoritmos.

Leia mais

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

GBC015: INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Teoria de Algoritmos: Computabilidade e Máquina de Turing GBC015: INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Teoria de Algoritmos: Computabilidade e Máquina de Turing Ilmério Reis da Silva ilmerio@ufu.br www.facom.ufu.br/~ilmerio/icc UFU/FACOM/BCC Funções Def. Função

Leia mais

SCC Introdução à Teoria da Computação

SCC Introdução à Teoria da Computação SCC-0505 João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos http://www.icmc.usp.br/~joaoluis/ joaoluis@icmc.usp.br

Leia mais

SCC Teoria da Computação e Linguagens Formais

SCC Teoria da Computação e Linguagens Formais SCC-0205 João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos http://www.icmc.usp.br/~joaoluis/ joaoluis@icmc.usp.br

Leia mais

LINGUAGENS FORMAIS Modelos Determinísticos e Não Determinísticos. Usam-se modelos matemáticos para representar eventos (fenômenos) do mundo real.

LINGUAGENS FORMAIS Modelos Determinísticos e Não Determinísticos. Usam-se modelos matemáticos para representar eventos (fenômenos) do mundo real. LINGUAGENS FORMAIS Modelos Determinísticos e Não Determinísticos Modelos Matemáticos Usam-se modelos matemáticos para representar eventos (fenômenos) do mundo real. Ressalta-se contudo que é muito importante

Leia mais

Variantes de Máquinas de Turing

Variantes de Máquinas de Turing Variantes de Máquinas de Turing 1 Máquinas de Turing Input-Output TM s Input/output (ou IO ou transdutoras) diferem de TM s reconhecedoras por terem um estado de parada neutro q halt, ao invés de estados

Leia mais

Linguagens Formais e Problemas de Decisão

Linguagens Formais e Problemas de Decisão Linguagens Formais e Problemas de Decisão Mário S. Alvim (msalvim@dcc.ufmg.br) Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Formais e Problemas

Leia mais