Ney Lemke
Departamento de F´ısica e Biof´ısica
2009
Outline
1
Bibliografia
2
Introduc¸ ˜ao
3
Algoritmos
4
Aplicac¸ ˜ oes
5
Algoritmos Recursivos
6
Tipos de Algoritmos
Outline
1
Bibliografia
2
Introduc¸ ˜ao
3
Algoritmos
4
Aplicac¸ ˜ oes
5
Algoritmos Recursivos
6
Tipos de Algoritmos
Bibliografia
JONES, N. C.; PEVZNER, P. A. “An Introduction to
Bioinformatics Algorithms”, Cambridge,The MIT Press, 2004,
435pp.
Outline
1
Bibliografia
2
Introduc¸ ˜ao
3
Algoritmos
4
Aplicac¸ ˜ oes
5
Algoritmos Recursivos
6
Tipos de Algoritmos
Introduc¸ ˜ao
Import ˆancia do Racioc´ınio Algoritmico
Compreens ˜ao das id ´eias B ´asicas
Limitac¸ ˜oes e falhas
Exemplo
Alice e Bob est ˜ao envolvidos em um excitante jogo. Temos duas
pilhas com 10 pedras, cada jogador pode ou retirar uma pedra de
uma pilha ou uma pedra de cada uma das pilhas. Alice comec¸a
jogando e ganha quem retirar a ´ultima pedra.
An ´alise do Jogo
0 1 2 3 4 5 6 7 8 9 10 0 ∗←∗←∗←∗←∗←∗←∗←∗←∗←∗←∗
↑-↑-↑-↑-↑-↑-↑-↑-↑-↑-↑
1 ∗←∗←∗←∗←∗←∗←∗←∗←∗←∗←∗
↑-↑-↑-↑-↑-↑-↑-↑-↑-↑-↑
2 ∗←∗←∗←∗←∗←∗←∗←∗←∗←∗←∗
↑-↑-↑-↑-↑-↑-↑-↑-↑-↑-↑
3 ∗←∗←∗←∗←∗←∗←∗←∗←∗←∗←∗
↑-↑-↑-↑-↑-↑-↑-↑-↑-↑-↑
4 ∗←∗←∗←∗←∗←∗←∗←∗←∗←∗←∗
↑-↑-↑-↑-↑-↑-↑-↑-↑-↑-↑
5 ∗←∗←∗←∗←∗←∗←∗←∗←∗←∗←∗
An ´alise do Jogo
0 1 2 3 4 5 6 7 8 9 10
0 L W L W L W L W L W L
1 W W W W W W W W W W W
2 L W L W L W L W L W L
3 W W W W W W W W W W W
4 L W L W L W L W L W L
5 W W W W W W W W W W W
6 L W L W L W L W L W L
7 W W W W W W W W W W W
8 L W L W L W L W L W L
9 W W W W W W W W W W W
10 L W L W L W L W L W L
Outline
1
Bibliografia
2
Introduc¸ ˜ao
3
Algoritmos
4
Aplicac¸ ˜ oes
5
Algoritmos Recursivos
6
Tipos de Algoritmos
O que ´e um algoritmo
Def. Um algoritmo ´e uma seq ¨u ˆencia de instruc¸ ˜oes que devemos utilizar para resolver um dado problema.
Para podermos descrever um algoritmo em geral fazemos uso de
uma lingugem chamada de pseudo-c ´odigo.
Atribuic¸ ˜ao
Atribuic¸ ˜ao a ← b
Efeito A vari ´avel a recebe o valor de b.
Aritm ´etica
Formato a + b, a − b, a/b, a × b
Efeito Realiza a operac¸ ˜ao.
Condicional
if A is true then B
else
C
end if
For
for i←b to n do B
end for
while
while A ´e verdade do B
end while
Acesso `a vetores
Exemplo:
1:
F
1← 1
2:
F
2← 1
3:
for i ← 3 to n do
4:
F
i← F
i−1+ F
i−2 5:end for
Outline
1
Bibliografia
2
Introduc¸ ˜ao
3
Algoritmos
4
Aplicac¸ ˜ oes
5
Algoritmos Recursivos
6
Tipos de Algoritmos
Receita de Bolo
1:
P
REA
QUECAF
ORNO(425)
2:
recheio← B
ATAR
ECHEIO(ab ´obora, ac¸ucar, sal, temperos, ovos, leite)
3:
torta ← A
SSENTE(massa, recheio)
4:
while garfo sai molhado ´e verdade do
5:
C
OZINHE(pie)
6:
end while
7:
output “Torta Pronta”
8:
return pie
B ATA R ECHEIO
1:
pote ← Pegue um pote do arm ´ario
2:
A
DICIONE(ab ´obora, pote)
3:
A
DICIONE(ac¸ucar, pote)
4:
A
DICIONE(sal, pote)
5:
A
DICIONE(temperos, pote)
6:
B
ATA(pote)
7:
A
DICIONE(ovos, pote)
8:
A
DICIONE(leite, pote)
9:
B
ATA(pote)
10:
recheio← Conte ´udo de pote
11:
return recheio
Algoritmos Biol ´ ogicos
Helicases se ligam a origem de replicac¸ ˜ao Helicase separa as duas fitas do DNA Ligac¸ ˜ao dos primers
Ligac¸ ˜ao da DNA polimerase a cada uma das fitas do DNA DNA Polimerase complementa de forma cont´ınua uma das fitas DNA Polimerase replica de forma descont´ınua a outra fita DNA ligase repare os buracos na segunda fita
As duas fitas se separam
Algoritmos para Computadores
C
OPIAS
TRING(s,n) for i← 1 to n do
t
i← s
ireturn t
end for
Exerc´ıcio
Escrevam um algoritmo para escolha de qual revista um paper deve
ser submetido.
Problema do Troco (USA)
Converter alguma quantidade de dinheiro M no menor n ´umero
poss´ıvel de moedas. Ou seja M = 25q + 10d + 5n + p e
q + d + n + p deve ser m´ınimo.
U S C HANGE (M)
while M > 0 do
c ← Maior moeda menor ou igual a M Entregue a moeda c ao cliente M ← M − c
end while
U S C HANGE (M)
1:
r ← M
2:
q ← r /25
3:
r ← r − 25 ∗ q
4:
d ← r /10
5:
r ← r − 10 ∗ d
6:
n ← r/5
7:
r ← r − 5 ∗ n
8:
p ← r
9:
return (q,d,n,p)
Problema do Troco
Converter alguma quantidade de dinheiro M no menor n ´umero
poss´ıvel de moedas. Considere um vetor de moedas (c
1, . . . , c
d) em
ordem descrescente de valor e o troco caracterizado pela lista de
inteiros: (i
1, . . . , i
d) Ou seja M = c
1∗ i
1+ . . . c
d∗ i
de i
1+ . . . i
ddeve
ser m´ınimo.
M ELHOR T ROCO (M,c,d)
1:
r ← M
2:
for k ← 1 to d do
3:
i
k← r /c
k 4:r ← r − c
k∗ i
k 5:end for
6:
return ( i
1, . . . i
d)
Discuss ˜ao
Algoritmos Corretos
Contra-exemplo: Caso Americano troco para 40 c (moedas:
25,20,10,5,1).
Soluc¸ ˜ao: Procurar por todas as soluc¸ ˜oes e escolher a melhor.
Outline
1
Bibliografia
2
Introduc¸ ˜ao
3
Algoritmos
4
Aplicac¸ ˜ oes
5
Algoritmos Recursivos
6
Tipos de Algoritmos
Algoritmos Recursivos
Def. Algoritmos recursivos s ˜ao aqueles que chamam a si mesmos.
Exemplo: Fibonacci Recursivo F
IBONACCIR
ECURSIVOif n = 1 ou n = 2 then return 1
else
a ← F
IBONACCIR
ECURSIVO(n − 1) b ← F
IBONACCIR
ECURSIVO(n − 2) return a + b
end if
Algoritmos Recursivos e Iterativos
Algoritmos Recursivos podem ser eficazes em tempo de
computac¸ ˜ao, mas em geral s ˜ao gulosos em termos de mem ´oria.
S ˜ao mais dif´ıceis de entender e de “debugar”.
Outline
1
Bibliografia
2
Introduc¸ ˜ao
3
Algoritmos
4
Aplicac¸ ˜ oes
5
Algoritmos Recursivos
6