Anda di halaman 1dari 4

1

LaimportanciadelaTeoradeAlgoritmosenel DesarrollodeSoftware
OjedaR.,Hermes, EstudiantedeIngenieraenComputacin, OctavoSemestre,GrupoA,UTM
Abstract El anlisis y el diseo de algoritmos es una disciplinamuyimportanteenComputacin,yenestedocumento sehaceunarevisindelaimportanciadelosmismos,ascomoel usoyelalcanceenelprocesodedesarrollodesoftware.

II.LAIMPORTANCIADELOSALGORITMOS Consideroconvenientehacerunarevisindelaimportancia delateoradealgoritmosenotrasreasajenasaldesarrollo desoftware,yaquelaimportanciaenestarea,sertratadaa detallemsadelante. Algunosejemplosdelusodelosalgoritmosendiferentes reas,seranlassiguientes: A.Algoritmosenlavidacotidiana. Enlavidacotidianausamosalgoritmosenmuchoslugares, claroqueenestosnoseusamucholateoradealgoritmos parahacerlosmseficientes,perosiguensiendoimportantes graciasasucotidianeidad,algunosejemplospuedenser: Al seguir una receta de cocina, se siguen un cierto algoritmoparapodercocinarelplatillodeseado. Al marcar el telfono se siguen ciertos pasos, y se podranmodelarestos,pormediodeunalgoritmo. Alquererllegaraunlugarenautomvil,usamosun algoritmo,aunquedeformaemprica,detalformaque nospermitallegaraldestino,buscandolarutamscorta. B.Algoritmosenmatemticas Enmatemticasexistenunagrancantidaddeejemplosde algoritmos,pormencionaralgunostenemoslossiguientes: Elalgoritmodelamultiplicacin,parapoderrealizar unmultiplicacinde2nmerosenteros,sesigueun ciertoalgoritmo,avecesmuysencilloyaprendido desdelaeducacinprimaria,estehasidoestudiado para que pueda ser realizado de formas ms eficientes. Generacin de nmeros primos: Comnmente se usan algoritmos sencillos como la Criba de Eratstenes, pero con conocimientos matemticos, comoteoradenmerosylgebra,ascomodeteora dealgoritmos,cadavezestosmtodossehanvuelto mseficientes. Clculodelmximocomndivisor:Paraestoexisten

I.INTRODUCCIN

Uambiguos para solucionar un problema. Los algoritmos

nalgoritmoesunconjuntofinitodepasosrealizablesyno

formanunodelospilaresdelacomputacinactual,aunquesu uso no se limita solamente a esta rama, sino a tambin a cienciascomolasmatemticas,ascomoalavidacotidiana [1]. Nosolodelusomasivodelosalgoritmosesdedondese derivasuimportancia,sinodelosaportesquelehadadoala computacinyaotrasciencias. Lateoradealgoritmosesunaramadelacomputacin,en donde se analizan las bases tericas que envuelven a los algoritmos, as como las bases para diseos de algoritmos eficientes. Existeunagrancantidaddealgoritmosquesonusadosa diario, como algoritmos de bsqueda, de ordenamiento, de encriptacin, de compresin, matemticos, etc. y de su anlisissurgenunagrancantidaddeavances. Algunosejemplosdeusocotidianoparalosusuariosdelas computadoras,puedenser: Algoritmo de Huffman: Usado para compresin de datosycriptografa[2],eslabasedemuchosprogramas comercialesdecompresin. GoogleSearchEngine:Usadoadiariopormillonesde personas parabsquedaeninternet.Esunconjuntode algoritmosdebsquedapartedelapatentePageRank [3],queesusadoenelbuscadorGoogleTM. DES : (Data Encryption Standar) Se podra traducir como Estndar de Encriptacin de Datos, diseado y aprobadoporelgobiernodelosEstadosUnidosen1977 [4], es usado en las diferentes distribuciones de Unix, incluyendoLinux,comoprimeramedidaparaencriptar lospasswordsdeusuario[5]. Estos algoritmos son simplemente una muestra de uso cotidiano en computacin, ya que se podran mencionar muchomsejemplos.

