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