01 algorimos e complexidade introduç o
Post on 16-Apr-2017
245 Views
Preview:
TRANSCRIPT
•Objectivo:• Conhecer os conceitos e técnicas básicas de cálculo decomplexidade algorítmica que servirão de bases para acompreensãodadisciplina.
• Algoritmo: uma sequência finita (lógica) de operações que apartirdeumconjuntodevariáveiscomoentradaproduzumasaídadesejada.
• Umalgoritmoéumasequêncianãoambíguade instruçõesqueéexecutada até que determinada condição se verifique. Maisespecificamente, em matemática, constitui o conjunto deprocessos (e símbolos que os representam) para efetuar umcálculo.
• AanálisedealgoritmoséumaatividadequecontribuiparaoentendimentofundamentaldaCiênciadaComputação.Aconstruçãodeumalgoritmodevevisarnãoapenasàsoluçãode um determinado problema, mas à construção de um algoritmo bom, ou seja, quesolucione o problema e seja eficiente. Conhecer a complexidade de um algoritmo éimportanteparapoderdecidirseaimplementaçãodoalgoritmoéviável.
• Acomplexidadedealgoritmosconsistenaquantidadedetrabalhonecessáriaparaasuaexecução, expressa em função das operações fundamentais, as quais variam de acordocomoalgoritmo,eemfunçãodovolumededados.
• Umadasmaisimportantesmedidasdecomplexidadedealgoritmoséamedidadetempo.IstosejustificaemrazãodeboapartedapesquisaemCiênciadaComputaçãoconsistirdoprojeto e análise de algoritmos em relação à eficiência, ou seja, projetar algoritmosqueforneçamasoluçãodoproblemaemtempoaceitável.
• Quandoexistemaisdeumalgoritmoparaaresoluçãodeummesmoproblemaénecessárioqueoanalistapossaidentificarqualdosalgoritmoséomaisindicado,sejaemtermosdeprecisãooutempodeexecuçãoNestemomentoumametodologiaqueauxilienoprocessodeanáliseseriaomais indicado para que o analista pudesse fazer, com boa margem de segurança, a melhorescolha.
Análisedealgoritmos• Oquesignifica?• Preverosrecursosqueoalgoritmonecessitará• Tempo,memória,larguradebanda,hardware...
• OTempo• Númerodeoperaçõesprimitivasouetapasexecutadas• Dependedotamanhodaentrada
• Formasdeanalisar• Contartodasasinstruções–custoexacto.• Contar as instruçõesmais importantes (mais executadas,mais caras) – custoaproximado.
Análisedealgoritmos• Damesma forma que distinguimos um algoritmo de sua aplicação auma particular “entrada”, convém distinguir problemas de suasinstâncias. Todo problema computacional é uma colecção deinstâncias.
• Cada instânciadoproblemaédefinidaporumparticularconjuntodedados.Otamanhodeumainstânciadeumproblemaéaquantidadededados necessária para descrever a instância. O tamanho de umainstânciaédescrito,emgeral,porumsónúmeronatural,masàsvezeséconveniente usar dois ou até mais números. A ideia de tamanhopermitedizerqueumainstânciaémenoroumaiorqueoutra.
• Apalavrainstânciaéumneologismoimportadodoinglês.Elaestásendoempregadaaquinosentidodeexemplo,espécime,amostra,ilustração.
•Comoéfeitaaescolhadeumalgoritmo,ouquaisoscritériosautilizar?
•Facilidadedecompressão,codificaçãoedepuração.•Eficiêncianautilizaçãodosrecursosdocomputadorerapidez.
• A analise de um algoritmo fornece uma medida objectiva dedesempenhoproporcionalaotempodeexecuçãodoalgoritmo.
CaracterísticasdosAlgoritmos• Independente: Não depende de linguagem de programação ou de maquina(computador).
• Definido:Algoritmodeveterpassosclaroseconcretos.• Finito:Umalgoritmocomeçaeprecisaquesejaterminado(tenhafim)• Preciso:Cadapassoprecisaumcalculocorrecto.• Capacidadedereceberdado(s)deentradadomundoexterior;• Poder gerar informações de saída para o mundo externo ao do ambiente doalgoritmo;
• Serefetivo(todasasetapasespecificadasnoalgoritmodevemseralcançáveisemumtempofinito).
• Nãodarmargemàduplainterpretação(nãoambíguo)
QualidadesdeumAlgoritmo
Abaixoalgumasdasqualidadesdosalgoritmos:
• Geral:Edesejávelqueoalgoritmosejacapazderesolverumaclassedeproblemasomaisamplopossível.
• Eficiente: Um algoritmo é eficiente quanto menos recursos em tempo, espaço (dememória)eprocessadoresconsumir.
• Corretude(Correto):Paraqualqueralgoritmo,nósdevemosprovarqueelesempreretornaasaídadesejadaparatodasasinstânciasválidasdoproblema.
• Levandoemconsideraçãoqueumproblemapodetermasdeumavidadesolução,temosquesercapazesdedecidirqualéoalgoritmomaiseficiente,oquemenostempodemoreemresolveroproblema,oquemenosrecursosutilize.
• Demodogeralédifícilencontrarumalgoritmoquereúnatodasasqualidades,masoquedevemos procurar é um algoritmo que satisfaça melhor os requisitos de um dadoproblema.
Tempo de execução, recursos de sistema usados,portabilidadeefiabilidade.Ouseja,seualgoritmopodeser portado para qualquer aplicativo que necessitedaquele processamento para o qual seu algoritmo foicriado.Issoéimportantequandosetrabalhaemescala,fazendomaisdeumsoftware.
Seualgoritmoécapazde lidarcom todosospossíveiserros que possam ser introduzidos em dados ou pelousuário?
Complexidade
•Oqueéacomplexidade?
•Porqueanecessidadedecriarmosnovosalgoritmosparaproblemasquejátêmsolução?
•Porqueoestudodacomplexidade?
Complexidade
•A Complexidade de um algoritmo consiste naquantidadede"trabalho"necessáriaparaasuaexecução, expressa em função das operaçõesfundamentais,asquaisvariamdeacordocomoalgoritmo,eemfunçãodovolumededados.
Complexidade
• Complexidade: Visa definir a expressão matemática que expressa aquantidadedepassosgastosporumalgoritmopararesolverumcertoproblemaemrelaçãoaotamanhodaentrada.• Acomplexidademedeo temporelativodeexecuçãoe/ouusodamemória.Umaanálise da complexidade de um algoritmo pode-se focar em uma série deespecificações quanto sua execução e/ou uso damemória, como omelhor casopossível,oque,ematémesmoocasomédio.Damesmamaneirapode-sedesejaracomplexidadetotal(oureal)apenasacomplexidadeassintótica.
Complexidade
• Muitas vezes as pessoas quando começam a estudar algoritmosperguntam-sequalanecessidadededesenvolvernovosalgoritmosparaproblemas que já têm solução. A performance é extremamenteimportantenainformáticapeloqueexisteumanecessidadeconstantede melhorar os algoritmos. Apesar de parecer contraditório, com oaumento da velocidade dos computadores, torna-se cada vez maisimportantedesenvolveralgoritmosmaiseficientes,devidoaoaumentoconstantedo"tamanho"doproblemasaseremresolvidos.
• Devido a este factor surge aComplexidade Computacional, pois eatravésdelaque se torna possível determinar se a implementaçãodedeterminadoalgoritmoéviável.
Complexidade
•ComplexidadedeAlgoritmos
•Aeficiênciade umalgoritmopode sermedida atravésdeseutempodeexecução.
•Éamelhormedida???
Complexidade
•O tempo de execução não depende somente doalgoritmo, mas do conjunto de instruções docomputador, a qualidade do compilador, e ahabilidadedoprogramador?
•O tempo de execução de um algoritmo para umadeterminadaentradapodesermedidopelonúmerodeoperaçõesprimitivasqueeleexecuta.
ComplexidadeAlgorítmica
Esta selecçãopodeserexecutadadamaneiramaissimplesdesdecomoobservaraquantidadede linhasdoprograma,masquandooprogramacresceserequerumamedição mas exacta e apropriada, por isso se realizam certas operaçõesmatemáticasquegarante aeficiênciateóricadoprograma,aoestudodestescasossedenominaComplexidadeAlgorítmica.
• Aeficiênciadeumalgoritmopodeserquantificadacomasseguintesmedidasdecomplexidade.• Complexidade Temporal, ou tempo de execução é o tempo necessário para executar algumprograma.
• ComplexidadeEspacial:Memóriaqueutilizaumprogramaparasuaexecução,Aeficiênciaemmemóriadeumalgoritmoindicaaquantidadedeespaçorequeridoparaexecutaroalgoritmo.
ComplexidadeAlgorítmica
• ParaissovamosachamarotamanhodosdadosodaentradacomNetentaremoscalcularacomplexidadeemfunçãodeN.Entendemosportamanhoda entradao númerode componentes sobre os que se vá aexecutaroalgoritmo.Porexemplo,adimensãodovectoraordenarouotamanhodasmatrizesamultiplicar.
• A unidade de tempo a que deve fazer referencia estas medidas deeficiêncianãopodeserexpressadaemsegundosouemoutraunidadede tempo concreta, pois não existe um ordenador standard a quepossamfazerreferenciatodasasmedidas.
AnáliseAssintótica.
• Sabemosquedentrodaáreadeinformáticaasdisciplinasmaiscomplexasecom maior índice de reprovação nos cursos superiores são algoritmos eestrutura de dados e, na maioria das vezes, um bom conhecimento deanáliseassintóticaresolveriaoproblemaoufacilitariaacompreensãodetemasmaisavançados.
• Fazer uma análise assintótica é se preocupar com valores grandes deentrada para o processamento do algoritmo, com o intuito de calcular otempo total de processamento e viabilidade para determinados casos.Muitas vezes com isso podemos ser capazes de saber se é necessária autilização de outrametodologia ou ferramenta para a realização de umatarefa.
AnáliseAssintótica.
• Junto com o estudo de análise assintótica, temos o conceito de notaçãoassintótica,queéa representaçãomatemáticacriadaporPaulBachmannnoséculoXIX.Nela,temostrêsnotaçõescomunsparaclassificarasordensdas funções,essasordensdeterminamaequivalênciadas funções,ousejapodemos teruma funçãoquesejado tipon²,essa funçãoéequivalenteàfunção 400n². Sãoequivalentesassintoticamente falando, lembrandoquesemprenospreocupamoscomvaloresdeentradagrandesparan.As trêsprincipais classificações de ordem são: Ordem O. “Ordem Ômega eOrdemTheta.Pesquisar:TheArtofComputerProgramming(deKnuth).“
top related