Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Save to My Library
Look up keyword
Like this
1Activity
0 of .
Results for:
No results containing your search query
P. 1
Importancia de Los Algoritmos

Importancia de Los Algoritmos

Ratings: (0)|Views: 392 |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

06/19/2012

pdf

text

original

 
 Abstract
— El an
á
lisis y el dise
ñ
o de algoritmos es unadisciplina muy importante en Computaci
ó
n, y en este documentose hace una revisi
ó
n de la importancia de los mismos, as
í 
como eluso y el alcance en el proceso de desarrollo de software.
I.I
NTRODUCCI
Ó
N
n algoritmo es un conjunto finito de pasos realizables y noambiguos para solucionar un problema. Los algoritmosforman uno de los pilares de la computaci
ó
n actual, aunque suuso no se limita solamente a esta rama, sino a tambi
é
n aciencias como las matem
á
ticas, as
í 
como a la vida cotidiana[1].
U
No solo del uso masivo de los algoritmos es de donde sederiva su importancia, sino de los aportes que le ha dado a lacomputaci
ó
n y a otras ciencias.La teor
í 
a de algoritmos es una rama de la computaci
ó
n, endonde se analizan las bases te
ó
ricas que envuelven a losalgoritmos, as
í 
como las bases para dise
ñ
os de algoritmoseficientes.Existe una gran cantidad de algoritmos que son usados adiario, como algoritmos de b
ú
squeda, de ordenamiento, deencriptaci
ó
n, de compresi
ó
n, matem
á
ticos, etc. y de suan
á
lisis surgen una gran cantidad de avances.Algunos ejemplos de uso cotidiano para los usuarios de lascomputadoras, pueden ser:
 –
Algoritmo de Huffman: Usado para compresi
ó
n dedatos y criptograf 
í 
a [2], es la base de muchos programascomerciales de compresi
ó
n.
 –
Google Search-Engine: Usado a diario por millones depersonas para b
ú
squeda en internet. Es un conjunto dealgoritmos de b
ú
squeda parte de la patente “PageRank”[3], que es usado en el buscador Google
TM
.
 –
DES : (Data Encryption Standar) Se podr
í 
a traducircomo Est
á
ndar de Encriptaci
ó
n de Datos, dise
ñ
ado yaprobado por el gobierno de los Estados Unidos en 1977[4], es usado en las diferentes distribuciones de Unix,incluyendo Linux, como primera medida para encriptarlos passwords de usuario[5].Estos algoritmos son simplemente una muestra de usocotidiano en computaci
ó
n, ya que se podr
í 
an mencionarmucho m
á
s ejemplos.II.L
A
 
IMPORTANCIA
 
DE
 
LOS
A
LGORITMOS
Considero conveniente hacer una revisi
ó
n de la importanciade la teor
í 
a de algoritmos en otras
á
reas ajenas al desarrollode software, ya que la importancia en esta
á
rea, ser
á
tratada adetalle 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 algoritmospara hacerlos m
á
s eficientes, pero siguen siendo importantesgracias a su cotidianeidad, algunos ejemplos pueden ser:
 –
Al seguir una receta de cocina, se siguen un ciertoalgoritmo para poder cocinar el platillo deseado.
 –
Al marcar el tel
é
fono se siguen ciertos pasos, y sepodr
í 
an modelar estos, por medio de un algoritmo.
 –
Al querer llegar a un lugar en autom
ó
vil, usamos unalgoritmo, aunque de forma emp
í 
rica, de tal forma quenos permita llegar al destino, buscando la ruta m
á
s corta.
 B. Algoritmos en matem
á
ticas
En matem
á
ticas existen una gran cantidad de ejemplos dealgoritmos, por mencionar algunos tenemos los siguientes:
 –
El algoritmo de la multiplicaci
ó
n, para poder realizarun multiplicaci
ó
n de 2 n
ú
meros enteros, se sigue uncierto algoritmo, a veces muy sencillo y aprendidodesde la educaci
ó
n primaria, este ha sido estudiadopara que pueda ser realizado de formas m
á
seficientes.
 –
Generaci
ó
n de n
ú
meros primos: Com
ú
nmente seusan algoritmos sencillos como la Criba deErat
ó
stenes, pero con conocimientos matem
á
ticos,como teor
í 
a de n
ú
meros y
á
lgebra, as
í 
como de teor
í 
ade algoritmos, cada vez estos m
é
todos se han vueltom
á
s eficientes.
 –
