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/11/09 23:33
Algoritmos
O que so?
Exemplo:
Problema: preparar bifes milaneza
Algoritmo: precisamos descrever a receita
3/11/09 23:33
Algoritmos
O que so?
Bife milaneza:
1. Limpar a pea de carne
2. Fatiar a carne em bifes
3. Colocar farinha de rosca em um prato
4. Juntar 2 ovos e mexer
5. Repetir, para cada bife
5.1) passar o bife na mistura de farinha, nos 2 lados
5.2) levar bife frigideira
5.3) aguardar dourar, virando ambas as faces
5.4) retirar bife e colocar sobre papel toalha at secar
5.5) retirar do papel toalha e juntar numa travessa
6. Decorar a travessa com folhas de alface
7. Servir
3/11/09 23:33
Algoritmos
O que so?
carne
farinha
ovos
alface
3/11/09 23:33
faca
travessa
fogo
cozinheiro
Algoritmos
3/11/09 23:33
O que so?
Algoritmos
O que so?
Problema
Idia
sada
entrada
Hardware
3/11/09 23:33
Algoritmos
O que so?
Em latim:
al-Khowrizm
algorismus
algoritmo, algorithm, . . .
3/11/09 23:33
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/11/09 23:33
Algoritmos
O que so?
Dados:
Dois nmeros inteiros, M >= 1 e N >=1
Sada:
Um nmero inteiro Z, tal que Z = MDC(M,N)
Apoio, executores:
Lpis, papel, borracha, humano
3/11/09 23:33
Algoritmos
O que so?
M N
36
36
15
15
15
15
15
9
9
3
3
3
3
3
3/11/09 23:33
21
21
21
21
21
6
6
6
6
6
6
6
3
3
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. Pre.
10
Algoritmos
O que caracteriza?
3/11/09 23:33
11
Algoritmos
O que caracteriza?
3/11/09 23:33
12
Algoritmos
O que caracteriza?
Passo inicial
Passo final
3/11/09 23:33
13
Algoritmos
O que caracteriza?
4. Ao executar:
partindo de dados vlidos, deve sempre
terminar.
partindo de dados invlidos, pode produzir
lixo, ou mesmo no terminar.
parte difcil de garantir.
3/11/09 23:33
14
Algoritmos
O que caracteriza?
M e N sempre so >= 1
iniciam assim;
M - N >= 1, se M > N
N - M >= 1, se N > M
3/11/09 23:33
15
Algoritmos
O que caracteriza?
M N
Comentrios
1
2
1
2
1
2
...
no pra
3
4
4
5
5
6
-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
3/11/09 23:33
-1
-1
-1
-1
-1
-1
16
Algoritmos
... e computadores
Algoritmo:
programa, software ...
Entrada:
teclado, mouse, sensores, ...
Sada:
monitor, impressora, ...
3/11/09 23:33
17
Algoritmos
... e computadores
Texto finito:
todo programa tem um texto (talvez muitas linhas) finito ......
2.
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
18
Algoritmos
... e computadores
Receita metdica:
texto escrito numa LP preciso e sem ambigidades
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).
3/11/09 23:33
19
Algoritmos
... e computadores
Exemplo:
sada
entrada
N >= 0
3/11/09 23:33
idia ??
2^N
20
Algoritmos
... e computadores
Exemplo (cont):
Idia:
2^N = 1x2x2x . . . x2
(quando N = 0, 2^0 = 1)
N vezes
Algoritmo:
1. Copie o valor de N para Z
2. Copie o valor 1 para P
3. Enquanto (Z > 0) faa
3.1 Novo valor de P 2x(valor atual de P)
3.2 Novo valor de Z (valor atual de Z) - 1
4. Resposta est em P; pre
3/11/09 23:33
21
Algoritmos
... e computadores
Exemplo (cont):
Escrevendo texto numa LP, p. ex. em C
....
Z = N;
P = 1;
while (Z>0) do
{
P = 2xP;
Z = Z 1;
}
....
3/11/09 23:33
22
Algoritmos
... e compilao
3/11/09 23:33
23
Algoritmos
... e compilao
entrada
memria
2^N
processador
sada
2^N
Bytes
10
1024
1K
20
1048576
1M
27
134217728
128 M
30
1073741824
1G
32
4294967296
4G
1 byte = 8 bits
3/11/09 23:33
24
Algoritmos
... e compilao
25
Algoritmos
... e compilao
Compilao:
Esse programa um
3/11/09 23:33
compilador
26
Algoritmos
... e compilao
3/11/09 23:33
27
Algoritmos
... e compilao
O processo de compilao/edio/execuo:
idia
algoritmo
programao programa
fonte (LP)
problema
papel
programa
objeto (LM)
arquivo
compilao
execuo
soluo
arquivo
3/11/09 23:33
28
Algoritmos
Codificao/compilao/execuo:
... e compilao
Algoritmo:
3/11/09 23:33
centro do universo
demais componentes so acessrios
Cincias da Computao: estudo de algoritmos
Inteligncia de um computador: algoritmos programados
29
Algoritmos
...
e linguagens de programao
Atribuio:
A = E;
Seqenciamento:
. . . faa A; faa B; . . .
...
faa A;
faa B;
...
3/11/09 23:33
30
Algoritmos
...
e linguagens de programao
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/11/09 23:33
31
Algoritmos
...
e linguagens de programao
3/11/09 23:33
32
Algoritmos
...
e linguagens de programao
Tipos bsicos:
Valores inteiros, valores fracionrios (ou quase...);
valores binrios (0 ou 1); . . .
Exemplos:
3/11/09 23:33
33
Algoritmos
...
e linguagens de programao
X[5] = X[2] + 3
?
0
?
?
3
X
I varivel de tipo inteiro e seu valor 4
-3
34
Algoritmos
...
e linguagens de programao
Exemplo:
entrada
sada
Idia:
3/11/09 23:33
X
X
15
10
18
12
10
12
15
18
?!?
35
Algoritmos
...
e linguagens de programao
atual=3
10
15
18
12
10
15
18
12
procura=2
3/11/09 23:33
36
Algoritmos
...
e linguagens de programao
PROX = X[atual+1] = 12
10
15
18
12
procura
10
15
18
12
10
15
15
18
procura
3/11/09 23:33
atual
procura
atual
37
Algoritmos
...
e linguagens de programao
10
12
15
18
procura
atual
10
12
15
18
7
atual
10
12
15
18
atual
3/11/09 23:33
38
Algoritmos
...
e linguagens de programao
Como comear ?
15
10
18
12
atual
3/11/09 23:33
39
Algoritmos
...
e linguagens de programao
3/11/09 23:33
40
Algoritmos
3/11/09 23:33
...
resolvendo problemas
41
Algoritmos
...
correo
Soluo:
3/11/09 23:33
42
Algoritmos
...
correo
sada
entrada
EE = espec. entrada
A = dinmica algor.
ES = espec. sada
Se EE(X) verdadeiro
Se Z = A(X)
Ento ES(Z) verdadeiro
3/11/09 23:33
43
Algoritmos
...
correo
Entrada:
Sada:
vi v(i+1), 1 i < n
v1, v2, ..., vn uma permutao de v1, v2, ..., vn
3/11/09 23:33
44
Algoritmos
...
correo
45
Algoritmos
...
correo
atual=1;
46
Algoritmos
...
correo
n= n
vi v(i+1), 1 i < n
3/11/09 23:33
47
Algoritmos
...
correo
Terminao:
Mostrou que, SE o programa parte de uma configurao
inicial e chega numa configurao final, ENTO o
resultado est correto:
3/11/09 23:33
48
Algoritmos
...
correo
Tempo real:
49
Algoritmos
...
Questo:
Dado um problema P, sempre haver um algoritmo que
resolva P corretamente?
50
Algoritmos
...
51
Algoritmos
...
3/11/09 23:33
52
Algoritmos
...
Exemplo 1:
consegue para toda
regio do plano
SIM!
Exemplo 2:
todas as outras
possibilidades falham
nessa regio
NO!
3/11/09 23:33
53
Algoritmos
...
3/11/09 23:33
54
Algoritmos
...
3/11/09 23:33
55
Algoritmos
...
Exemplo:
F
I
SIM!
3/11/09 23:33
56
Algoritmos
...
3/11/09 23:33
57
Algoritmos
...
58
Algoritmos
...
3/11/09 23:33
59
Algoritmos
...
Outro exemplo:
verificador de loops em programas em C
programa P
esp. de entr. E
ALGORITMO
[?!]
SIM: P sempre
pra para todas
as entr. vlidas
3/11/09 23:33
NO: P no pra
com algumas das
entr. vlidas
60
Algoritmos
...
3/11/09 23:33
61
Algoritmos
3/11/09 23:33
62
Algoritmos
SURPRESA !!!
Pode ser que NO EXISTA um algoritmo mais eficiente do que A
para resolver P e podemos provar isso matematicamente!
3/11/09 23:33
63
Algoritmos
I1
I2
I1
I1
F1
I2
I1
F2
I2
F1
3/11/09 23:33
64
Algoritmos
I1
F1
I2
F1
3/11/09 23:33
I1
F2
I2
J1 TEM estratgia (seq. de movimentos)
sempre vencedora
65
Algoritmos
Jogo do bloqueio:
Algoritmo A:
De forma sistemtica, tente todas as possibilidades de
seqncias alternadas de movimentos, comeando com J1
Possvel:
Dificuldade:
3/11/09 23:33
66
Algoritmos
3/11/09 23:33
67
Algoritmos
10
20
50
60
100
200
f(n)=2^n
1 ms
1s
35.7
anos
3.000
anos
+ 400 trilhes
anos
50
60
100
f(n)=2^n
1,29
dias
3
anos
+ 40 bilhes
sc.
200
num. sc. tem
41 dgitos!
68
Algoritmos
3/11/09 23:33
69
Algoritmos
10
20
50
100
200
f(N)
N^2
0,1 ms
0,4ms
2,5ms
10ms
40s
N^5
0,1s
3,2s
5,2m
2,8h
3,7dias
2^N
1ms
1s
35,7anos
sculos
400 trilhes
sculos
45 dgitos
N^N
2,8s
3,3 trilhes
anos
sculos
70 dgitos
sculos
185 dgitos
sculos
445 dgitos
3/11/09 23:33
70
Algoritmos
3/11/09 23:33
71
Algoritmos
72
Algoritmos
Dado:
Problema:
A notar:
3/11/09 23:33
73
Algoritmos
Instncia:
O mapa:
O valor mximo do
percurso: 29
10
9
10
4
3
7
EXISTE um percurso?
SIM/NO
5
7
4
74
Algoritmos
10
9
10
3
7
10
3
2
7
4
K=29
3/11/09 23:33
3+6+10+4+2+3 = 28
Copyright@2007, 2008, 2009: Arnaldo V. Moura
SIM
75
Algoritmos
6
3
10
9
10
3
7
???
5
7
4
K=25
3/11/09 23:33
NO
Copyright@2007, 2008, 2009: Arnaldo V. Moura
76
Algoritmos
O algoritmo impraticvel
3/11/09 23:33
77
Algoritmos
78
Algoritmos
... alternativas
Uso de heursticas:
Algoritmos randomizados:
Algoritmos aproximativos:
Computao quntica:
Computao molecular:
...
3/11/09 23:33
79