Académique Documents
Professionnel Documents
Culture Documents
Parte I:
1. O que so? 2. O que os caracteriza
Parte II:
3. Algoritmos e computadores 4. O processo de compilao 5. Algoritmos e linguagens de programao
Parte III:
6. Algoritmos resolvendo problemas 7. Algoritmos e correo 8. Resolvem qualquer problema? 9. Adianta execut-los? 10.Nossa ignorncia
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 1
Algoritmos
O que so?
3/2/2013 1:56 AM
O que so?
1. Limpar a pea de carne 2. Fatiar a carne em bifes 3. Colocar farinha de rosca em um prato 4. Bater 2 ovos em outro prato 5. Repetir, para cada bife: 5.1) passar cada lado do bife nos ovos; 5.2) passar cada lado do bife na mistura de farinha; 5.3) levar o bife frigideira; 5.4) aguardar dourar, virando ambas as faces; 5.5) retirar bife e colocar sobre papel toalha at secar; 5.6) retirar do papel toalha e juntar numa travessa; 6. Decorar a travessa com folhas de alface 7. Servir
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 3
Algoritmos
Objetos de consumo (entrada):
carne farinha ovos alface
O que so?
3/2/2013 1:56 AM
Algoritmos
Objetos produzidos (sada):
bifes
O que so?
3/2/2013 1:56 AM
Algoritmos
Problema Idia
entrada
Algoritmo
Hardware
sada
3/2/2013 1:56 AM
Algoritmos
Um dos primeiros algoritmos:
O que so?
Em latim:
al-Khowrizm
algorismus
algoritmo, algorithm, . . .
3/2/2013 1:56 AM
Algoritmos
O que so?
Exemplo: Problema: achar o mximo divisor comum (MDC) de dois inteiros positivos dados: M e N. Idia ?? . . .
Como aprendemos na escola ...
Algoritmo:
1. Se M=N, ento MDC M (ou N); pre 2. Caso a): se ( M>N ) ento substitua M por (M-N) e repita a partir do passo 1 3. Caso b): se ( N>M ) ento substitua N por (N-M) e repita a partir do passo 1
3/2/2013 1:56 AM
Algoritmos
Dados: Dois nmeros inteiros, M >= 1 e N >=1
O que so?
Sada:
Um nmero inteiro Z, tal que Z = MDC(M,N)
3/2/2013 1:56 AM
Algoritmos
Passo
--1 2 1 2 3 1 2 1 2 1 2 3 1
O que so?
Comentrios
36 <> 21 36 - 21 = 15 15 <> 21 no executado: 15 < 21 21 - 15 = 6 15 <> 6 15 - 6 = 9 9 <> 6 96=3 3 <> 6 3 < 6; no executado 6-3=3 MDC 3. Pare.
21 21 21 21 21 6 6 6 6 6 6 6 3 3
Algoritmo
1. Se M=N, ento MDC M (ou N); pre 2. Caso a): se ( M>N ) ento substitua M por (M-N) e repita a partir do passo 1 3. Caso b): se ( N>M ) ento substitua N por (N-M) e repita a partir do passo 1
10
Algoritmos
O que caracteriza?
3/2/2013 1:56 AM
11
Algoritmos
O que caracteriza?
3/2/2013 1:56 AM
12
Algoritmos
O que caracteriza?
3/2/2013 1:56 AM
13
Algoritmos
4. Ao executar:
O que caracteriza?
partindo de dados vlidos, deve sempre terminar. partindo de dados no-vlidos, pode produzir lixo, ou mesmo no terminar. parte difcil de garantir.
3/2/2013 1:56 AM
14
Algoritmos
e N >= 1:
O que caracteriza?
3/2/2013 1:56 AM
M N
3 4 4 5 5 6 -1 -1 -1 -1 -1 -1
Comentrios
-1 <> 3 3 > -1; 3 - (-1) = 4 -1 <> 4 4 <> -1; 4 - (-1) = 5 -1 <> 5 5 <> -1; 5 - (-1) = 6 repete esse padro no vai parar nunca
1. Se M=N, ento MDC M (ou N); pre 2. Caso a): se ( M>N ) ento substitua M por (M-N) e repita a partir do passo 1 3. Caso b): se ( N>M ) ento substitua N por (N-M) e repita a partir do passo 1 16
3/2/2013 1:56 AM
Algoritmos
Algoritmo:
programa, software ...
... e computadores
Entrada:
teclado, mouse, sensores, ...
Sada:
monitor, impressora, ...
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 17
Algoritmos
1. 2. Texto finito:
... e computadores
Instrues elementares:
elementares para o computador onde o software vai executar. Dificuldades:
Cada computador tem um particular conjunto de instrues bsicas Instrues do computador so muito primitivas
Algoritmos
... e computadores
4.
Terminao:
1. Grande desafio: texto escrito numa LP no deixa isso claro. 2. Problema no desenvolvimento de software: execuo sem terminao (i.e. sem loops).
Outro problema: termina com a soluo errada ou tem interrupo abrupta.
19
3/2/2013 1:56 AM
Algoritmos
... e compilao
3/2/2013 1:56 AM
20
... e compilao
Memria
1 2
entrada memria
processador
N 10 20 27 30 32
Bytes 1K 1M 128 M 1G 4G
2^N
sada
1 byte = 8 bits
3/2/2013 1:56 AM
21
Algoritmos
... e compilao
Arquitetura bsica simplificada (cont): Formado por memria (grande), processador e circuitos de entrada e de sada Processador executa instrues elementares especficas dessa mquina
inclusive armazenamento e recuperao de dados da memria
Processador e circuitos de e/s recebem dados das entradas e exibem dados nas sadas
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 22
Algoritmos
Compilao:
... e compilao
Processo de traduzir programas escritos em uma particular LP para cdigo em instrues bsicas de uma mquina especfica Traduo de LP para linguagem de mquina:
Dificuldades: processo laborioso, entediante e sujeito a erros. Soluo: Escrever um programa para fazer a traduo Esse programa um
compilador
3/2/2013 1:56 AM
23
Algoritmos
... e compilao
Para cada LP e cada computador (processador), um compilador especfico Existem milhares de LPs:
FORTRAN: cientfica, mais antiga ALGOL, C, PASCAL: estruturadas, generalistas C++, C#, JAVA : lidam com tecnologia de objetos LISP, PROLOG: voltadas para IA . . . (muitas outras)
Copyright@2007, 2008, 2009: Arnaldo V. Moura 24
3/2/2013 1:56 AM
Algoritmos
... e compilao
O processo de compilao/edio/execuo:
idia
problema algoritmo
programao programa
fonte (LP)
papel
arquivo
compilao
execuo
soluo
arquivo
3/2/2013 1:56 AM
25
Algoritmos
Codificao/compilao/execuo:
... e compilao
permite executar um algoritmo em um computador obtm soluo para problemas rapidamente (?!)
Algoritmo:
centro do universo demais componentes so acessrios Cincias da Computao: estudo de algoritmos
3/2/2013 1:56 AM
26
Algoritmos
Pessoas codificam algoritmos em LPs Que tipos de instrues (em geral) esto presentes em uma LP?
Atribuio: A = E; Seqenciamento: . . . faa A; faa B; . . . ... faa A; faa B; ...
3/2/2013 1:56 AM
27
Algoritmos
Desvio condicional: . . . se (A verdade) ento (faa B) seno (faa C); . . . . . . se (A verdade) ento (faa B); . . . Iteraes: . . . faa A exatamente N vezes; . . . . . . repita A at que (Q seja verdade); . . . . . . enquanto (Q verdade) faa A; . . .
3/2/2013 1:56 AM
28
Algoritmos
Valores dos dados so armazenados na memria; A memria referenciada por meio de variveis:
Varivel: um nome simblico que designa uma, ou mais, posies na memria
Exemplo: X, Z, D3, CASA_DE_PEDRA, . . .
3/2/2013 1:56 AM
Algoritmos
Editar/compilar/executar o programa
processo iterativo para retirar erros (algoritmo e cdigo)
Copyright@2007, 2008, 2009: Arnaldo V. Moura 30 3/2/2013 1:56 AM
Algoritmos
... correo
O algoritmo corretamente soluciona o problema? Provar um teorema (como em matemtica) mostrando que o algoritmo correto:
processo de convencimento dos pares possvel exibir uma prova formal da correo?
Dificuldades: preciso e rigor ao descrever a execuo do algoritmo especificar formalmente dados de entrada e a sada
3/2/2013 1:56 AM
31
Algoritmos
Questo:
Algoritmos
Algoritmos
Um problema indecidvel (insolvel) [Harel, Computers Ltd.]: Dado um conjunto finito T de ladrilhos quadrados:
Problema: podemos ladrilhar qualquer grade quadrada com ladrilhos de tipo T, casando as cores das faces que se tocam? SIM ou NO?
pode usar quantos ladrilhos quiser, de cada tipo os ladrilhos no podem ser girados
3/2/2013 1:56 AM
34
Algoritmos
Exemplo 1:
SIM!
Exemplo 2:
todas as outras possibilidades falham nessa regio
NO!
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 35
Algoritmos
NENHUM computador JAMAIS vai conseguir resolver esse problema, nem agora, nem nunca, nem com QUALQUER melhoria de tecnologia, nem com QUALQUER tamanho de memria, nemcom QUALQUER tempo de execuo
3/2/2013 1:56 AM
36
Algoritmos
Um problema decidvel (solvel) [Harel, Computers Ltd.]: Dado um conjunto finito T de ladrilhos quadrados:
Dadas duas posies (I e F) na grade infinita do plano Problema: podemos ladrilhar um caminho na grade, partindo de I e chegando em F, com ladrilhos de tipo T, e casando as cores das faces que se tocam? SIM ou NO?
pode usar quantos ladrilhos quiser, de cada tipo os ladrilhos no podem ser girados
3/2/2013 1:56 AM
37
Algoritmos
Exemplo:
F I
SIM!
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 38
Algoritmos
EXISTE um algoritmo que decide se h, ou se no h, o caminho entre as duas posies dadas, usando ladrilhos do conjunto dado
Podemos exibir o algoritmo e mostrar sua correo e terminao, no importa qual o conjunto T dado e no importa quais as posies I e F dadas
3/2/2013 1:56 AM
39
Algoritmos
Dado um problema P, e conseguido um algoritmo A para P, ento podemos resolver qualquer instncia de P, com dados de entrada E, executando A sobre os dados E. CORRETO? NEM SEMPRE:
ao executar sobre E, o algoritmo A pode precisar de um tempo muito longo (anos, sculos, milhes de sculos, ...) ao executar sobre E, o algoritmo A pode precisar de um muita memria (vrios GBs, muitos milhes de GBs, ...)
3/2/2013 1:56 AM
40
Algoritmos
Se A um algoritmo ruim, ento basta criar outro algoritmo para P, que seja mais eficiente (em tempo e/ou em memria) CORRETO?
SURPRESA !!!
Pode ser que NO EXISTA um algoritmo mais eficiente do que A para resolver P e podemos provar isso matematicamente!
3/2/2013 1:56 AM
41
Algoritmos
Dado um mapa rodovirio:
I1 I1 I2
I2
42
Algoritmos
Problema: Ser que o jogador J1 tem uma estratgia vencedora? Regras de movimentos:
J1 inicia; depois os jogadores se alternam. Em um movimento, um jogador pode percorrer qualquer trecho (concatenado) de mesma cor, partindo de uma posio ocupada por si
no pode passar por interseces ocupadas (por si ou pelo adversrio) ponto final deve estar tambm desocupado
F1 I2 F1
I1 I1 F2 I2
3/2/2013 1:56 AM
Algoritmos
Jogo do bloqueio:
Algoritmo A: De forma sistemtica, tente todas as possibilidades de seqncias alternadas de movimentos, comeando com J1 Possvel: nmero finito de possibilidades Dificuldade:
o nmero de possibilidades enorme para cada movimento de J1, deve tentar todos os movimentos de J2 para cada movimento de J2, deve tentar todos os movimentos de J1
3/2/2013 1:56 AM
44
Algoritmos
Tempo de execuo dado pela contagem do nmero de passos elementares que A executa, no pior caso, para entradas de tamanho N dado pela funo f(N) = 2^N.
3/2/2013 1:56 AM
45
Algoritmos
Tempo de execuo do algoritmo A: Em um computador que realiza 1 milho de passos elementares por segundo, o tempo de execuo de A seria
n
f(n)=2^n 10 1 ms 20 1s 50 35.7 anos 60 3.000 anos 100 + 400 trilhes anos 200 num. sc. tem 45 dgitos!
Impraticvel para 50 ou mais cidades Rodando A em um computador 10.000 vezes mais rpido
n
f(n)=2^n 50 1,29 dias 60 3 anos 100 + 40 bilhes sc. 200 num. sc. tem 41 dgitos!
Algoritmos
Algoritmo A no bom para o problema do bloqueio: Precisamos de outro algoritmo, mais eficiente
3/2/2013 1:56 AM
47
Algoritmos
10
0,1 ms 0,1s 1ms 2,8s
20
0,4ms 3,2s 1s 3,3 trilhes anos
50
2,5ms 5,2m 35,7anos sculos 70 dgitos
100
10ms 2,8h sculos 400 trilhes sculos 185 dgitos 40s
200
3/2/2013 1:56 AM
48
Algoritmos
Tempos de execuo, de pior caso: Polinomiais: resultam em algoritmos eficientes Exponenciais: resultam em algoritmos no eficientes
Problemas tratveis: tm algoritmos polinomiais Problemas intratveis: no tm algoritmos polinomiais Problema do bloqueio: intratvel
3/2/2013 1:56 AM
49
Algoritmos
Dado um problema P, como saber se tratvel? SURPRESA!!! Para muitos problemas de grande interesse prtico, no sabemos se so tratveis ou no!
3/2/2013 1:56 AM
50
Algoritmos
Dado:
mapa de cidades, com custo de viagem entre cada par de cidades cidade de incio, I, cidade de trmino, F um valor K
Problema:
existe rota, de I at F, visitando as cidades exatamente uma vez com custo no mximo K? SIM/NO?
A notar:
problema de grande interesse prtico problema simples de entender
Copyright@2007, 2008, 2009: Arnaldo V. Moura 51
3/2/2013 1:56 AM
Algoritmos
Instncia: O mapa:
3
6 4 9 8 10 3
10 4 7 5
2 7 4
3/2/2013 1:56 AM
52
Algoritmos
6 3 4 9 4 3 7 5 7 4 2 9 8 10
10
I F
10 3
K=29
3/2/2013 1:56 AM
3+6+10+4+2+3 = 28
Copyright@2007, 2008, 2009: Arnaldo V. Moura
SIM
53
Algoritmos
6 3 4 9 4 3 7 5 7 4 2 9 8 10
10
I F
???
K=25
3/2/2013 1:56 AM
NO
Copyright@2007, 2008, 2009: Arnaldo V. Moura 54
Algoritmos
Algoritmos para o problema do caixeiro viajante: Partindo da posio I, tente todas as possibilidades que fiquem dentro do custo K
Se achar um caminho at F, responda SIM Se no achar, responda NO
O algoritmo impraticvel
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 55
Algoritmos
Problema do caixeiro viajante: Existe um algoritmo mais eficiente (polinomial no nmero de cidades)?
SURPRESA !!! NO SABEMOS !?! Esse o caso com MUITOS outros problemas de interesse prtico (classe NP)
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 56
Algoritmos
O que podemos fazer, por ora?
... alternativas
Uso de heursticas:
obtm boas solues, sem garantia de otimalidade
Algoritmos randomizados:
do a resposta correta quase sempre
Algoritmos aproximativos:
do soluo com garantia de proximidade da tima
Computao quntica:
baseado na mecnica quntica, nova maneira de programar
Computao molecular:
paralelismo macio usando reaes moleculares
...
3/2/2013 1:56 AM Copyright@2007, 2008, 2009: Arnaldo V. Moura 57