2 algoritmos intuitivos sacados de conocimientos bsicosdelgebra,peroconalgunosconocimientos deteoradenmerosyteoradealgoritmos,sehan encontrado mtodos muy eficientes de calcular el mximocomndivisor. Como una muestra de ejemplos sencillos de algoritmos matemticos,soloseenumeranlosanteriores,aunquepodran enumerarsemuchosms,ydecomplejidadmayor. C.AlgoritmosenlaIndustria Laaplicacindelosalgoritmosenlaindustriavarandel problema que se desee abordar. Para este rubro se mencionarn2ejemplosaplicados. Desarrollo y aplicacin de algoritmos de diseo de redespararesolverproblemasaplicadosalaindustria. Este es un proyecto realizado por un profesor de la universidad de Chile, y apoyado por el gobierno del mismopas.[6] Optimizacindelosdimetrosdelastuberasdeuna reddedistribucindeagua medianteelalgoritmode recocidosimulado.Elproblemaengeneralconsisteen disearycolocartuberasparaconduciragua,desdelos puntosfuenteshastalosdemandantes,satisfaciendosus requerimientosencuantoagastoypresin,yqueelcosto deconstruccindelaredseamnimo.[7]Parasolucionar esteproblemaseuslateoradealgoritmosmediantela aplicacin y simulacin de un algoritmo heurstico denominadoRS(Kirkpatricketal.1983)[8]. Unejemplogeneral,eselusodealgoritmosdiversos enlosestndaresdeinstitutoscomoelIEEE.[9] Conunainvestigacinmsprofunda,sepodranencontrar muchos ms ejemplos de proyectos reales, en donde interviene directamente la teora de algoritmos. Adems puedenexistirproblemasdondeseapliqueindirectamentela teoradealgoritmos,porejemplo,yateniendounprocesoen la industria, mejorarlo aplicando tcnicas de optimizacin comopuedeserlaprogramacindinmica,oalgunaotra. D.Algoritmosaplicadosenlacomputacin Algunos algoritmos matemticos, y algunos que han surgido despus de varias investigaciones en el campo de teora de nmeros, se han aplicado directamente en la computacin, sin formar parte directa del proceso de desarrollodesoftware. Algunos ejemplos, pueden ser los mencionados en la introduccin,ascomoalgunosotros,entrelosquesepueden enumerarlossiguientes: Bsqueda de nmeros primos muy grandes. Un ejemplodelaaplicacindirectadelosalgoritmosylas mejoraslogradasconmatemticasyteoradealgoritmos, sepuedeverenlabsquedadelosnmerosprimosms grandes,conocidoshastaelmomento.[10] El mejoramiento de algoritmos de compresin de imgenescomoelusadoenlosformatosJPEG,oGIF. Laimportanciaotorgadaalateoradealgoritmosen concursosinternacionalesdeprogramacincomosonel CodeJam, organizado por TopCoder y patrocinado Google [11]. El ICPC organizado por la ACM y patrocinadoporIBM[12],yalgunosotroscomoImagine Cupndia2006[13],estaimportanciaquelebrindanestos concursossedebeprincipalmentealagranimportancia que tiene la teora de algoritmos para el desarrollo tecnolgico. Laimportanciadelateoradealgoritmosenaspectosde computacinquenoestnrelacionadosdirectamenteconun procesodedesarrollodesoftwareesmuydiversa. Astambinsepuedenmencionarreasdelconocimiento diferentes, en cualquier rea donde se requiera que un proceso,mtodooalgoritmosseamseficienteseabreuna puertaparalaaplicacindelateoradealgoritmos.

