Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
2/22/2011 12:40
PM
Algoritmos
O que so?
Exemplo:
Problema: preparar bifes milaneza
Algoritmo: precisamos descrever a receita
2/22/2011 12:40
PM
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
2/22/2011 12:40
PM
Algoritmos
O que so?
carne
farinha
ovos
alface
faca
travessa
fogo
cozinheiro
2/22/2011 12:40
PM
Algoritmos
O que so?
bifes
algoritmo
2/22/2011 12:40
PM
Algoritmos
O que so?
Algoritmo
Problema
Idia
entrada
Algoritmo
sada
Hardware
2/22/2011 12:40
PM
Algoritmos
O que so?
Em latim:
al-Khowrizm
algorismus
algoritmo, algorithm, . . .
2/22/2011 12:40
PM
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
2/22/2011 12:40
PM
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
2/22/2011 12:40
PM
Algoritmos
O que so?
M N
36
36
15
15
15
15
15
9
9
3
3
3
3
3
21
21
21
21
21
6
6
6
6
6
6
6
3
3
2/22/2011 12:40
PM
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.
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?
2/22/2011 12:40
PM
11
Algoritmos
O que caracteriza?
2/22/2011 12:40
PM
12
Algoritmos
O que caracteriza?
Passo inicial
Passo final
2/22/2011 12:40
PM
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.
2/22/2011 12:40
PM
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
2/22/2011 12:40
PM
15
Algoritmos
O que caracteriza?
Passo
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
-1
-1
-1
-1
-1
-1
2/22/2011 12:40
PM
16
Algoritmos
... e computadores
Algoritmo:
programa, software ...
Entrada:
teclado, mouse, sensores, ...
Sada:
monitor, impressora, ...
2/22/2011 12:40
PM
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:
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).
2/22/2011 12:40
PM
19
Algoritmos
... e computadores
Exemplo:
sada
entrada
N >= 0
2/22/2011 12:40
PM
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
2/22/2011 12:40
PM
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;
}
....
2/22/2011 12:40
PM
22
Algoritmos
... e compilao
2/22/2011 12:40
PM
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
2/22/2011 12:40
PM
24
Algoritmos
... e compilao
25
Algoritmos
... e compilao
Compilao:
Esse programa um
2/22/2011 12:40
PM
compilador
26
Algoritmos
... e compilao
2/22/2011 12:40
PM
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
2/22/2011 12:40
PM
28
Algoritmos
Codificao/compilao/execuo:
... e compilao
Algoritmo:
centro do universo
demais componentes so acessrios
Cincias da Computao: estudo de algoritmos
Inteligncia de um computador: algoritmos programados
2/22/2011 12:40
PM
29
Algoritmos
Atribuio:
A = E;
Seqenciamento:
. . . faa A; faa B; . . .
...
faa A;
faa B;
...
2/22/2011 12:40
PM
30
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; . . .
2/22/2011 12:40
PM
31
Algoritmos
2/22/2011 12:40
PM
32
Algoritmos
Tipos bsicos:
Valores inteiros, valores fracionrios (ou quase...);
valores binrios (0 ou 1); . . .
Exemplos:
2/22/2011 12:40
PM
33
Algoritmos
X[5] = X[2] + 3
?
0
?
?
3
X
I varivel de tipo inteiro e seu valor 4
-3
34
Algoritmos
Exemplo:
entrada
sada
Idia:
2/22/2011 12:40
PM
X
X
15
10
18
12
10
12
15
18
?!?
35
Algoritmos
10
15
18
12
10
15
18
12
procura=2
2/22/2011 12:40
PM
36
Algoritmos
PROX = X[atual+1] = 12
10
15
18
12
procura
10
15
18
12
10
15
15
18
procura
2/22/2011 12:40
PM
atual
procura
atual
37
Algoritmos
10
12
15
18
procura
atual
10
12
15
18
7
atual
10
12
15
18
atual
2/22/2011 12:40
PM
38
Algoritmos
Como comear ?
15
10
18
12
atual
2/22/2011 12:40
PM
39
Algoritmos
2/22/2011 12:40
PM
40
Algoritmos
desenvolver o algoritmo
processo criativo, rascunho, lpis e papel ...
simular execuo do algoritmo em casos de fronteira
verificar correo e trmino
Editar/compilar/executar o programa
2/22/2011 12:40
PM
41
Algoritmos
... correo
Soluo:
2/22/2011 12:40
PM
42
Algoritmos
... correo
sada
entrada
algoritmo
EE = espec. entrada
A = dinmica algor.
ES = espec. sada
Se EE(X) verdadeiro
Se Z = A(X)
Ento ES(Z) verdadeiro
2/22/2011 12:40
PM
43
Algoritmos
... correo
Entrada:
Sada:
vi v(i+1), 1 i < n
v1, v2, ..., vn uma permutao de v1, v2, ..., vn
2/22/2011 12:40
PM
44
Algoritmos
... correo
45
Algoritmos
... correo
2/22/2011 12:40
PM
46
Algoritmos
... correo
n
= n
v
i v
(i+1), 1 i < n
v
1, . . .,v
n uma permutao de v1,. . . ,vn
2/22/2011 12:40
PM
47
Algoritmos
... correo
Terminao:
Mostrou que, SE o programa parte de uma configurao
inicial e chega numa configurao final, ENTO o
resultado est correto:
2/22/2011 12:40
PM
48
Algoritmos
... correo
Tempo real:
49
Algoritmos
Questo:
Dado um problema P, sempre haver um algoritmo que
resolva P corretamente?
50
Algoritmos
51
Algoritmos
2/22/2011 12:40
PM
52
Algoritmos
Exemplo 1:
consegue para toda
regio do plano
SIM!
Exemplo 2:
todas as outras
possibilidades falham
nessa regio
NO!
2/22/2011 12:40
PM
53
Algoritmos
2/22/2011 12:40
PM
54
Algoritmos
2/22/2011 12:40
PM
55
Algoritmos
Exemplo:
F
I
SIM!
2/22/2011 12:40
PM
56
Algoritmos
2/22/2011 12:40
PM
57
Algoritmos
58
Algoritmos
2/22/2011 12:40
PM
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
2/22/2011 12:40
PM
NO: P no pra
com algumas das
entr. vlidas
60
Algoritmos
2/22/2011 12:40
PM
61
Algoritmos
2/22/2011 12:40
PM
62
Algoritmos
SURPRESA !!!
Pode ser que NO EXISTA um algoritmo mais eficiente do que A
para resolver P e podemos provar isso matematicamente!
2/22/2011 12:40
PM
63
Algoritmos
I1
I2
I1
F1
I1
F2
I2
F1
2/22/2011 12:40
PM
64
Algoritmos
I1
F1
I2
F1
2/22/2011 12:40
PM
I1
F2
I2
J1 TEM estratgia (seq. de movimentos)
sempre vencedora
65
Algoritmos
Jogo do bloqueio:
Algoritmo A:
Dificuldade:
2/22/2011 12:40
PM
66
Algoritmos
2/22/2011 12:40
PM
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
2/22/2011 12:40
PM
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
2/22/2011 12:40
PM
70
Algoritmos
2/22/2011 12:40
PM
71
Algoritmos
SURPRESA!!!
2/22/2011 12:40
PM
72
Algoritmos
Dado:
Problema:
A notar:
2/22/2011 12:40
PM
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
2/22/2011 12:40
PM
74
Algoritmos
3
4
10
8
9
10
10
7
2
2
7
4
K=29
2/22/2011 12:40
PM
3+6+10+4+2+3 = 28
Copyright@2007, 2008, 2009: Arnaldo V. Moura
SIM
75
Algoritmos
6
3
4
10
8
9
10
???
7
2
5
7
4
K=25
2/22/2011 12:40
PM
NO
Copyright@2007, 2008, 2009: Arnaldo V. Moura
76
Algoritmos
O algoritmo impraticvel
2/22/2011 12:40
PM
77
Algoritmos
78
Algoritmos
... alternativas
Uso de heursticas:
Algoritmos randomizados:
Algoritmos aproximativos:
Computao quntica:
Computao molecular:
...
2/22/2011 12:40
PM
79