Você está na página 1de 48

Historico e Conceitos

Decidabilidade e Computabilidade

Historico e Conceitos

Visao geral

Denicao: Conceitos teoricos (como os modelos) que habilitam a pratica (construcao de sistemas computacionais), aplicando ` a teoria a pratica. Historico: Conceitos usados desde a Grecia antiga
Algoritmos (Euclides: calculo do MDC) Reducao de Problemas

Historico e Conceitos

Areas de Atuacao

Pode ser encontrada em varias areas:


Biologia (e. g. redes neurais) Eletronica (e. g. circuitos logicos) Matematica (e. g. logica matematica) Lingustica (e. g. gramaticas) Em computacao tudo (Compiladores, Linguagem natural, Inteligencia

Articial, Otimizacao Problemas genericos de linguagem)

Historico e Conceitos

Objeto de Estudo da Teoria

Achar um modelo computacional generico Implementar qualquer funcao computavel O ponto de partida foi o trabalho de Hilbert Procedimento para demonstrar se uma formula matematica era

verdadeira

Historico e Conceitos

Tese de Hilbert

Todo problema bem denido tem solucao Caso houvesse fracasso na resolucao, seria por:

escolha insuciente de hipoteses raciocnio errado

Historico e Conceitos

Teorema da Incompletude

Godel com o trabalho de Incompleteness (Incompletude) mostrou que

a tese de Hilbert nao estava correta

mostrou que um sistema formal e consistente (usando numeros naturais, adicao e multiplicacao) nao era suciente para provar que toda sentenca era um teorema (numeros godel)

Historico e Conceitos

Meritos de Godel

1. Foi o primeiro a denir a nocao de procedimento efetivo 2. Fez uso do naturais para codicar smbolos, formulas e sequencia de formulas de modo bem denido. 3. Em sua prova, as formulas eram representadas por classes de funcoes

Surgiu a nocao de computabilidade e procedimento efetivo para a de problemas solucao Descobriu a classe de funcoes primitivas recursivas

Historico e Conceitos

Tese de Church

Seguindo Godel, provou que o problema de Hilbert nao tinha solucao,

usando: 1. Calculo Lambda, e 2. Funcoes recursivas


Surgia a equivalencia de formalismos genericos

Hipotese de Church Assumida como verdadeira, mas nao demonstravel

Historico e Conceitos

Maquina de Turing

Turing propos a Maquina de Turing Modelo para representacao de procedimento efetivo Simular atitudes humanas relacionadas a computacao `

Historico e Conceitos

Outras Maquinas

Apos Turing, surgiram outros formalismos Porem, todo formalismo tem, no maximo, o mesmo poder

computacional das Funcoes Recursivas (ou Lambda Cauculus)


Maquina de Turing (36) Maquina Norma (76) Sistema Canonico de Post (43) Algoritmo de Markov e linguagem Snobol (54) Maquina de Registradores (63) RASP - Ramdom Access Stored Programa (64)

Historico e Conceitos

Programas e Maquinas

A nocao de programa e denida como um procedimento efetivo Entao um programa pode ser descrito por um dos formalismos citados

anteriormente

Computabilidade Complexidade

Denicoes e Conceitos

Computabilidade Complexidade

Complexidade

Analisa os aspectos que fazem alguns problemas computacionalmente

difceis e outros faceis


A ideia e selecionar e classicar problemas de acordo com suas

diculdades computacionais
A teoria da complexidade afeta diretamente, por exemplo, o campo da

criptograa pois requerem problemas computacionais mais difceis (codigos secretos)

Computabilidade Complexidade

Computabilidade

Godel, Turing e Church descobriram certos problemas que nao podiam

ser resolvidos por computador


Um desses problemas era determinar se uma declaracao matematica e

verdadeira
Apesar de ser simples, os computadores nao conseguem responder

isso
Devido a esses resultados, ideias de modelos teoricos que ajudam a

lidar com a construcao de computadores foram surgindo

Computabilidade Complexidade

Relacao entre complexidade e computabilidade

Complexidade: o objetivo e classicar problemas como faceis e

difceis
Computabilidade: a classicacao dos problemas e com relacao aos

problemas serem ou nao resolvveis (introduz varios conceitos usado na teoria da complexidade)

Computabilidade Complexidade

Denicoes

Procedimento e um conjunto nito de passos executados num tempo xo e com um esforco xo, como um programa em linguagem de maquina, por exemplo, determinar se um numero e ou nao primo. Algoritmo e um procedimento que sempre para, ou seja, a execucao chega ao seu nal independente das entradas, por exemplo, dado um programa determinar se para alguma entrada este programa entrara em loop.

