Você está na página 1de 101

Ciência da Computação – UFMA

2014.1

O PROBLEMA PARADA
DECIDIBILIDADE

josu.amaral@gmail.com
nandersonbruno@hotmail.com
hevelyssandes@hotmail.com
weidenrick@hotmail.com
stefanowalker@hotmail.com
E AÍ? QUAL É A PARADA?
 Introdução
 Determinam solubilidade ou não /Problema da
parada
 Aplicação com autômatos e Máquina de Turing

 Problema da decisão

 Auto Aplicação – Problema da Parada

 Outros Problemas insolúveis


QUE É UM PROBLEMA?
 Enunciado:
 George Polya:

 Quais são os dados (D)? c


 Quais são as respostas

possíveis (R)? D R
 Qual a condição (C)?

 Um problema é o objeto matemático


P=<D,R,c>, consistindo de dois conjuntos
não vazios...
EXEMPLO: DIAGNÓSTICO MÉDICO
Um problema de diagnóstico médico P envolve:
 O conjunto de dados disponível d e D, onde d são

os dados ( sintomas, resultados de laboratório, etc) que


pertencem ao conjunto D de dados possíveis.
• R é o conjunto de doenças possíveis.
 A condição que caracteriza uma solução

satisfatória consiste em encontrar o par <d,r> onde


 r E R é o diagnóstico desejado.
INTRO: PROBLEMA DA PARADA
 Turing mostrou que o funcionamento de sua
máquina e a aplicação das regras de formação de
um sistema formal não têm diferença.
 Seu dispositivo poderia resolver infinitos
problemas.
INTRO: PROBLEMA DA PARADA
 Em 1936 Turing provou formalmente o seguinte teorema:
Dado um programa P qualquer para uma Máquina de
Turing e uma entrada E qualquer de dados para esse
programa, não existe uma Máquina de Turing especifica
que pare após um número finito de passos, e que diga se P
em algum momento encerra sua execução ao processar E.
* A solução negativa deste problema computacional
implica também numa solução negativa para o problema
de Hilbert.
INTRO: PROBLEMA DA PARADA

Figura: Relacionamento entre os mundos formais, matemáticos e


computacionais
INTRO: PROBLEMA DA PARADA
• Trata-se em outras palavras decidir se um
programa é um algoritmo, ou seja, um
programa que acaba.
• Se o número de dados é finito, o problema
consiste em verificar para todos os dados.
• Caso contrário, é impossível provar que ele
pára para qualquer dado do conjunto de
dados possíveis.
PROBLEMA DA PARADA

É um problema de decisão clássico da Ciência da


Computação que consiste, basicamente, em
determinar se um dado programa sempre vai parar
(aceitar, ou rejeitar) para uma dada entrada ou se
vai executar infinitamente.

* Problema da Parada é um problema


de decisão não-solucionável.
PROBLEMA DA PARADA
 Por exemplo, em pseudocódigo, o programa:
enquanto Verdadeiro: continue
Não pára, pelo contrário, entra em loop infinito.
Por outro lado, o programa:
imprimir "Hello World!“
Pára muito rapidamente.
* Um programa mais complexo pode ser mais
difícil de se analisar...
POR QUE VOCÊ DEVERIA ESTUDAR
INSOLUBILIDADE?

 O problema deve ser simplificado ou alterado


antes que você possa encontrar uma solução
algorítmica.
 A segunda razão é que pode estimular sua
imaginação ...
APLICAÇÃO COM AUTÔMATOS

Autômatos finitos:
É uma lista de cinco objetos: conjunto de
estados, alfabeto de entrada, regras para
movimentação, e estados de aceitação.
Em linguagem matemática, uma lista de
cinco elementos é frequentemente
chamada 5-upla.
APLICAÇÃO COM AUTÔMATOS
Definição:
APLICAÇÃO COM AUTÔMATOS
Linguagem Regular
Definição: Uma linguagem é chamada de regular
se algum autômato finito a reconhece.

