• Nenhum resultado encontrado

1. Introdução - Introdução: breve histórico, representando com cadeias.

N/A
N/A
Protected

Academic year: 2019

Share "1. Introdução - Introdução: breve histórico, representando com cadeias."

Copied!
6
0
0

Texto

(1)

1. Introdução

A Teoria da Computação é uma área com um viés formal/matemático. Por isso, como em outros livros da Matemática, é comum que os livros deste assunto apresentem o assunto de forma mui-to direta. Assim, eles podem falhar em: (1) dar uma adequada motivação para o estudo da área e (2) em mostrar porque os modelos têm certas características que podem parecer esquisitas, para quem está começando. Nesta nota de aula, tentaremos preencher essas lacunas. (O restante do assunto pode ser seguido pelos livros).

1.1 Breve Histórico

• Problema proposto por David Hilbert (1900/1928): Criar um “procedimento” para, da-da uma afirmação matemática qualquer (da-dada-da em lógica de 1ª ordem), concluir correta-mente se tal afirmação é verdadeira ou falsa

o Um exemplo de afirmação matemática interessante que ainda não se sabe se é verdadeira (ela é chamada de conjectura de Goldbach):

“Todo número par maior ou igual a 4 é a soma de dois primos”

o Na disciplina de Matemática Discreta, vimos como desenvolver demonstrações de afirmações assim. Porém, demonstrações exigem criatividade.

Não vimos uma “receita” precisa para chegar à prova na disciplina.

o Grosseiramente, Hilbert queria era justamente uma “receita” assim. Na verdade, a “receita” não precisava explicar como construir a prova, bastava que ela se-guisse passos para responder (corretamente e sempre) se a prova existe.

• Em outras palavras:

o Hilbert propôs um problema: decidir se uma afirmação matemática é ou não verdadeira (vamos chamá-lo Problema de Decisão de Hilbert)

o Entre outras coisas, ele queria um algoritmo preciso para resolver este problema (para qualquer afirmação dada como entrada)

(2)

• Em 1929, Kurt Gödel apresentou uma prova de que que algumas afirmações matemáti-cas nunca poderiam (nem poderão) ser provadas.

o Mas isso não resolvia completamente a questão proposta por Hilbert...

• A grande barreira para avançar na questão é que não havia uma definição Matemática de algoritmo! Como provar matematicamente que não existe algoritmo para o Problema

de Decisão de Hilbert se “algoritmo” não é um objeto da Matemática?

o Então, a pergunta fundamental é: O que é um algoritmo?

• Em 1936, Alonzo Church propôs um modelo de algoritmo: as expressões lambda. Ele provou que não é possível criar algoritmo para o Problema de Decisão de Hilbert

com expressões lambda.

o Seria possível com outro modelo de algoritmo?

• Logo em seguida, de 1936 para 1937, Alan Turing propôs um novo modelo de algo-ritmo: as Máquinas de Turing.

o Turing provou que não é possível criar algoritmo para o Problema de Decisão

de Hilbert com Máquinas de Turing.

o Ele mostrou uma afirmação que nenhuma Máquina de Turing pode responder.

• O destaque do modelo de Turing foi a forma de operação das “máquinas”:

o Grosseiramente, elas são como máquinas mecânicas que, seguindo uma lógica fixa pré-definida, lêem e escrevem símbolos em “caixas” sequenciais.

o Inspiradas na forma dos humanos processarem informações simbólicas. Exemplo: como fazemos conta de adição?

o Posteriormente, elas inspiraram conceitualmente a criação dos computadores eletrônicos reais, na década de 40.

(3)

• O objetivo desta disciplina é apresentar diversos modelos matemáticos de

algorit-mo, os chamados de modelos de computação1

o Apresentaremos, sucessivamente, modelos de computação, dos mais simples aos mais complexos, até chegarmos às Máquinas de Turing.

o Para cada modelo, vamos discutir que problemas ele consegue (e não consegue) resolver e vamos citar algumas aplicações práticas do modelo.

1.2 Cadeias? Por quê?

• Os modelos da Teoria da Computação são definidos com base em cadeias (ou strings ou palavras), que são seqüências de símbolos. Os símbolos vêm de um conjunto finito

não-vazio chamado de alfabeto.

o Exemplos de cadeias sobre o alfabeto {a, b}: “a”, “bbaa”, “b”, “abaaa”, etc. o Exemplos de cadeias sobre o alfabeto {0, 1}: “11”, “0”, “011”, “01001”, etc.

• Vamos justificar por que usar cadeias, mostrando que toda informação representada com símbolos (que é como nós, humanos, representamos as informações) pode ser re-presentada por cadeias finitas.

• Números naturais como cadeias o No alfabeto {0, 1, ..., 9} ... o No alfabeto {0, 1} ... o No alfabeto {a} ...

• Números inteiros como cadeias o No alfabeto {0, 1, ..., 9, -} ... o No alfabeto {0, 1} ...

• Números com casas decimais finitas como cadeias o No alfabeto {0, 1, ..., 9, .} ...

• Pares de números naturais como cadeias o No alfabeto {a, b} ...

(4)

• Sequências de números naturais como cadeias o No alfabeto {0, 1, |} ...

• Imagens preto-e-branco de dimensão 4x4 como cadeias o No alfabeto {0, 1} ...

