P. 1
Importancia de Los Algoritmos

Importancia de Los Algoritmos

|Views: 884|Likes:

More info:

Published by: Jose Antonio Sandoval Zapata on Jun 19, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

07/31/2014

pdf

text

original

1

La importancia de la Teoría de Algoritmos en el  Desarrollo de Software
Ojeda R., Hermes,  Estudiante de Ingeniería en Computación,  Octavo Semestre, Grupo A, UTM
Abstract—   El   análisis   y   el   diseño   de   algoritmos   es   una  disciplina muy importante en Computación, y en este documento  se hace una revisión de la importancia de los mismos, así como el  uso y el alcance en el proceso de desarrollo de software.

II.LA IMPORTANCIA DE LOS ALGORITMOS Considero conveniente hacer una revisión de la importancia  de la teoría de algoritmos en otras áreas ajenas al desarrollo  de  software, ya que la importancia en esta área, será tratada a  detalle más adelante.  Algunos ejemplos del uso de los algoritmos en diferentes  áreas, serían las siguientes: A. Algoritmos en la vida cotidiana. En la vida cotidiana usamos algoritmos en muchos lugares,  claro que en estos no se usa mucho la teoría de algoritmos  para hacerlos más eficientes, pero siguen siendo importantes  gracias a su cotidianeidad, algunos ejemplos pueden ser: – Al   seguir   una   receta   de   cocina,   se   siguen   un   cierto  algoritmo para poder cocinar el platillo deseado. – Al   marcar   el   teléfono   se   siguen   ciertos   pasos,   y   se  podrían modelar estos, por medio de un algoritmo. – Al querer llegar a un lugar en automóvil, usamos un  algoritmo, aunque de forma empírica, de tal forma que  nos permita llegar al destino, buscando la ruta más corta. B. Algoritmos en matemáticas En matemáticas existen una gran cantidad de ejemplos de  algoritmos, por mencionar algunos tenemos los siguientes: – El algoritmo de la multiplicación, para poder realizar  un multiplicación de 2 números enteros, se sigue un  cierto algoritmo, a veces muy sencillo y aprendido  desde la educación primaria, este ha sido estudiado  para   que   pueda   ser   realizado   de   formas   más  eficientes. – Generación   de   números   primos:   Comúnmente   se  usan   algoritmos   sencillos   como   la   Criba   de  Eratóstenes,   pero   con   conocimientos   matemáticos,  como teoría de números y álgebra, así como de teoría  de algoritmos, cada vez estos métodos se han vuelto  más eficientes. – Cálculo del máximo común divisor: Para esto existen 

I.INTRODUCCIÓN

Uambiguos   para   solucionar   un   problema.   Los   algoritmos 

n algoritmo es un conjunto finito de pasos realizables y no 

forman uno de los pilares de la computación actual, aunque su  uso   no   se   limita   solamente   a   esta   rama,   sino   a   también   a  ciencias como las matemáticas, así como a la vida cotidiana  [1].  No solo del uso masivo de los algoritmos es de donde se  deriva su importancia, sino de los aportes que le ha dado a la  computación y a otras ciencias.   La teoría de algoritmos es una rama de la computación, en  donde   se   analizan   las   bases   teóricas   que   envuelven   a   los  algoritmos,   así   como   las   bases   para   diseños   de   algoritmos  eficientes.  Existe una gran cantidad de algoritmos que son usados a  diario,   como   algoritmos   de   búsqueda,   de   ordenamiento,   de  encriptación,   de   compresión,   matemáticos,   etc.   y   de   su  análisis surgen una gran cantidad de avances. Algunos ejemplos de uso cotidiano para los usuarios de las  computadoras, pueden ser:  – Algoritmo   de   Huffman:   Usado   para   compresión   de  datos y criptografía [2], es la base de muchos programas  comerciales de compresión. – Google Search­Engine: Usado a diario por millones de  personas  para búsqueda en internet. Es un conjunto de  algoritmos de búsqueda parte de la patente “PageRank”  [3], que es usado en el buscador GoogleTM. – DES   :   (Data   Encryption   Standar)   Se   podría   traducir  como   Estándar   de   Encriptación   de   Datos,   diseñado   y  aprobado por el gobierno de los Estados Unidos en 1977  [4],   es   usado   en   las   diferentes   distribuciones   de   Unix,  incluyendo Linux, como primera medida para encriptar  los passwords de usuario[5]. Estos   algoritmos   son   simplemente   una   muestra   de   uso  cotidiano   en   computación,   ya   que   se   podrían   mencionar  mucho más ejemplos.