C
á
lculo del m
á
ximo com
ú
n divisor: Para esto existen1
La importancia de la Teor
í 
a de Algoritmos en elDesarrollo de Software
Ojeda R., Hermes,
 Estudiante de Ingenier 
í 
a en Computaci
ó
n,Octavo Semestre, Grupo A, UTM 
 
algoritmos intuitivos sacados de conocimientosb
á
sicos de
á
lgebra, pero con algunos conocimientosde teor
í 
a de n
ú
meros y teor
í 
a de algoritmos, se hanencontrado m
é
todos muy eficientes de calcular elm
á
ximo com
ú
n divisor.Como una muestra de ejemplos sencillos de algoritmosmatem
á
ticos, solo se enumeran los anteriores, aunque podr
í 
anenumerarse muchos m
á
s, y de complejidad mayor.
C. Algoritmos en la Industria
La aplicaci
ó
n de los algoritmos en la industria var
í 
an delproblema que se desee abordar. Para este rubro semencionar
á
n 2 ejemplos aplicados.
 –
“Desarrollo y aplicaci
ó
n de algoritmos de dise
ñ
o deredes para resolver problemas aplicados a la industria”.Este es un proyecto realizado por un profesor de launiversidad de Chile, y apoyado por el gobierno delmismo pa
í 
s.[6]
 –
“Optimizaci
ó
n de los di
á
metros de las tuber
í 
as de unared de distribuci
ó
n de agua mediante el algoritmo derecocido simulado”. El problema en general consiste endise
ñ
ar y colocar tuber
í 
as para conducir agua, desde lospuntos fuentes hasta los demandantes, satisfaciendo susrequerimientos en cuanto a gasto y presi
ó
n, y que el costode construcci
ó
n de la red sea m
í 
nimo. [7] Para solucionareste problema se us
ó
la teor
í 
a de algoritmos mediante laaplicaci
ó
n y simulaci
ó
n de un algoritmo heur
í 
sticodenominado RS (Kirkpatrick et al. 1983)[8].
 –
Un ejemplo general, es el uso de algoritmos diversosen los est
á
ndares de institutos como el IEEE.[9]Con una investigaci
ó
n m
á
s profunda, se podr
í 
an encontrarmuchos m
á
s ejemplos de proyectos reales, en dondeinterviene directamente la teor
í 
a de algoritmos. Adem
á
spueden existir problemas donde se aplique indirectamente lateor
í 
a de algoritmos, por ejemplo, ya teniendo un proceso enla industria, mejorarlo aplicando t
é
cnicas de optimizaci
ó
ncomo puede ser la programaci
ó
n din
á
mica, o alguna otra.
 D. Algoritmos aplicados en la computaci
ó
n
Algunos algoritmos matem
á
ticos, y algunos que hansurgido despu
é
s de varias investigaciones en el campo deteor
í 
a de n
ú
meros, se han aplicado directamente en lacomputaci
ó
n, sin formar parte directa del proceso dedesarrollo de software.Algunos ejemplos, pueden ser los mencionados en laintroducci
ó
n, as
í 
como algunos otros, entre los que se puedenenumerar los siguientes:
 –
B
ú
squeda de n
ú
meros primos muy grandes. Unejemplo de la aplicaci
ó
n directa de los algoritmos y lasmejoras logradas con matem
á
ticas y teor
í 
a de algoritmos,se puede ver en la b
ú
squeda de los n
ú
meros primos m
á
sgrandes, conocidos hasta el momento. [10]
 –
El mejoramiento de algoritmos de compresi
ó
n deim
á
genes como el usado en los formatos JPEG, o GIF.
 –
La importancia otorgada a la teor
í 
a de algoritmos enconcursos internacionales de programaci
ó
n como son el“CodeJam”, organizado por TopCoder y patrocinadoGoogle [11]. El ICPC organizado por la ACM ypatrocinado por IBM[12], y algunos otros como ImagineCup
Í
ndia 2006[13], esta importancia que le brindan estosconcursos se debe principalmente a la gran importanciaque tiene la teor
í 
a de algoritmos para el desarrollotecnol
ó
gico.La importancia de la teor
í 
a de algoritmos en aspectos decomputaci
ó
n que no est
á
n relacionados directamente con unproceso de desarrollo de software es muy diversa.As
í 
tambi
é
n se pueden mencionar
á
reas del conocimientodiferentes, en cualquier
á
rea donde se requiera que unproceso, m
é
todo o algoritmos sea m
á
s eficiente se abre unapuerta para la aplicaci
ó
n de la teor
í 
a de algoritmos.III.I
MPORTANCIA
 