Computabilidade Complexidade

Exemplo de procedimento

Algoritmo de Euclides: calcula o maximo divisor comum (mdc) de dois

inteiros positivos m e n 1. Adote como valores iniciais de x e y os valores m e n, respectivamente. 2. Adote como valor de r o resto da divisao do valor de x pelo valor de y. 3. Adote como o novo valor de x o valor de y, e como novo valor de y o valor de r. 4. Se o valor de r e nulo, entao o valor de x e o mdc procurado, e o calculo termina; caso contrario, volte a executar as instrucoes do procedimento a partir do passo 2.

Computabilidade Complexidade

Propriedades de um Procedimento (1)

Descricao Finita: todo procedimento possui dados pertencentes a um conjunto de objetos (como m e n sao inteiros positivos) e, espera-se um certo numero de resultados (como o valor nal de x), que mantem uma relacao especca com os dados (funcao). Agente computacional: supoe-se que exista um agente computacional humano, mecanico, eletronico, que execute as instrucoes do procedimento.

Computabilidade Complexidade

Propriedades de um Procedimento (2)

Nao ambgua: cada instrucao deve ser bem denida. No exemplo, haveria problemas se x e y pudessem ser inteiros quaisquer, a menos que denssemos o que seria o resto de divisao para inteiros nao positivos. Efetividade: as instrucoes devem ser efetivas, ou seja, devem ser tao simples que poderiam ser executadas, em princpio, por uma pessoa e num tempo nito. No exemplo, elas nao o seriam se, por exemplo, x e y pudessem ser numeros reais quaisquer em representacao decimal, possivelmente de comprimento innito.

Computabilidade Complexidade

Termino de Procedimentos

Alguns procedimentos terminam quaisquer que sejam os valores dos

dados de entrada
Outros procedimentos terminam apenas para alguns valores

Computabilidade Complexidade

Exemplo de Termino
Exemplo 1 (MDC): Calcula o maximo divisor comum entre dois inteiros

positivos m e n.

Computabilidade Complexidade

Exemplo do MDC

Pergunta: Este procedimento termina quaisquer que sejam os valores

dos dados de entrada?


Mostrar isto, neste exemplo, equivale a provar a seguinte proposicao:

Se no passo 2 do procedimento os valores de x e y sao inteiros e positivos, entao os passos 2, 3 e 4 serao executados apenas um numero nito de vezes, com os calculos terminando no passo 4.

Computabilidade Complexidade

Prova para o MDC


Demonstracao por inducao sobre o valor de y:

1. se y = 1, entao apos o passo 2, r = 0. Portanto, os passos 2, 3 e 4 sao executados uma unica vez e o calculo termina no passo 4. 2. suponhamos que a proposicao e verdadeira para qualquer x > 0 e qualquer y, com 1 y < k , e demonstraremos que ela e verdadeira para y = k. 3. por denicao do resto da divisao de inteiros positivos, teremos, apos a execucao do passo 2, 0 r < k . 4. Se r = 0, entao a execucao termina, numa unica vez. Se r > 0, com a execucao dos passos 3 e 4, teremos x = k > 0 e y = r com 0 < r < k , e a execucao volta ao passo 2. 5. Por hipotese de inducao, os passos 2, 3 e 4 serao executados um numero nito p de vezes, com os calculos terminando no passo 4. Ao todo teremos, entao, p + 1 execucoes para y = k . 6. Notemos, ainda, que os valores iniciais x = m e y = n resultantes da execucao do passo 1 satisfazem as condicoes da proposicao acima. 7. Conclui-se, entao, que o Algoritmo de Euclides termina para quaisquer inteiros positivos m e n.

Computabilidade Complexidade

Exemplo 2 (Perfeito)
Procedimento para determinar o menor numero perfeito maior do que