2 algoritmos   intuitivos   sacados   de   conocimientos  básicos de álgebra, pero con algunos conocimientos  de teoría de números y teoría de algoritmos, se han  encontrado   métodos   muy   eficientes   de   calcular   el  máximo común divisor. Como   una   muestra   de   ejemplos   sencillos   de   algoritmos  matemáticos, solo se enumeran los anteriores, aunque podrían  enumerarse muchos más, y de complejidad mayor. C. Algoritmos en la Industria La aplicación de los algoritmos en la industria varían del  problema   que   se   desee   abordar.   Para   este   rubro   se  mencionarán 2 ejemplos aplicados. – “Desarrollo  y  aplicación  de   algoritmos   de  diseño  de  redes para resolver problemas aplicados a la industria”.  Este   es   un   proyecto   realizado   por   un   profesor   de   la  universidad   de   Chile,   y   apoyado   por   el   gobierno   del  mismo país.[6] – “Optimización de los diámetros de las tuberías de una  red de distribución de agua     mediante el algoritmo de  recocido simulado”. El problema en general consiste en  diseñar y colocar tuberías  para conducir agua, desde los  puntos fuentes hasta los demandantes, satisfaciendo sus  requerimientos en cuanto a gasto y presión, y que el costo  de construcción de la red sea mínimo. [7] Para solucionar  este problema se usó la teoría de algoritmos mediante la  aplicación   y   simulación   de   un   algoritmo   heurístico  denominado RS (Kirkpatrick et al. 1983)[8]. – Un ejemplo general, es el uso de algoritmos diversos  en los estándares de institutos como el IEEE.[9] Con una investigación más profunda, se podrían encontrar  muchos   más   ejemplos   de   proyectos   reales,   en   donde  interviene   directamente   la   teoría   de   algoritmos.   Además  pueden existir problemas donde se aplique indirectamente la  teoría de algoritmos, por ejemplo, ya teniendo un proceso en  la   industria,   mejorarlo   aplicando   técnicas   de   optimización  como puede ser la programación dinámica, o alguna otra. D. Algoritmos aplicados en la computación Algunos   algoritmos   matemáticos,   y   algunos   que   han  surgido   después   de   varias   investigaciones   en   el   campo   de  teoría   de   números,   se   han   aplicado   directamente   en   la  computación,   sin   formar   parte   directa   del   proceso   de  desarrollo de software.  Algunos   ejemplos,   pueden   ser   los   mencionados   en   la  introducción, así como algunos otros, entre los que se pueden  enumerar los siguientes: – Búsqueda   de   números   primos   muy   grandes.   Un  ejemplo de la aplicación directa de los algoritmos y las  mejoras logradas con matemáticas y teoría de algoritmos,  se puede ver en la búsqueda de los números primos más  grandes, conocidos hasta el momento. [10] – El   mejoramiento   de   algoritmos   de   compresión   de  imágenes como el usado en los formatos JPEG, o GIF. – La importancia otorgada a la teoría de algoritmos en  concursos internacionales de programación como son el  “CodeJam”,   organizado   por   TopCoder   y   patrocinado  Google   [11].   El   ICPC   organizado   por   la   ACM   y  patrocinado por IBM[12], y algunos otros como Imagine  Cup Índia 2006[13], esta importancia que le brindan estos  concursos se debe principalmente a la gran importancia  que   tiene   la   teoría   de   algoritmos   para   el   desarrollo  tecnológico. La importancia de la teoría de algoritmos en aspectos de  computación que no están relacionados directamente con  un  proceso de desarrollo de software es muy diversa.  Así también se pueden mencionar áreas del conocimiento  diferentes,   en   cualquier   área   donde   se   requiera   que   un  proceso, método o algoritmos sea más eficiente se abre una  puerta para la aplicación de la teoría de algoritmos.