DE
 
LA
 
TEOR
Í
A
 
DE
A
LGORITMOS
 
EN
 
EL
 
DESARROLLO
 
DE
 S
OFTWARE
Despu
é
s de haber analizado la importancia de la teor
í 
a dealgoritmos en campos diferentes al proceso de desarrollo desoftware, ahora revisaremos cual es la importancia en estecampo.Lo primero que hay que tomar en cuenta, es que el procesode desarrollo de software el que se sigue para obtener unsoftware, donde este no solo incluye la implementaci
ó
n, sinoque adem
á
s toda la documentaci
ó
n relacionada con el mismo.Primero analizaremos al software tomando en cuenta queeste es un programa, seg
ú
n Nicklaus Wirth, Programa =Algoritmos + Estructuras de Datos. [14] Si analizamos estopodremos ver que una parte fundamental para la creaci
ó
n deun programa es el algoritmo a usar. Esto quiere decir, que si sequiere construir un software eficiente, se tiene que usar unbuen algoritmo.Existe una gran cantidad de software comercial, elproblema principal radica en conocer que aplicaci
ó
n de lateor
í 
a de algoritmos dentro del dise
ñ
o de su software, esto esmuy complicado al no poseer el c
ó
digo fuente o ladocumentaci
ó
n t
é
cnica detallada del software. En este aspectoel software libre nos da una buena alternativa para conocer sise 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 podermodificar el c
ó
digo, por lo tanto si se hiciera un revisi
ó
n delalgoritmo usado en un software determinado y se identificaque este no es el m
á
s eficiente para el prop
ó
sito del mismo,este se podr
á
modificar. En todos los programas del softwarelibre es lo que sucede, y es lo que hace que este tipo desoftware puede competir con el software comercial, ya quemejora d
í 
a con d
í 
a gracias al aporte de muchosprogramadores, logrando hacer al software cada d
í 
a m
á
s2
 