Operações Regulares
Definição: Sejam A e B linguagens. Define-se as
operações regulares união, concentração, e estrela
da seguinte forma:
 União: A U B = { x|x e A ou x e B}.

 Concatenação: A o B = { xy|x e A e y e B}.

 Estrela: A* = {x1x2... xk|k >= 0e cada xi


e A}.
APLICAÇÃO COM AUTÔMATOS
Não-determinismo
Quando uma máquina está num dado estado e lê o
prox. símbolo de entrada, sabemos que estado será
o prox. ele está determinado. Isso é comutação
determinística. Em uma maquina não
determinística, várias escolhas podem existir para
cada próximo estado em qualquer ponto.
APLICAÇÃO COM AUTÔMATOS
 Definição:
APLICAÇÃO COM AUTÔMATOS
APLICAÇÃO COM AUTÔMATOS
 Problemas decidíveis concernentes a linguagem
regulares.

Por exemplo, o problema da aceitação para AFD’s


de testar se um autômato finito específico aceita
uma dada cadeia pode ser expresso como uma
linguagem AAFD . Seja a linguagem:

AAFD = {(B,w)|B é um AFD que aceita a cadeia de entrada w}.


APLICAÇÃO COM AUTÔMATOS
 AAFD é uma linguagem decidível.
A ideia da prova é muito simples. Precisamos
somente de apresentar uma MT M que decide a
AAFD.
M = Sobre a entrada (B,w), onde B é um AFD, e
w, uma cadeia:
 1. Simule B sobre a entrada w.

 2. Se a simulação termina em um estado de


aceitação, aceite. Se ela termina em
um estado de não aceitação, rejeite.
 Prova:
 Primeiro, vamos examinar a entrada (B,w). Ela é
uma representação de um AFD B juntamente com
uma cadeia w. Uma representação razoável de B é
simplesmente uma lista de seus cinco componentes,
. .Quando M recebe sua entrada, M
primeiro verifica se ela representa propriamente um
AFD B uma cadeia w. Se não M rejeita.
Então M leva adiante a simulação de uma maneira
direta. Ela mantém registro do
estado atual de B e da posição atual de B sobre a
entrada w. escrevendo essa informação
na sua fita. Inicialmente, o estado atual de B é q0 e a
posição atual de B sobre a entrada
é o símbolo mais à esquerda de w. Os estados e a posição
são atualizados conforme a função de transição
especificada .
 Quando M termina de processar o último símbolo
de w, M aceita a entrada se B está num estado de
aceitação; M rejeita a entrada se B está em um
estado de não aceitação.
SOLUCIONABILIDADE
SOLUCIONABILIDADE
PROPOSTA :
Se um problema não pode ser resolvido pela M de Turing, é
insolúvel completamente.

NÃO SOLUBILIDADE:
Inexistência de um método geral efetivo para decidir se um
programa pára para qualquer entrada

Exemplos:
PROBLEMA PARCIALMENTE COMPUTÁVEL:Sobre um
problema a MT pára se a aceita, ou entra em loop se
rejeita(ou vice e versa).

PROBLEMA NÃO COMPUTÁVEL:


Se nem pára se aceitar ou se rejeitar
APLICAÇÃO COM MÁQUINA DE TURING
 Exemplo de Máquina de Turing
 A máquina de Turing a seguir tem um alfabeto
{'0', '1'}, onde 0 representa o símbolo branco. Ela
espera uma série de 1's na fita, com o cabeçote
inicialmente no 1 mais à esquerda, e duplica os
1's com um 0 no meio. Por exemplo, "111" torna-
se "1110111". O conjunto dos estados é {s1, s2, s3,
s4, s5} e o estado inicial é s1. A tabela de ação é
dada a seguir.
APLICAÇÃO COM MÁQUINA DE TURING
------------ ------------
s1 1 -> 0 D s2 s4 1 -> 1 E s4
s2 1 -> 1 D s2 s4 0 -> 0 E s5
s2 0 -> 0 D s3 s5 1 -> 1 E s5
s3 0 -> 1 E s4 s5 0 -> 1 D s1
s3 1 -> 1 D s3

A primeira linha desta tabela pode ser lida como: "Se a