` um inteiro positivo m dado. Um numero k e perfeito se for igual a soma de todos os seus divisores exceto o proprio k .

Computabilidade Complexidade

Perfeito: procedimento ou algoritmo?

Este procedimento sempre termina?

Computabilidade Complexidade

Perfeito: procedimento ou algoritmo?

Este procedimento sempre termina? Apenas para certos valores de m.

Computabilidade Complexidade

Perfeito: procedimento ou algoritmo?

Este procedimento sempre termina? Apenas para certos valores de m. Por exemplo, se m = 4, entao ele para com x = 6, pois 6=1+2+3. Porem, no caso geral, a resposta nao e conhecida, pois a existencia ou nao de um numero innito de numeros perfeitos e um problema em aberto. Se existirem innitos numeros perfeitos, entao a execucao do procedimento termina para qualquer m; caso contrario, se K e o maior numero perfeito, entao o procedimento executa uma sequencia innita de calculos.

Computabilidade Complexidade

Exemplo 3 (Somatorio)
Calculo de s

= i, com m inteiro positivo.


i =0

Computabilidade Complexidade

Somatorio e algoritmo?

Pergunta: Esse procedimento sempre para?

Computabilidade Complexidade

Somatorio e algoritmo?

Pergunta: Esse procedimento sempre para? Termina apenas para valores pares de m, pois os valores da sequencia

sao 0, 2, 4, 6, . . .. Para valores mpares, a igualdade x = m nunca e verdadeira e a execucao do procedimento nao termina.

Computabilidade Complexidade

Resumindo...

1. O Algoritmo de Euclides e realmente um algoritmo; 2. Nada podemos armar sobre o procedimento que determina o menor numero perfeito maior do que um inteiro positivo m dado; 3. O procedimento que efetua o calculo do somatorio nao e um algoritmo.

Computabilidade Complexidade

Concluindo...

Decidir se um procedimento e um algoritmo nao e tarefa trivial! Todo procedimento e um metodo para o calculo de alguma funcao,

eventualmente nao denida para certos argumentos. O procedimento visto, que calcula o somatorio de i variando de 0 ate m (sendo m um inteiro positivo) e entao uma funcao parcial, descrita por: h (m ) =

i =0

i,

se m e par, e nao denida se m e mpar

Programas, computabilidade e LFA

Representacao e Contextualizacao

Programas, computabilidade e LFA

Programas e Linguagens de Programacao


LP: maneira mais conveniente para a representacao de procedimentos

no computador.
Uma LP e denida por um conjunto de smbolos, chamado alfabeto, e

um conjunto de regras que especicam como compor as representacoes de procedimentos e quais sao as acoes associadas a estas representacoes.
Um programa e uma sequencia de smbolos de uma LP que representa

um ou mais procedimentos.
As LP tem caractersticas variadas, dependendo de sua nalidade. Ha

desde as muito simples, porem de grande interesse para a teoria da computacao (ex. a linguagem da Maquina de Turing), como as de mais alto nvel, usadas para proposito geral e comercialmente.

Programas, computabilidade e LFA

Universalidade das LP

Pergunta:

Toda LP e capaz de representar todos os procedimentos efetivos, isto e, e universal?


Surgimento da Tese de Church

Programas, computabilidade e LFA

Tese de Church
Qualquer procedimento pode ser representado em Linguagem de

Turing (analogamente, pode ser computado por uma MT).


Essa tese nao pode ser demonstrada, devido a nocao intuitiva de `

procedimento.
Uma maneira de negar a tese e encontrar um procedimento que nao

pudesse demonstradamente ser computado por uma MT.


Isso nao ocorreu, e devido ao grande numero de dados experimentais,

essa tese tem sido aceita pelos cientistas da computacao.


Outro fato notavel que suporta a Tese de Church: as varias tentativas

independentes de formalizar o conceito de procedimento efetivo resultaram em formalismos equivalentes ao de Turing.

Programas, computabilidade e LFA

Conjuntos RE e Rec

Conjuntos Recursivamente enumeraveis sao representados por um procedimento. Conjuntos Recursivos sao representados por um algoritmo.
Algoritmos e procedimentos podem ser denidos pelos modelos

formais (automatos e gramaticas), logo os conjuntos recursivos e recursivamente enumeraveis tambem podem ser denidos por tais modelos.

Programas, computabilidade e LFA

Problemas Decidveis e Indecidveis

Um problema e decidvel se e somente se for resolvido por um

algoritmo, para qualquer entrada do seu domnio.


Um problema e decidvel se o conjunto de solucoes para o problema e

um conjunto recursivo e (semi) decidvel caso tal conjunto seja recursivamente enumeravel.
Decidabilidade e tratada formalmente na teoria das linguagens formais

e automatos. A classe de problemas indecidveis e signicativamente representada pelo problema da parada.

Programas, computabilidade e LFA

Classicacao dos problemas

A teoria classica os problemas computacionais em tres classes:

1. Problemas indecidveis: impossveis de serem solucionados; 2. Problemas intrataveis: possveis com recursos ilimitados, mas impossveis com recursos limitados; 3. Problemas trataveis: possveis de serem solucionados com recursos limitados.

Programas, computabilidade e LFA

Consequencia dessa classicacao


Esta classicacao engloba problemas de toda natureza, desde os

basicos ate problemas praticos da computacao.


Algumas questoes respondidas pela teoria da computacao sao:

1. Existe programa para solucionar um determinado problema? 2. De que forma um programa pode ser especicado? 3. Qual o poder de expressao de um determinado modelo de especicacao? 4. Dado um programa qualquer ele sempre tem parada garantida? 5. Dois programas P1 e P2 sao equivalentes entre si? 6. Uma determinada solucao e a melhor solucao para um determinado problema? 7. Qual o signicado de um determinado programa? 8. Como obter (construir) um programa correto?

Programas, computabilidade e LFA

Como tratar os conceitos teoricos

O tratamento formal desses conceitos e realizado atraves de:


Maquinas de turing (Turing 1936) Gramaticas (Chomsky 1959) Algoritmos de markov (Markov 1951) Lambda Cauculus (Church 1941) Sistemas post e sistemas de producao (Emil Post 1936) Funcoes recursivas (kleene 1936)

Programas, computabilidade e LFA

Algumas conclusoes

Qualquer procedimento (algoritmo) descrito em algum formalismo pode

ser descrito por qualquer outro, isto e, equivalencia de formalismo.


Segundo a tese de Church, todo processo (um procedimento) pode ser

realizado por uma maquina de turing.


A tese nao foi provada formalmente e nem contradita, mas continua

sendo aceita.
A equivalencia dos formalismos e das maquinas de turing reforca a

tese de Church.

Programas, computabilidade e LFA

Teoria das Linguagens formais e automatos


O que e a teoria das linguagens formais e automatos? Primeiramente, o que e uma linguagem formal? E antes ainda, o que e uma linguagem? Para o estudo da teoria das linguagens formais e automatos e

necessario, primeiramente, saber o que e uma linguagem. Linguagem e um conjunto de elementos (smbolos) e metodos (regras) para combinar estes elementos, usado e entendido por uma determinada comunidade.

Linguagens naturais Linguagens de programacao Linguagens regulares

Programas, computabilidade e LFA

Reconhecedores e geradores
As representacoes nitas sao classicadas em sistemas

reconhecedores e sistemas geradores: Reconhecedores: sao mecanismos formais que permitem vericar se uma sentenca pertence ou nao a uma linguagem, os chamados automatos. Automatos nitos e maquinas de turing sao importantes classes de automatos. Sistemas geradores: sao mecanismos formais que permitem a geracao sistematica das sentencas de uma linguagem, as chamadas gramaticas. Por exemplo, as Gramaticas de Chomsky. Linguagens formais: sao linguagens que podem ser representadas de modo nito e preciso atraves de modelos e dispositivos matematicos. Linguagem recursiva: e uma linguagem para a qual existe um algoritmo que reconheca/gere sentencas que compoem a linguagem. Linguagem recursivamente enumeravel: e uma linguagem cujas sentencas sao reconhecidas/geradas por procedimentos.

Programas, computabilidade e LFA

Linguagens formais e automatos

A teoria de LFA estuda de modelos matematicos que possibilitam a

especicacao e o reconhecimento de linguagens, suas classicacoes, estruturas, propriedades, caractersticas e inter-relacionamento.


Sao importantes por dois pontos: apoia aspectos teoricos da Teoria

da computacao (decidabilidade, computabilidade, complexidade computacional), como fundamenta diversas aplicacoes computacionais (processamento de linguagens, reconhecimento de padroes, modelagem de sistemas).

Programas, computabilidade e LFA

Gramaticas e Linguagens
Uma gramatica dene uma estrutura sobre um alfabeto de forma a

permitir que apenas determinadas combinacoes sejam validas, isto e, sejam consideradas sentencas.
O que e uma gramatica?

Um sistema gerador; Um sistema de reescrita; Uma maneira nita de descrever (representar) uma linguagem; Um dispositivo formal usado para especicar de modo nito e preciso uma linguagem potencialmente innita.

Uma gramatica e formada por smbolos nao terminais, terminais (os da

linguagem), producoes e o smbolo inicial. As derivacoes (ou reducoes) de uma gramatica sao obtidas atraves das producoes.
Linguagem: L(G), linguagem gerada pela gramatica G. Gramaticas equivalentes: G1

= G2 L(G1 ) = L(G2 )

Programas, computabilidade e LFA

Tipos de gramaticas

Tipo 0: gramaticas sem restricoes ou recursivamente numerada ou com estrutura de frase. (Maquinas de Turing) Tipo 1: gramatica sensvel ao contexto (GSC). (Automato limitado linear) Tipo 2: gramatica livre de contexto (GLC). (Automato de pilha) Tipo 3: gramatica regular (GR), expressoes regulares. (Automato nito)

Programas, computabilidade e LFA

Linguagens LSC, LLC e LR

Linguagens representadas (geradas) por GSC, GLC, GR sao

respectivamente LSC, LLC e LR.

Você também pode gostar