• Imagens preto-e-branco (de quaisquer dimensões) como cadeias o No alfabeto {p, b, |} ...

o No alfabeto {0, 1}...

o Conversão de qualquer alfabeto, para o alfabeto binário

• Conclusões:

o Toda informação simbólica pode ser representada com uma única cadeia. Isso permite simplificar a definição matemática dos modelos de algoritmo.

o È sempre possível mudar simplesmente para o alfabeto binário.

o (Mais do que isso: é possível trocar cadeias por simples números naturais!)

• Um conjunto de cadeias, nesta disciplina, é chamado de uma linguagem. Discutiremos, na próxima seção, qual a importância deste conceito.

1.3 Visão Geral dos Modelos de Algoritmos

• Relembrar a definição informal de algoritmo...

• Para a definição formal, precisamos destacar que todo algoritmo: o Resolve instâncias de algum problema P

o Recebe uma entrada (parâmetros do problema) e retorna uma saída (solução do problema)

o Esquema gráfico dos algoritmos em geral:

Algoritmo que resolve

o problema

P

(5)

• Entrada e saída podem ser tratadas matematicamente como cadeias quaisquer o Neste caso, P é dito um problema-função

• Exemplo de problema-função: o Problema da Soma

o Entrada: um par de números representado como uma cadeia (ex.: “134| 67”) o Saída: um número (ex.: “201”)

o (E o algoritmo para esse problema? Discutiremos ao longo do curso...)

• Porém, para simplificar, vamos limitar as saídas a valores “V/F” ou “aceita/rejeita” o Um problema que só permite saída sim/não é chamado de problema de decisão

• Assim, todo modelo de algoritmo (ou modelo de computação) que veremos nessa disci-plina “resolvem” algum problema de decisão. Na verdade, diremos que eles decidem

problemas de decisão.

o Esquema gráfico dos algoritmos, nesta disciplina:

• Será que isto limita demais? Quer dizer, há problemas-função que não podem ser ade-quadamente tratados como problemas de decisão?

o Para o interesse dessa disciplina, não! Em geral, os problemas-função podem ser reformulados como problemas de decisão sem grandes perdas.

o Segue um exemplo de um problema de decisão análogo a um

problema-função...

• Exemplo de problema de decisão análogo ao problema-função apresentado antes: Pro-blema de Decisão da Soma

o Entrada: três números a, b e c (representados como uma só cadeia)

o Saída: sim, se a+b ≤ c não, se a+b > c

o Exemplo: a entrada “134| 67| 200” daria resposta não

Algoritmo que

decide

o problema

Q

(6)

• Se você tiver um algoritmo para resolver o Problema de Decisão da Soma, como obter a resposta para o Problema da Soma original?

o Pense em como rodar várias vezes o algoritmo de decisão, variando a entrada, até ser capaz de inferir a resposta (a soma)...

• Porém, nesta disciplina ao invés de falarmos de problema de decisão, vamos falar com mais freqüência de de linguagens (conjuntos de cadeias). Vamos explicar a relação

en-tre esses dois conceitos...

• Veja que um problema de decisão cria uma separação conceitual entre (i) as cadeias que dão resposta positiva e (ii) as cadeias que dão resposta negativa. Assim, todo problema

de decisão pode ser adequadamente caracterizado pelo conjunto de cadeias

(=linguagem) que recebem resposta positiva.

• Logo, todo problema de decisão pode se tratado como uma linguagem.

• Por isso, os livros focam nos modelos dealgoritmos para decidir linguagens (pois is-so equivale a algoritmos para reis-solver/decidir problemas de decisão).

o Por isso, este será o esquema gráfico dos algoritmos nesta disciplina:

"Alegrem-se sempre no Senhor. Novamente direi: alegrem-se!"

(Filipenses 4:4)

Algoritmo que

decide

a linguagem

L

entrada

Referências

Documentos relacionados

Equipamentos de emergência imediatamente acessíveis, com instruções de utilização. Assegurar-se que os lava- olhos e os chuveiros de segurança estejam próximos ao local de

Tal será possível através do fornecimento de evidências de que a relação entre educação inclusiva e inclusão social é pertinente para a qualidade dos recursos de

6 Consideraremos que a narrativa de Lewis Carroll oscila ficcionalmente entre o maravilhoso e o fantástico, chegando mesmo a sugerir-se com aspectos do estranho,

Com o objetivo de compreender como se efetivou a participação das educadoras - Maria Zuíla e Silva Moraes; Minerva Diaz de Sá Barreto - na criação dos diversos

Na sua qualidade de instituição responsável pela organização do processo de seleção, o Secretariado-Geral do Conselho garante que os dados pessoais são tratados nos termos do

Outros problemas observados foram o do espaço físico das empresas serem muito restritos ao número de funcionários, a iluminação não atender às normas, o ruído em certas

A dose inicial recomendada de filgrastim é de 1,0 MUI (10 mcg)/kg/dia, por infusão intravenosa (foram utilizadas diversas durações: cerca de 30 minutos, 4 horas ou 24

 Para os agentes físicos: ruído, calor, radiações ionizantes, condições hiperbáricas, não ionizantes, vibração, frio, e umidade, sendo os mesmos avaliados