Limitações dos Computadores
Baseado em Computers Ltd. – What they really can’t do,
David Harel. Oxford University Press, 2000.
Computadores e Redes de Comunicação
Mestrado em Gestão de Informação, FEUP 2004/07
Sérgio Sobral Nunes
mail: [email protected]
web: www.fe.up.pt/~ssn
Algoritmos
Contexto
• Os computadores são máquinas poderosas. Permitem
controlar aviões, instalações complexas, elevados fluxos de
dados em redes de comunicação.
• Apesar da elevada complexidade, todos os computadores
podem ser vistos como uma grande colecção de interruptores
(ou bits), ligados ou desligados.
• Estes interruptores são controlados por algoritmos, programas
ou processos computacionais, que respondem a dados
recebidos.
Sérgio Nunes
Comunicações e Redes de Computadores
3
Algoritmo - Analogia
Entrada
Ingredientes
Software
Hardware
Receita
Forno
Utensílios
Bolo
Saída
Sérgio Nunes
Comunicações e Redes de Computadores
4
Problemas Algorítmicos
• Os algoritmos são desenhados para resolver
problemas algorítmicos.
Qualquer
entrada legal
Especificação
de todas as
entradas legais
+
Algoritmo
Caracterização
da saída
desejada como
função da
entrada.
Sérgio Nunes
A saída
pretendida
Comunicações e Redes de Computadores
5
Exemplos de Problemas
• Entrada: Dois inteiros, A e B.
• Saída: O número A + 4B
• Entrada: Um inteiro positivo N.
• Saída: O somatório dos inteiros de 1 a N.
• Entrada: Um inteiro positivo N.
• Saída: “Sim” se N é primo e “Não” se não é.
• Entrada: Dois textos em português.
• Saída: Uma lista das palavras comuns aos dois textos.
Sérgio Nunes
Comunicações e Redes de Computadores
6
Validação dos Algoritmos
• Validar um algoritmo é uma tarefa complexa.
• Validação parcial não é aceitável, é necessário validar o
algoritmo para todas as entradas legais.
• Erros de sintaxe – a escrita dos programas contém erros.
• Erros de lógica – a estratégia gizada no algoritmo está errada.
Sérgio Nunes
Comunicações e Redes de Computadores
7
Máquina de Turing
• Em 1936, Alan Turing apresentou o modelo conceptual de um
computador especialmente pensado para a análise da natureza
e limites da computação.
• A Máquina de Turing é composta por uma fita infinita com
posições e uma cabeça de leitura/escrita. A fita pode ser
deslocada em ambas as direcções e cada posição pode ser lida
ou escrita.
Sérgio Nunes
Comunicações e Redes de Computadores
8
Máquina de Turing
• A Máquina de Turing tornou-se o modelo teórico base para o
desenvolvimento de uma teória da computação.
• Apesar de serem extremamente simples (facilitando o
desenvolvimento de teorias), as Máquinas de Turing capturam
tudo o que pode ser feito computacionalmente.
• Tudo o que pode ser feito num computador actual, pode ser
feito numa Máquina de Turing. Nenhum computador físico
existente consegue fazer mais do que uma Máquina de Turing.
• Se uma Máquina de Turing consegue resolver um problema, o
problema designa-se de computável. Caso contrário é um
problema não computável.
Sérgio Nunes
Comunicações e Redes de Computadores
9
Problemas Impossíveis
Problemas Impossíveis
• Existem problemas que não podem ser resolvidos por
nenhum computador, presente ou futuro, qualquer que seja o
programa a ser executado, mesmo com recursos ilimitados
(tempo, armazenamento, outros).
• O conjunto de todos os problemas algorítmicos pode ser
dividido em dois subconjuntos: problemas computáveis e
problemas não computáveis.
• Todos os problemas com um conjunto finito de entradas são
computáveis. No limite podemos escrever a saída a apresentar
para cada entrada.
Sérgio Nunes
Comunicações e Redes de Computadores
11
Problemas Não Computáveis
• Problema da Paragem, 1936 (Halting Problem)
• “Dada a descrição de um programa e a entrada inicial,
determinar se o programa, quando executado com a entrada
definida, alguma vez termina (halts) ou, alternativamente,
executa para sempre.”
• Demonstra-se que não existe um algoritmo para este problema.
• Teorema da Incompletude de Gödel, 1931
• “Num sistema lógico formal consistente, existem afirmações
verdadeiras que não podem ser provadas.”
Sérgio Nunes
Comunicações e Redes de Computadores
12
Problema da Paragem
•
O problema da paragem permite explicar porque é que os computadores não
conseguem prever problemas e evitar crashes ou bloqueios.
•
“Existe um programa que, para uma qualquer máquina de Turing e uma
qualquer entrada de dados, determine se a máquina pára (halts)?”
•
Prova
–
Assume-se a existência de um algoritmo Halt(p,d) que determina se o programa p
perante a entrada d pára (“sim”) ou não, entrando em ciclo infinito (“não”).
–
Um outro algoritmo Trouble(p) invoca o algoritmo Halt usando a entrada recebida e
escreve “sim” se o Halt(p,p) determinar “não”, caso contrário entra num ciclo infinito.
–
Correspondendo T ao algoritmo Trouble, o que acontece com Halt(T,T)?
–
–
Se Halt(T,T)=“não” Touble(T)=“sim” Halt(T,T) deveria ter sido “sim”.
Se Halt(T,T)=“sim” Touble(T) entra em ciclo Halt(T,T) deveria ter sido “não”.
Sérgio Nunes
Comunicações e Redes de Computadores
13
Problemas Não Viáveis
Problemas Não Viáveis
• Mesmo que o problema seja computável, e um algoritmo
correcto exista, a execução pode ser demasiado dispendiosa no
uso dos recursos, tornando-se impraticável.
• Um programa de computador consume recursos,
nomeadamente tempo (acções executadas) e espaço
(armazenamento dos dados utilizados).
• Diferentes algoritmos para o mesmo problema podem variar
significativamente nos recursos consumidos.
• A diferença entre funções polinomiais (N2) e funções
exponenciais (2N) é crucial.
Sérgio Nunes
Comunicações e Redes de Computadores
15
Ordens de Complexidade
• Algoritmo para Ordenação – O(N2)
Ordenar de forma crescente um conjunto de números.
– Percorrer a lista de números e obter o menor.
– Trocar este valor com aquele na primeira posição.
– Voltar ao primeiro passo excluindo o elemento inicial.
– http://www.cs.ubc.ca/spider/harrison/Java/sorting-demo.html
• Caixeiro Viajante – O(N!)
Para um conjunto de cidades, descobrir qual é a ordem de visitas que permite
percorrer um caminho total mais curto visitando cada cidade apenas uma vez?
– Testar todas as combinações possíveis e verificar qual a mais
curta.
Sérgio Nunes
Comunicações e Redes de Computadores
16
Complexidade de um Algoritmo
•
O(N) - linear
–
para todos os N fazer
•
140
Instrução
120
•
O(N2) – polinomial
–
100
desde 1 até N fazer
•
desde 1 até N fazer
–
Instrução
O(N)
80
O(N^2)
O(2^N)
•
O(2N) – exponencial
–
•
60
para um número, testar todas as
combinações de dois números (A,B)
em que AxB=N
40
20
0
O(N!) – factorial
–
O(N!)
1
2
3
4
5
para N elementos testar todas as
combinações possíveis
Sérgio Nunes
Comunicações e Redes de Computadores
17
Problema do Caixeiro Viajante
• Dado um conjunto de cidades e o custo de viajar entre cada par
de cidades, determinar o percurso mais barato de modo a
visitar todas as cidades apenas uma vez e voltar ao ponto de
origem.
• A abordagem simples requer a análise de n! permutações.
• Considerando um milisegundo para analisar cada permutação.
–
–
–
–
–
5 cidades 0.1 segundos
10 1 hora
15 41 anos
20 3.000.000 anos
23 mais do que a idade do universo
Sérgio Nunes
Comunicações e Redes de Computadores
18
Criptografia
• Problemas difíceis de resolver em tempo útil são importantes na
área da criptografia.
• O método RSA, uma implementação do conceito de
criptografia com chaves públicas, recorre a dois conceitos
chave: factorização de um número e verificação da primalidade
de um número.
• Enquanto que o teste é possível ser realizado de forma rápida.
A factorização de números grandes é um problema para o
qual não existem soluções rápidas.
Sérgio Nunes
Comunicações e Redes de Computadores
19
Riscos da Criptografia
• Mecanismos como o da criptografia têm por base duas
assunções fundamentais:
– Os computadores são demasiado lentos.
– Somos ignorantes para lidar com estes problemas.
• Quando houver uma mudança significativa numa destas áreas,
os sistemas que utilizam criptografia estão em risco.
• A invenção de novos paradigmas pode trazer novas
abordagens aos problemas actuais. O aumento no desempenho
dos computadores pode tornar viável as soluções actuais.
Sérgio Nunes
Comunicações e Redes de Computadores
20
Novas Abordagens
• Novos paradigmas para o desenvolvimento de algoritmos
tentam ultrapassar (minimizar) estas limitações.
• Computação Paralela
•
Múltiplos computadores a trabalhar em paralelo sobre o mesmo problema.
• Computação Aleatória
•
Utilização de valores aleatórios durante os passos do algoritmo.
• Computação Quântica
•
Abordagem baseada nos conceitos da mecânica quântica.
• Computação Molecular
•
Utilização de moléculas para a resolução de problemas.
Sérgio Nunes
Comunicações e Redes de Computadores
21
“A questão sobre se os computadores sabem ou não pensar é
equivalente à questão sobre se os submarinos sabem ou não nadar.”
E. W. Dijkstra
Bibliografia
• Principal
– David Harel – Computers Ltd. – what they really can’t do. Oxford
University Press, 2000.
– A. K. Dewdney – The New Turing Omnibus. A. K. Freeman, 1993.
Sérgio Nunes
Comunicações e Redes de Computadores
23
Download

Limitações dos Computadores