III.IMPORTANCIADELATEORADEALGORITMOSENELDESARROLLODE SOFTWARE Despusdehaberanalizadolaimportanciadelateorade algoritmosencamposdiferentesalprocesodedesarrollode software, ahora revisaremos cual es la importancia en este campo. Loprimeroquehayquetomarencuenta,esqueelproceso de desarrollo de software el que se sigue para obtener un software,dondeestenosoloincluyelaimplementacin,sino queademstodaladocumentacinrelacionadaconelmismo. Primeroanalizaremosalsoftwaretomandoencuentaque este es un programa, segn Nicklaus Wirth, Programa = Algoritmos+EstructurasdeDatos.[14]Sianalizamosesto podremosverqueunapartefundamentalparalacreacinde unprogramaeselalgoritmoausar.Estoquieredecir,quesise quiere construir unsoftwareeficiente,se tiene queusarun buenalgoritmo. Existe una gran cantidad de software comercial, el problema principal radica en conocer que aplicacin de la teoradealgoritmosdentrodeldiseodesusoftware,estoes muy complicado al no poseer el cdigo fuente o la documentacintcnicadetalladadelsoftware.Enesteaspecto elsoftwarelibrenosdaunabuenaalternativaparaconocersi seaplicalateoradealgoritmoseneldesarrollodesoftware, ademsdepermitiraplicarladirectamente,siunolodeseara. El software libre, nos brinda la gran ventaja de poder modificarelcdigo,porlotantosisehicieraunrevisindel algoritmousadoenunsoftwaredeterminadoyseidentifica queestenoeselmseficienteparaelpropsitodelmismo, estesepodrmodificar.Entodoslosprogramasdelsoftware libre es lo que sucede, y es lo que hace que este tipo de softwarepuede competirconel software comercial, yaque mejora da con da gracias al aporte de muchos programadores, logrando hacer al software cada da ms