III.IMPORTANCIA DE LA TEORÍA DE ALGORITMOS EN EL DESARROLLO DE  SOFTWARE Después de haber analizado la importancia de la teoría de  algoritmos en campos diferentes al proceso de desarrollo de  software,   ahora   revisaremos   cual   es   la   importancia   en   este  campo.  Lo primero que hay que tomar en cuenta, es que el proceso  de   desarrollo   de   software   el   que   se   sigue   para   obtener   un  software, donde este no solo incluye la implementación, sino  que además toda la documentación relacionada con el mismo. Primero analizaremos al software tomando en cuenta que  este   es   un   programa,   según   Nicklaus   Wirth,   Programa   =  Algoritmos + Estructuras de Datos. [14] Si analizamos esto  podremos ver que una parte fundamental para la creación de  un programa es el algoritmo a usar. Esto quiere decir, que si se  quiere  construir  un software eficiente, se  tiene  que usar un  buen algoritmo.  Existe   una   gran   cantidad   de   software   comercial,   el  problema   principal   radica   en   conocer   que   aplicación   de   la  teoría de algoritmos dentro del diseño de su software, esto es  muy   complicado   al   no   poseer   el   código   fuente   o   la  documentación técnica detallada del software. En este aspecto  el software libre nos da una buena alternativa para conocer si  se aplica la teoría de algoritmos en el desarrollo de software,  además de permitir aplicarla directamente, si uno lo deseara.  El   software   libre,   nos   brinda   la   gran   ventaja   de   poder  modificar el código, por lo tanto si se hiciera un revisión del  algoritmo usado en un software determinado y se identifica  que este no es el más eficiente para el propósito del mismo,  este se podrá modificar. En todos los programas del software  libre   es   lo   que   sucede,   y   es   lo   que   hace   que   este   tipo   de  software puede  competir con el  software  comercial,  ya que  mejora   día   con   día   gracias   al   aporte   de   muchos  programadores,   logrando   hacer   al   software   cada   día   más 