eficiente. Pero el alcance de este documento no es analizarespec
í 
ficamente un software y la eficiencia de su algoritmo,sino hacer una revisi
ó
n general de la aplicaci
ó
n de la teor
í 
a dealgoritmos en el desarrollo de software.Un ejemplo claro de el uso de mejores algoritmos y lapreocupaci
ó
n en la eficiencia de los mismos los podemosencontrar en programas como MatLab
TM
, Octave, etc. que sonprogramas matem
á
ticos y la eficiencia de los algoritmos esesencial. En general en el software en donde impliquesimulaciones y calculos matem
á
ticos, la teor
í 
a de algoritmoses una parte clave de su dise
ñ
o.Otro tipo de software en donde la teor
í 
a de algoritmos hatenido una gran aplicaci
ó
n es en lo juegos, ya que usan unagran cantidad de algoritmos para las simulaciones, lasb
ú
squedas de caminos, la inteligencia aritificial de lospersonajes, el mejoramiento de los motores gr
á
ficos, etc.Un ejemplo muy claro, est
á
en la b
ú
squeda de caminos, enlos primeros juegos clasificados como “de estrategiaelalgoritmo de la b
ú
squeda de caminos no era muy eficiente, sepuede ver en juegos como el Age of Empires
TM
, por dar unejemplo, pero en los nuevos juegos que entran en esacategor
í 
a este tipo de algoritmos ha mejorado mucho. Aunquees de destacar juegos como el Command & Conquer
TM
, que apesar de ser uno de los primeros juegos de estrategia, usabaun algoritmo de b
ú
squeda de caminos muy eficiente.El mejoramiento de este tipo de algoritmos as
í 
como de losde inteligencia artificial, hacen que el desarrollo de softwarede juegos, sea un buen ejemplo donde se aplica la teor
í 
a dealgoritmos.Otro tipo de software en el que la eficiencia es escencial, yla aplicaci
ó
n de la teor
í 
a de algoritmos es muy importante esen los manejadores de bases de datos, ya que por el granvolumen de datos que se tienen que manejar as
í 
como laimportancia de una respuesta r
á
pida y correcta, requiere de unalgoritmo eficiente.Si se siguieran analizando todos los tipos de software sepodr
í 
a ver, que mientras se requiera que el software seaeficiente, seguramente se tendr
í 
an que aplicar ciertosconocimientos de teor
í 
a de algoritmos para lograrlo.Al analizar el proceso de desarrollo de software, a estemismo proceso se le puede ver como un algoritmo, ya que sonuna serie de pasos que se siguen para la construcci
ó
n delsoftware. Esto es algo que se debe tener muy en cuenta,porque de la eficiencia de este, depende en gran medida elresultado final del proceso. Aunque los procesos dedesarrollo no se pueden analizar con la rigurosidadmatem
á
tica con la que a veces se aplica la teor
í 
a dealgoritmos, ya que son algoritmos que se podr
í 
a tomar como“de prop
ó
sito general”, y son adaptables a diferentesproyectos. Como un ejemplo claro de este tipo de procesos seencuentra el RUP
®
(IBM Rational Unified Process
®
)[15],que aunque para este no se aplic
ó
con rigurosidad la teor
í 
a dealgoritmos, con base a la experiencia de muchas personas, ybuscando que el proceso fuera lo m
á
s eficiente posible, yadaptable a diferentes proyectos, se dise
ñ
o ese proceso dedesarrollo que muy usado. Tambi
é
n se podr
í 
a mencionar otroproceso de desarrollo apoyado por la secretar
í 
a de econom
í 
acomo una opci
ó
n mexicana para mejorar el desarrollo desoftware, Moprosoft (Modelo de Procesos para la Industria deSoftware)[16].IV. C
ONCLUSI
Ó
N
La conclusi
ó
n que pudo saltar a la vista, despu
é
s delan
á
lisis realizado en este documento, es que la importancia dela teor
í 
a de algoritmos, y de los algoritmos por s
í 
mismo, vandesde la vida cotidiana hasta actividades matem
á
ticascomplejas, as
í 
como los procesos de desarrollo de software yla aplicaci
ó
n en la industria para solucionar ciertos problemaso para ayudar a al mejoramiento de ciertos procesos.En los procesos de desarrollo de software la importancia dela teor
í 
a de algoritmos recae escencialmente en la eficienciadel software, e indirectamente en el an
á
lisis del proceso dedesarrollo que se siga para desarrollar la aplicaci
ó
n. Laaplicaci
ó
n de la teor
í 
a de algoritmos para lograr la eficienciadel software se puede ver desde los juegos, hasta softwarematem
á
tico, pasando por todo la gama de software existente.Para lograr esta eficiencia, se tienen 3 caminos, aplicar losconocimientos generados anteriormente por la teor
í 
a dealgoritmos sin modificaci
ó
n alguna, usar la teor
í 
a dealgoritmos para dise
ñ
ar un nuevo algoritmo lo m
á
s eficienteposible para la aplicaci
ó
n que se est
é
trabajando, o en sudefecto modificar la teor
í 
a de algoritmos ya existente,hechando mano de todas las herramientas posibles, para poderadaptar un algoritmo que cumpla las necesidades de eficienciapara nuestra aplicaci
ó
n.Con todo esto se puede concluir, que en el aspecto dedesarrollo de software la teor
í 
a de algoritmos es laherramienta principal para lograr un software eficiente.R
EFERENCIAS
[1] Wikipedia Algoritmohttp://es.wikipedia.org/wiki/Algoritmo.[2] Garc
í 
a Ram
í 
rez, Joaqu
í 
nccc.inaoep.mx/~cferegrino/cursos/comprcrip/Huffman.pdf .[3] Metamed Software & Design Ltd.http://www.metamend.com/google.html [4] MyCripto.nethttp://www.mycrypto.net/encryption/crypto_algorithms.html [5] Linux Documentation Projecthttp://www.linux.org/docs/ldp/howto/Security-HOWTO/password-security.html [6] Epstein Numhauser, Rafael.“Desarrollo y aplicaci
ó
n de algoritmos de dise
ñ
o de redes para resolverproblemas aplicados a la industria”.2001. 8 p.http://www.conicyt.cl/bases/fondecyt/proyectos/01/1999/1990350.html [7] Ingenier
í 
a hidr
á
ulica en M
é
xico.“Optimizaci
ó
n de los di
á
metros de las tuber
í 
as de una red de distribuci
ó
nde agua mediante el algoritmo de recocido simulado”.Vol. XVIII,n
ú
mero I, II
É
poca. Enero-marzo 2003.[8] Curriculum vitae, Scott Kirkpatrick http://www.cs.huji.ac.il/~kirk/SK_cv2004.ps 
3

You're Reading a Free Preview

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