3 eficiente.Peroelalcancedeestedocumentonoesanalizar especficamenteunsoftwareylaeficienciadesualgoritmo, sinohacerunarevisingeneraldelaaplicacindelateorade algoritmoseneldesarrollodesoftware. Un ejemplo claro de el uso de mejores algoritmos y la preocupacin en la eficiencia de los mismos los podemos encontrarenprogramascomoMatLabTM,Octave,etc.queson programasmatemticosylaeficienciadelosalgoritmoses esencial. En general en el software en donde implique simulacionesycalculosmatemticos,lateoradealgoritmos esunaparteclavedesudiseo. Otrotipodesoftwareendondelateoradealgoritmosha tenidounagranaplicacinesenlojuegos,yaqueusanuna gran cantidad de algoritmos para las simulaciones, las bsquedas de caminos, la inteligencia aritificial de los personajes,elmejoramientodelosmotoresgrficos,etc. Unejemplomuyclaro,estenlabsquedadecaminos,en los primeros juegos clasificados como de estrategia el algoritmodelabsquedadecaminosnoeramuyeficiente,se puedeverenjuegoscomoelAgeofEmpiresTM,pordarun ejemplo, pero en los nuevos juegos que entran en esa categoraestetipodealgoritmoshamejoradomucho.Aunque esdedestacarjuegoscomoelCommand&ConquerTM,quea pesardeserunodelosprimerosjuegosdeestrategia,usaba unalgoritmodebsquedadecaminosmuyeficiente. Elmejoramientodeestetipodealgoritmosascomodelos deinteligenciaartificial,hacenqueeldesarrollodesoftware dejuegos,seaunbuenejemplodondeseaplicalateorade algoritmos. Otrotipodesoftwareenelquelaeficienciaesescencial,y laaplicacindelateoradealgoritmosesmuyimportantees en los manejadores de bases de datos, ya que por el gran volumen de datos que se tienen que manejar as como la importanciadeunarespuestarpidaycorrecta,requieredeun algoritmoeficiente. Sisesiguierananalizandotodos lostipos desoftwarese podra ver, que mientras se requiera que el software sea eficiente, seguramente se tendran que aplicar ciertos conocimientosdeteoradealgoritmosparalograrlo. Al analizar el proceso de desarrollo de software, a este mismoprocesoselepuedevercomounalgoritmo,yaqueson una serie de pasos que se siguen para la construccin del software. Esto es algo que se debe tener muy en cuenta, porquedelaeficienciadeeste,dependeengranmedidael resultado final del proceso. Aunque los procesos de desarrollo no se pueden analizar con la rigurosidad matemtica con la que a veces se aplica la teora de algoritmos,yaquesonalgoritmosquesepodratomarcomo de propsito general, y son adaptables a diferentes proyectos.Comounejemploclarodeestetipodeprocesosse encuentra el RUP (IBM Rational Unified Process)[15], queaunqueparaestenoseaplicconrigurosidadlateorade algoritmos,conbasealaexperienciademuchaspersonas,y buscando que el proceso fuera lo ms eficiente posible, y adaptable a diferentes proyectos, se diseo ese proceso de desarrolloquemuyusado.Tambinsepodramencionarotro procesodedesarrolloapoyadoporlasecretaradeeconoma como una opcin mexicana para mejorar el desarrollo de software,Moprosoft(ModelodeProcesosparalaIndustriade Software)[16]. IV.CONCLUSIN La conclusin que pudo saltar a la vista, despus del anlisisrealizadoenestedocumento,esquelaimportanciade lateoradealgoritmos,ydelosalgoritmosporsmismo,van desde la vida cotidiana hasta actividades matemticas complejas,ascomolosprocesosdedesarrollodesoftwarey laaplicacinenlaindustriaparasolucionarciertosproblemas oparaayudaraalmejoramientodeciertosprocesos. Enlosprocesosdedesarrollodesoftwarelaimportanciade lateoradealgoritmosrecaeescencialmenteenlaeficiencia delsoftware,eindirectamenteenelanlisisdelprocesode desarrollo que se siga para desarrollar la aplicacin. La aplicacindelateoradealgoritmosparalograrlaeficiencia del software se puede ver desde los juegos, hasta software matemtico,pasandoportodolagamadesoftwareexistente. Paralograrestaeficiencia,setienen3caminos,aplicarlos conocimientos generados anteriormente por la teora de algoritmos sin modificacin alguna, usar la teora de algoritmosparadisearunnuevoalgoritmolomseficiente posible para la aplicacin que se est trabajando, o en su defecto modificar la teora de algoritmos ya existente, hechandomanodetodaslasherramientasposibles,parapoder adaptarunalgoritmoquecumplalasnecesidadesdeeficiencia paranuestraaplicacin. Con todo esto se puede concluir, que en el aspecto de desarrollo de software la teora de algoritmos es la herramientaprincipalparalograrunsoftwareeficiente. REFERENCIAS
[1] [2] [3] [4] [5] [6] WikipediaAlgoritmo http://es.wikipedia.org/wiki/Algoritmo. GarcaRamrez,Joaqun ccc.inaoep.mx/~cferegrino/cursos/comprcrip/Huffman.pdf. MetamedSoftware&DesignLtd. http://www.metamend.com/google.html MyCripto.net http://www.mycrypto.net/encryption/crypto_algorithms.html LinuxDocumentationProject http://www.linux.org/docs/ldp/howto/SecurityHOWTO/password security.html EpsteinNumhauser,Rafael. Desarrolloyaplicacindealgoritmosdediseoderedespararesolver problemasaplicadosalaindustria. 2001.8p. http://www.conicyt.cl/bases/fondecyt/proyectos/01/1999/1990350.html IngenierahidrulicaenMxico. Optimizacindelosdimetrosdelastuberasdeunareddedistribucin deaguamedianteelalgoritmoderecocidosimulado.Vol.XVIII, nmeroI,IIpoca.Eneromarzo2003. Curriculumvitae,ScottKirkpatrick http://www.cs.huji.ac.il/~kirk/SK_cv2004.ps

[7]

[8]

4
[9] [10] [11] [12] [13] [14] [15] [16] IEEE(InstituteofElectricalandElectronicsEngineers) http://standards.ieee.org/db/status/index.shtml Llevaelregistrodelos5000nmerosprimosmsgrandesconocidos. http://primes.utm.edu/largest.html GoogleCodeJam http://www.google.com/codejam/ ACMInternationalCollegiateProgrammingContest http://icpc.baylor.edu/ ImagineCupndia2006 http://www.msuniversidades.com/sites/universidades/IC2006/index.aspx Algorithms+DataStructures=Programs NicklausWirth PrenticeHall,1986 RationalUnifiedProcess http://www306.ibm.com/software/awdtools/rup/ Software.net.mx http://www.software.net.mx/inicio/

Anda mungkin juga menyukai