Algoritmos - IC

Propaganda
AlgoritmosOquesão?
—  Algoritmoéumareceitapararesoluçãodeum
problema.
—  Exemplo:
Problema:preparar“bifesàmilanesa”.
Algoritmo:precisamosdescreverareceita.
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
1
“Bifeàmilanesa”
1.Limparapeçadecarne.
2.Fa6aracarneembifes.
3.Colocarfarinhaderoscaemumprato.
4.Bater2ovosemoutroprato.
5.Repe6r,paracadabife:
5.1)passarcadaladodobifenosovos;
5.2)passarcadaladodobifenamisturadefarinha;
5.3)levarobifeàfrigideira;
5.4)aguardardourar,virandoambasasfaces;
5.5)re6rarbifeecolocarsobrepapeltoalhaaté
secar;
5.6)re6rardopapeltoalhaejuntarnumatravessa.
6.Decoraratravessacomfolhasdealface.
7.Servir.
2
AlgoritmosOquesão?
—  Objetosde“consumo”
(entrada):
ü  carne;
ü  farinha;
ü  ovos;
ü  alface.
—  Objetos“produzidos”(saída):
ü 
Bifes.
—  Objetoque“controla”oprocesso
—  Objetosde“apoio”
(atores,executores):
ü  faca;
ü  travessa;
ü  fogão;
ü  cozinheiro.
Copyright@2007, 2008, 2009: Arnaldo V. Moura
(receita):
ü 
Algoritmo.
01/03/17 18:57
3
AlgoritmosOquesão?
Algoritmo
Problema
Ideia
entrada
Algoritmo
saída
Hardware
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
4
AlgoritmosOqueoscaracteriza?
1.Algoritmoéformadoporumtextofinito:
éareceitadada.
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
5
AlgoritmosOqueoscaracteriza?
2.Otextoécompostoporinstruçõeselementares:
l
Ø  Elementardependedocontexto:
“ ...juntardoisovos...”éelementarparaum
cozinheiro;
– 
“...subsOtuirMpor(M-N)...”éelementarpara
quemdominaaritméOcabásica;
– 
“...sehojevocêpuderprovarqueacotaçãododólar
vaisubir10%nopróximomês,compre$1.000,00...” nãoéelementarparamortaisnormais.
– 
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
6
AlgoritmosOqueoscaracteriza?
3.Otextoéumareceitametódica,passoapasso:
—  Passoinicial;
—  Passofinal;
—  Executadoumpasso,estabelececlaramente
queéoseguinte.
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
7
AlgoritmosOqueoscaracteriza?
4.Aoexecutar:
—  parOndodedadosválidos,devesempre
terminar;
—  parOndodedadosnão-válidos,podeproduzir
lixo,oumesmonãoterminar;
—  partedi[cildegaranOr.
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
8
Algoritmos...ecomputadores
—  Algoritmo:
programa,so\ware,...
—  Computador,HD,disquete,...:
hardware,executores,atores,...
—  Entrada:
teclado,mouse,sensores,...
—  Saída:
monitor,impressora,...
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
9
Algoritmos...ecomputadores
CaracterísOcasdosalgoritmoscomoso\ware.
1.Textofinito(talvezmuitaslinhas).
2.Instruçõeselementares,paraocomputadorondeoso\warevai
executar.
Dificuldades:
—  CadacomputadortemumparOcularconjuntodeinstruções
básicas;
—  InstruçõesdocomputadorsãomuitoprimiOvas.
Solução:escreveralgoritmosemumalinguagemdeprogramação(C,
C++,JAVA,FORTRAN,...).
Programa(soYware):textoescritonumaparOcularLP.
Algoritmos...ecomputadores
CaracterísOcasdosalgoritmoscomoso\ware(cont):
3.Receitametódica:
textoescritoemumaLPéprecisoesemambiguidades.
4.Terminação:
1.  Grandedesafio:textoescritoemumaLPnãodeixaisso
claro.
2.  Problemasnodesenvolvimentodeso\ware:
—  execuçãosemterminação(i.e.com“loops”);
—  terminacomasoluçãoerradaoutem
interrupçãoabrupta.
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
11
Algoritmos...ecompilação
Umcomputadoréumamáquinaprogramávelmuito“primiOva”.
—  instruçõeselementares(demáquina)primiOvas.
—  lidamapenascomcadeiasde“bits”.
—  realizamoperaçõesmuitosimplessobreessascadeiasde
bits:
ü  trocarumbit(de0para1,oude1para0);
ü  armazenarnamemóriaumacadeiadebits;
ü  recuperardamemóriaumacadeiadebits.
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
12
Algoritmos...ecompilação
— 
ProcessodetraduzirprogramasescritosemumaparOcularLP
paracódigoeminstruçõesbásicasdeumamáquinaespecífica.
— 
TraduçãodeLPparalinguagemdemáquina.
Ø  Dificuldades:processolaborioso,entedianteesujeitoa
erros.
Ø  Solução:escreverumprogramaparafazeratradução.
Esseprogramaéum compilador!
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
13
Algoritmos...ecompilação
ParacadaLPecadacomputador(processador),é
necessárioumcompiladorespecífico.
ExistemmuitasLPs:
—  FORTRAN:cienhfica,maisanOga.
—  ALGOL,C,PASCAL:estruturadas,generalistas.
—  C++,C#,JAVA:lidamcomtecnologiadeobjetos.
—  LISP,PROLOG:voltadasparaIA.
—  ...(muitasoutras)
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
14
Algoritmos...ecompilação
Oprocessodecompilação/edição/execução:
problema
ideia
algoritmo programação
papel
programa
objeto(LM)
programa
fonte(LP)
arquivo
compilação
execução
solução
arquivo
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
15
Algoritmos...resolvendoproblemas
Entenderbemoproblemaaserresolvido:
— 
• 
• 
Criarumaideiapararesolveroproblema:
— 
• 
• 
• 
— 
separardadosdeentradaválidosdosquenãosãoválidos;
definircomoserárepresentadaasoluçãonasaída.
desenvolveroalgoritmo(processocriaOvo,lápisepapel);
simularexecuçãodoalgoritmoemcasosdecontorno;
verificarcorreçãoetérmino.
TraduziraidéiaparaumaLP,escrevendoumprograma:
•  érestritoaoscomandoseOposdedadosdaLP;
l
Editar/compilar/executaroprograma:
— 
• 
processoiteraOvoparareOrarerros(algoritmoecódigo).
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
16
Algoritmos...correção
Oalgoritmocorretamentesolucionaoproblema?
Provarumteorema(comoemmatemáOca)mostrandoqueo
algoritmoécorreto.
—  possívelexibiruma“provaformal”dacorreção?
—  Dificuldades:
ü  precisãoerigoraodescreveraexecuçãodo
algoritmo;
ü  especificaçãoformaldosdadosdeentradaesaída.
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
17
Algoritmos...resolvemqualquerproblema?
Questão: Dado um problema P, sempre haverá um algoritmo que
resolva P corretamente?
—  PdeveserumproblemapráOco,fácildeenunciar:
,
Ø  ordenarumconjuntodenúmerosinteiros;
Ø  calcularprodutodematrizes.
•  UmalgoritmoqueresolvaPdevefuncionarcorretamenteem
todasas(infinitas)entradasdeP:
Ø  todososconjuntosdeinteirosquaisquer;
Ø  quaisquerduasmatrizesdequaisquerdimensõescompahveisentresi.
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
18
Algoritmos...resolvemqualquerproblema?
ACiênciadaComputaçãotemarespostaparaaquestão
SURPRESA!
Não!Háproblemasparaosquaisnãoexistemalgoritmos
capazesderesolvê-loscorretamente.
Commaistecnologia(computadoresmaisrápidos,maismemória)
edadotemposuficientepararodaroprograma,poderemosresolver
essesproblemas,nofuturo,certo?
NÃO!
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
19
Algoritmos...resolvemqualquerproblema?
Umproblemaindecidível(insolúvel)[Harel,“ComputersLtd.”]:
DadoumconjuntofinitoTdeladrilhosquadrados:
Problema:podemosladrilharqualquergradequadradacom
ladrilhosdeOpoT,casandoascoresdasfacesquesetocam?
SIMouNÃO?
ü  podeusarquantosladrilhosquiser,decadaOpo.
ü  osladrilhosnãopodemsergirados.
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
20
Algoritmos...resolvemqualquerproblema?
Exemplo1:
SIM!
consegueparatoda
região.
Exemplo2:
NÃO!
todasasoutras
possibilidades
falhamnessa
regiãodoplano.
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
21
Algoritmos...resolvemqualquerproblema?
Problemadeladrilhartodaregiãodoplano
NENHUMcomputadorJAMAISvaiconseguirresolveresse
problema,nemagora,nemnunca,nemcomQUALQUER
melhoriadetecnologia,nemcomQUALQUERtamanhode
memória,nemcomQUALQUERtempodeexecução.
Podemos demonstrar isso, matematicamente!
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
22
Algoritmos...resolvemqualquerproblema?
Umproblemadecidível(solúvel)[Harel,“ComputersLtd.”]
DadoumconjuntofinitoTdeladrilhosquadrados:
Dadasduasposições(“I”e“F”)nagradeinfinitadoplano
Problema:podemosladrilharumcaminhonagrade,parOndo
de“I”echegandoem“F”,comladrilhosdeOpoT,ecasando
ascoresdasfacesquesetocam?SIMouNÃO?
ü  Podeusarquantosladrilhosquiser,decadaOpo.
ü  Osladrilhosnãopodemsergirados.
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
23
Algoritmos...resolvemqualquerproblema?
Exemplo:
F
I
Comessesladrilhos,
comessasposiçõesIeF:
SIM!
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
24
Algoritmos...resolvemqualquerproblema?
Problemadeladrilharumcaminhoentreduasposições
EXISTEumalgoritmoquedecidesehá,ousenãohá,umcaminho
entreasduasposiçõesdadas,usandoladrilhosdoconjuntodado.
Podemosexibiroalgoritmoemostrarsua
correçãoeterminação,nãoimportaqualoconjunto
TdadoenãoimportamquaisasposiçõesIeFdadas.
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
25
Algoritmos
... adianta executá-los?
Dado um problema P, e conseguido um algoritmo A para P, então podemos
resolver qualquer instância de P, com dados de entrada E, executando A
sobreosdadosE.
CORRETO?
— 
— 
NEMSEMPRE!
AoexecutarsobreE,oalgoritmoApodeprecisardeumtempomuito
longo(anos,séculos,milhõesdeséculos,...).
AoexecutarsobreE,oalgoritmoApodeprecisardeummuita
memória(váriosGBs,muitosmilhõesdeGBs,...).
Nessescasos,Aéumalgoritmoimprestável!
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
26
Algoritmos...adiantaexecutá-los?
SeAéumalgoritmoruim,entãobastacriaroutroalgoritmoparaP
quesejamaiseficiente(emtempoe/ouemmemória).
CORRETO?
SURPRESA!
PodeserquenãoexistaumalgoritmomaiseficientedoqueA
pararesolverP.TalvezpossamosprovarissomatemaOcamente!
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
27
Algoritmos...adiantaexecutá-los?
Exemplo: O jogo do bloqueio [Harel].
Dado um mapa rodoviário.
ê
Posições iniciais de J1 (jogador 1): I1.
Posições iniciais de J2 (jogador 2): I2.
ê
I1
I2
I1
F2
I1
I2
F1
Posições finais de J1: F1.
Posições finais de J2: F2.
Copyright@2007, 2008, 2009: Arnaldo V. Moura
I2
I1
è
F2
I2
F1
01/03/17 18:57
28
Algoritmos...adiantaexecutá-los?
Regrasdemovimentos
—  J1inicia;depoisosjogadoressealternam.
—  Emummovimento,umjogadorpodepercorrerqualquertrecho
(concatenado)demesmacor,parOndodeumaposiçãoocupadaporsi:
—  nãopodepassarporintersecçõesocupadas(porsioupelo
adversário);
—  pontofinaldeveestartambémdesocupado.
—  Vencedor:aquelejogadorquechegaraumpontofinalprimeiro.
Problema:SeráqueojogadorJ1temumaestratégiavencedora?
F2
F1
I2
Nesse mapa, nessas posições iniciais
e finais:
J1 tem estratégia (seq. de movimentos)
sempre vencedora.
I1
I1
F2
F1
Copyright@2007, 2008, 2009: Arnaldo V. Moura
I2
01/03/17 18:57
29
Algoritmos...adiantaexecutá-los?
Jogodobloqueio
AlgoritmoA:
—  Deformasistemá6ca,tentetodasaspossibilidadesdesequências
alternadasdemovimentos,começandocomJ1.
Possível:
—  númerofinitodepossibilidades.
Dificuldade:
—  onúmerodepossibilidadeséenormepois:
• 
paracadamovimentodeJ1,devetentartodososmovimentosdeJ2;
• 
paracadamovimentodeJ2,devetentartodososmovimentosdeJ1.
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
30
Algoritmos...adiantaexecutá-los?
Es6mandootempodeexecuçãodoalgoritmoA
—  UmaquanOdade,n,medeo“tamanho”(num.debitsna
representação)daentrada:
ü porexemplo,npodeseronúmerodeintersecções,ouo
númerodevias,ou....
—  Tempodeexecução:
ü dadopelacontagemdonúmerodepassoselementares
queAexecuta,nopiorcaso,paraentradasdetamanhon;
ü nestecaso,édadopelafunçãof(n) = 2^n.
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
31
Algoritmos...adiantaexecutá-los?
Tempo de execução do algoritmo A
Emumcomputadorquerealiza1milhãodepassoselementares
porsegundo,otempodeexecuçãodeAseria:
n
10
20
50
60
100
200
f(n)=2^n
1 ms
1s
35.7
anos
3.000
anos
+ 400 trilhões
anos
num. séc. tem
45 dígitos!
para50oumaiscidades!
RodandoAemumcomputador10.000vezesmaisrápido:
n
50
60
100
200
f(n)=2^n
1,29
dias
3
anos
+ 40 bilhões
séc.
num. séc. tem
41 dígitos!
Impra6cávelpara60oumaiscidades-quasenadamuda!
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
32
Algoritmos...adiantaexecutá-los?
AlgoritmoAnãoébomparaoproblemadobloqueio.
—  Precisamosdeoutroalgoritmo,maiseficiente!
—  Oqueéumalgoritmo“eficiente”?
•  n:éotamanhodeumaentradaválida.
•  f(n):quantospassos,nomáximo,Aexecutacomentradasde
tamanhon.
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
33
Algoritmos...adiantaexecutá-los?
com um milhão de passos por segundo:
n
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
séculos
400 trilhões
séculos
45 dígitos
n^n
2,8s
3,3 trilhões
anos
séculos
70 dígitos
séculos
185 dígitos
séculos
445 dígitos
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
34
Algoritmos...adiantaexecutá-los?
Temposdeexecução,depiorcaso:
— 
Polinomiais:resultamemalgoritmoseficientes;
— 
Exponenciais:resultamemalgoritmosnãoeficientes;
Problemastratáveis:têmalgoritmospolinomiais;
Problemasintratáveis:nãotêmalgoritmospolinomiais;
Problemadobloqueio:éintratável.
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
35
Algoritmos...nossaignorância
DadoumproblemaP,comosaberseétratável?
SURPRESA!
ParamuitosproblemasdegrandeinteressepráOco,
nãosabemossesãotratáveisounão!
Essaéumdasmaioresquestõesemabertoem
CiênciadaComputação!
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
36
Algoritmos...nossaignorância
Exemplo:problemadocaixeiroviajante
— 
Dado:
•  mapadecidades,comcustodeviagementrecadaparde
cidades;
•  cidadedeinício,I,cidadedetérmino,F;
•  umvalorK.
— 
Problema:
•  existerota,deIatéF,visitandotodasascidades
exatamenteumavez,comcustonomáximoK?
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
37
Algoritmos...nossaignorância
Instância:
O valor máximo do
percurso: 29
6
3
I
4
10
9
8
10
F
4
3
7
2
9
5
7
4
Copyright@2007, 2008, 2009: Arnaldo V. Moura
Existe um percurso?
SIM / NÃO
01/03/17 18:57
38
Algoritmos...nossaignorância
6
6
3
I
3
4
10
9
8
I
10
4
F
3
7
2
10
3
F
9
5
2
7
4
K=29
4
SIM
3+6+10+4+2+3 = 28
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
39
Algoritmos...nossaignorância
6
3
I
4
10
9
8
I
10
4
F
3
7
2
???
F
9
5
7
4
K=25
Copyright@2007, 2008, 2009: Arnaldo V. Moura
Com esse custo não é possível!
NÃO
01/03/17 18:57
40
Algoritmos
... nossa ignorância
Algoritmoparaoproblemadocaixeiroviajante
— 
ParOndodaposiçãoI,tentetodasaspossibilidadesquefiquem
dentrodocustoK:
•  SeacharumcaminhoatéF,respondaSIM;
•  Senãoachar,respondaNÃO.
— 
Númerodepossibilidadeséfinito,
•  algoritmocorretamenteresolveoproblema.
— 
Númerodepossibilidadesémuitogrande,
•  tempodeexecuçãoéexponencialnonúmerodecidades.
Oalgoritmoéimpra6cável!
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
41
Algoritmos...nossaignorância
Problema do caixeiro viajante
Existe um algoritmo mais eficiente
(polinomial no número de cidades)?
NÃO SABEMOS !
Esse é o caso de muitos outros problemas de
interesse prático (classe NP).
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
42
Algoritmos...alternativas
O que podemos fazer, por ora?
— 
— 
— 
— 
— 
Uso de heurísticas:
ü 
obtém “boas” soluções, sem garantia de otimalidade.
Algoritmos randomizados:
ü 
dão a resposta correta quase sempre.
Algoritmos aproximativos:
ü 
dão solução com garantia de proximidade da ótima.
Computação quântica:
ü 
baseado na mecânica quântica, nova maneira de programar.
Computação molecular:
ü 
paralelismo maciço usando reações moleculares.
...
Copyright@2007, 2008, 2009: Arnaldo V. Moura
01/03/17 18:57
43
Download