máquina estiver no estado s1 e o símbolo lido pelo
cabeçote for 1, então escreva o símbolo 0, mova uma
posição para a direita e mude o estado para s2".
APLICAÇÃO COM MÁQUINA DE TURING
Passo Estado Fita Passo Estado Fita
-------- ---------
1 s1 11 9 s2 1001
2 s2 01 10 s3 1001
3 s2 010 11 s3 10010
4 s3 0100 12 s4 10011
5 s4 0101 13 s4 10011
6 s5 0101 14 s5 10011
7 s5 0101 15 s1 11011
8 s1 1101 -- pára –
APLICAÇÃO COM MÁQUINA DE TURING
 O comportamento desta máquina pode ser descrito como
um laço (loop): ele inicia em s1, substitui o primeiro 1 com
um 0, então usa o s2 para mover para a direita, passando
pelos 1's e pelo primeiro 0 encontrado. S3 então passa pela
próxima seqüência de 1'd (inicialmente não há nenhuma) e
substitui o primeiro 0 que encontra por um 1. S4 move de
volta para a esquerda, passando pelos 1's até encontrar um
0 e vai para o estado s5. S5 então move para a esquerda,
passando pelos 1's até achar o 0 que foi originalmente
escrito por S1. Ele substitui o 0 por 1, move uma posição
para a direita e entra no estado s1 novamente para outra
execução do laço. Isso continua até s1 achar um 0 (este é o 0
que fica entre as duas cadeias de 1's), situação na qual a
máquina pára.
MÉTODO DA DIAGONALIZAÇÃO

Linguagens Decidíveis

Enfocaremos aqui alguns exemplos de linguagens que


são decidíveis por algoritmos, fato este intimamente
ligado ao reconhecimento e compilação de
programas em uma linguagem de programação.
Dentre os problemas decidíveis, destacamos os
concernentes às linguagens regulares e às
linguagens livres-do-contexto.
FUNÇÃO – CODIFICAÇÃO DE PROGRAMAS
PROBLEMA DA AUTO APLICAÇÃO
 Problema Não Solucionável (mas parcialmente solucionável)
 Utilizado na demonstração de que outros
programas também são Não-Solucionáveis
PROBLEMA DA AUTO APLICAÇÃO
Investigação se a LAA é Recursiva ou Enumerável Recursivamente
Natureza Artificial Dado um programa monolítico arbitrário P para a Máquina
Aplicação Restrita

Definição da LAA:
O PROBLEMA DA AUTO APLICAÇÃO É
PARCIALMENTE SOLUCIONÁVEL
Suposição:
O PROBLEMA DA AUTO APLICAÇÃO É
NÃO-SOLUCIONÁVEL
O PROBLEMA DA AUTO APLICAÇÃO É
NÃO-SOLUCIONÁVEL
MÉTODO DA REDUÇÃO
REDUÇÃO
O PROBLEMA DA PARADA “EM SI”

Dada uma Máquina Universal M qualquer e


uma palavra w qualquer sobre o alfabeto,
existe um algoritmo que verifique se M pára,
aceitando ou rejeitando, ao processar a
palavra w?
PROBLEMA DA PARADA É
NÃO-SOLUCIONÁVEL
OUTROS PROBLEMAS DE DECISÃO
O PROBLEMA DA PARADA É
PARCIALMENTE SOLUCIONÁVEL
Por dedução, a máquina em execução pode não
parar. Mas para determinadas entradas
eventualmente sim, pode parar.
CONCLUSÃO (OU LOOP INFINITO)
 O Problema da Parada é Indecidível
 E é Parcialmente Solúvel
LOOP

.
LOOP

..
LOOP

...
LOOP

....
LOOP

.....
LOOP

......
LOOP

.......
LOOP

........
LOOP

.........
LOOP

..........
LOOP

...........
LOOP

............
LOOP

.............
LOOP

..............
LOOP

...............
LOOP

................
LOOP

.................
LOOP

..................
LOOP

...................
LOOP

....................
LOOP

.....................
LOOP

......................
LOOP

.......................
LOOP

........................
LOOP

.........................
LOOP

...........................
LOOP

.............................
LOOP

...............................
LOOP

.................................
LOOP

...................................
LOOP

.....................................
LOOP

.......................................
LOOP

.........................................
LOOP

...........................................
LOOP

.............................................
LOOP

...............................................
LOOP

.................................................
LOOP

...................................................
LOOP

...................................................

Você também pode gostar