3 eficiente. Pero el alcance de este documento no es analizar  específicamente un software y la eficiencia de su algoritmo,  sino hacer una revisión general de la aplicación de la teoría de  algoritmos en el desarrollo de software. Un   ejemplo   claro   de   el   uso   de   mejores   algoritmos   y   la  preocupación   en   la   eficiencia   de   los   mismos   los   podemos  encontrar en programas como MatLabTM, Octave, etc. que son  programas matemáticos y la eficiencia de los algoritmos es  esencial.   En   general   en   el   software   en   donde   implique  simulaciones y calculos matemáticos, la teoría de algoritmos  es una parte clave de su diseño. Otro tipo de software en donde la teoría de algoritmos ha  tenido una gran aplicación es en lo juegos, ya que usan una  gran   cantidad   de   algoritmos   para   las   simulaciones,   las  búsquedas   de   caminos,   la   inteligencia   aritificial   de   los  personajes, el mejoramiento de los motores gráficos, etc.  Un ejemplo muy claro, está en la búsqueda de caminos, en  los   primeros   juegos   clasificados   como   “de   estrategia”   el  algoritmo de la búsqueda de caminos no era muy eficiente, se  puede ver en juegos como el Age of EmpiresTM, por dar un  ejemplo,   pero   en   los   nuevos   juegos   que   entran   en   esa  categoría este tipo de algoritmos ha mejorado mucho. Aunque  es de destacar juegos como el Command & ConquerTM, que a  pesar de ser uno de los primeros juegos de estrategia, usaba  un algoritmo de búsqueda de caminos muy eficiente. El mejoramiento de este tipo de algoritmos así como de los  de inteligencia artificial, hacen que el desarrollo de software  de juegos, sea un buen ejemplo donde se aplica la teoría de  algoritmos. Otro tipo de software en el que la eficiencia es escencial, y  la aplicación de la teoría de algoritmos es muy importante es  en   los   manejadores   de   bases   de   datos,   ya   que   por   el   gran  volumen   de   datos   que   se   tienen   que   manejar   así   como   la  importancia de una respuesta rápida y correcta, requiere de un  algoritmo eficiente. Si se siguieran analizando todos  los tipos  de software se  podría   ver,   que   mientras   se   requiera   que   el   software   sea  eficiente,   seguramente   se   tendrían   que   aplicar   ciertos  conocimientos de teoría de algoritmos para lograrlo. Al   analizar   el   proceso   de   desarrollo   de   software,   a   este  mismo proceso se le puede ver como un algoritmo, ya que son  una   serie   de   pasos   que   se   siguen   para   la   construcción   del  software.   Esto   es   algo   que   se   debe   tener   muy   en   cuenta,  porque de la eficiencia de este, depende en gran medida el  resultado   final   del     proceso.   Aunque   los   procesos   de  desarrollo   no   se   pueden   analizar   con   la   rigurosidad  matemática   con   la   que   a   veces   se   aplica   la   teoría   de  algoritmos, ya que son algoritmos que se podría tomar como  “de   propósito   general”,   y   son   adaptables   a   diferentes  proyectos. Como un ejemplo claro de este tipo de procesos se  encuentra   el   RUP®   (IBM   Rational   Unified   Process®)[15],  que aunque para este no se aplicó con rigurosidad la teoría de  algoritmos, con base a la experiencia de muchas personas, y  buscando   que   el   proceso   fuera   lo   más   eficiente   posible,   y  adaptable   a   diferentes   proyectos,   se   diseño   ese   proceso   de  desarrollo que muy usado. También se podría mencionar otro  proceso de desarrollo apoyado por la secretaría de economía  como   una   opción   mexicana   para   mejorar   el   desarrollo   de  software, Moprosoft (Modelo de Procesos para la Industria de  Software)[16].  IV. CONCLUSIÓN La   conclusión   que   pudo   saltar   a   la   vista,   después   del  análisis realizado en este documento, es que la importancia de  la teoría  de algoritmos, y de los algoritmos por sí mismo, van  desde   la   vida   cotidiana   hasta   actividades   matemáticas  complejas, así como los procesos de desarrollo de software y  la aplicación en la industria para solucionar ciertos problemas  o para ayudar a al mejoramiento de ciertos procesos. En los procesos de desarrollo de software la importancia de  la teoría de algoritmos recae escencialmente en la eficiencia  del software, e indirectamente en el análisis del proceso de  desarrollo   que   se   siga   para   desarrollar   la   aplicación.   La  aplicación de la teoría de algoritmos para lograr la eficiencia  del  software  se  puede  ver   desde  los  juegos,   hasta   software  matemático, pasando por todo la gama de software existente.  Para lograr esta eficiencia, se tienen 3 caminos, aplicar los  conocimientos   generados   anteriormente   por   la   teoría   de  algoritmos   sin   modificación   alguna,   usar   la   teoría   de  algoritmos para diseñar un nuevo algoritmo lo más eficiente  posible   para   la   aplicación   que   se   esté   trabajando,   o   en   su  defecto   modificar   la   teoría   de   algoritmos   ya   existente,  hechando mano de todas las herramientas posibles, para poder  adaptar un algoritmo que cumpla las necesidades de eficiencia  para nuestra aplicación. Con   todo   esto   se   puede   concluir,   que   en   el   aspecto   de  desarrollo   de   software   la   teoría   de   algoritmos   es   la  herramienta principal para lograr un software eficiente. REFERENCIAS
[1] [2] [3] [4] [5] [6] Wikipedia – Algoritmo http://es.wikipedia.org/wiki/Algoritmo.  García Ramírez, Joaquín ccc.inaoep.mx/~cferegrino/cursos/comprcrip/Huffman.pdf .  Metamed Software & Design Ltd. http://www.metamend.com/google.html  MyCripto.net http://www.mycrypto.net/encryption/crypto_algorithms.html  Linux Documentation Project http://www.linux.org/docs/ldp/howto/Security­HOWTO/password­ security.html  Epstein Numhauser, Rafael.  “Desarrollo y aplicación de algoritmos de diseño de redes para resolver  problemas aplicados a la industria”.  2001. 8 p.  http://www.conicyt.cl/bases/fondecyt/proyectos/01/1999/1990350.html  Ingeniería hidráulica en México. “Optimización de los diámetros de las tuberías de una red de distribución  de agua   mediante el algoritmo de recocido simulado”.Vol. XVIII,  número I, II Época. Enero­marzo 2003. Curriculum vitae, Scott Kirkpatrick http://www.cs.huji.ac.il/~kirk/SK_cv2004.ps 

[7]

[8]

4
[9] [10] [11] [12] [13] [14] [15] [16] IEEE (Institute of Electrical and Electronics Engineers ) http://standards.ieee.org/db/status/index.shtml  Lleva el registro de los 5000 números primos más grandes conocidos. http://primes.utm.edu/largest.html  Google™ Code Jam  http://www.google.com/codejam/  ACM International Collegiate Programming Contest  http://icpc.baylor.edu/  Imagine Cup Índia 2006 http://www.ms­universidades.com/sites/universidades/IC2006/index.aspx  Algorithms + Data Structures  = Programs Nicklaus Wirth Prentice­Hall, 1986 Rational Unified Process http://www­306.ibm.com/software/awdtools/rup/  Software.net.mx http://www.software.net.mx/inicio/ 

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->