Vous êtes sur la page 1sur 6

Algoritmo

De Wikipedia
Saltar a navegacin, bsqueda
Un algoritmo es un conjunto finito de instrucciones o pasos que sirven para ejecutar una
tarea o resolver un problema. De un modo ms formal, un algoritmo es una secuencia
finita de operaciones realizables, no ambiguas, cuya ejecucin da una solucin de un
problema en un tiempo finito.

los Diagrama de flujo se usan habitualmente para representar algoritmos.


El trmino algoritmo no est exclusivamente relacionado con las matemticas, ciencias
de la computacin o informtica. En realidad, en la vida cotidiana empleamos algoritmos
en multitud de ocasiones para resolver diversos problemas. Algunos ejemplos son el uso
de una lavadora (se siguen las instrucciones), o la preparacin de una comida (siguiendo
los pasos de una receta). Tambin existen ejemplos de ndole matemtica, como el
algoritmo de la divisin para calcular el cociente de dos nmeros, el algoritmo de
Euclides para calcular el mximo comn divisor de dos enteros positivos, o incluso el
mtodo de Gauss para resolver sistemas de ecuaciones.

Tabla de contenidos
[esconder]
1 Concepto

2 Implementacin
3 Ejemplo
4 Historia
5 Tcnicas de diseo de algoritmos
6 Temas relacionados
7 Disciplinas relacionadas
8 Libros sobre Algoritmia

9 Enlaces externos
[editar]

Concepto
La definicin de algoritmo an no cuenta con la formalidad cientfica que podra ser ideal
para ciencias como las matemticas y las ciencias de la computacin (donde los
algoritmos son esenciales pero a falta de formalidad no pueden incluirse fcilmente en las
demostraciones formales de estas ciencias). Sin embargo, si existe un concepto intuitivo
de algoritmo.
Un algoritmo es un sistema por el cual se llega a una solucin, teniendo en cuenta que
debe de ser definido, finito y preciso. Por preciso entendemos que cada paso a seguir
tiene un orden; finito implica que tiene un determinado nmero de pasos, o sea, que tiene
un fin; y definido, que si se sigue el mismo proceso ms de un vez llegaremos al mismo
resultado.
Estructura Bsica:
1.
2.
3.
4.
5.

inicio
datos de entrada (operaciones bsicas)
procesamiento de los datos
datos de salida
fin

[editar]

Implementacin
Algunas veces, en una red neuronal biolgica (por ejemplo, el cerebro humano
implementa la aritmtica bsica o, incluso, una rata sigue un algoritmo para conseguir
comida), tambin en circuitos elctricos, en instalaciones industriales o maquinaria
pesada.
El anlisis y estudio de los algoritmos es una disciplina de las ciencias de la computacin,
y en la mayora de los casos, su estudio es completamente abstracto sin usar ningn tipo
de lenguaje de programacin ni cualquier otra implementacin; por eso, en ese sentido,

comparte las caractersticas de las disciplinas matemticas. As, el anlisis de los


algoritmos se centra en los principios bsicos del algoritmo, no en los de la
implementacin particular. Una forma de plasmar (o algunas veces codificar) un
algoritmo es escribirlo en pseudocdigo o utilizar un lenguaje muy simple tal como
Lexico cuyos cdigos pueden estar en el idioma del programador.
Algunos escritores restringen la definicin de algoritmo a procedimientos que deben
acabar en algn momento, mientras que otros consideran procedimientos que podran
ejecutarse eternamente sin pararse, suponiendo el caso en el que existiera algn
dispositivo fsico que fuera capaz de funcionar eternamente. En este ltimo caso, la
finalizacin con xito del algoritmo no se podra definir como la terminacin de ste con
una salida satisfactoria, sino que el xito estara definido en funcin de las secuencias de
salidas dadas durante un periodo de vida de la ejecucin del algoritmo. Por ejemplo, un
algoritmo que verifica que hay ms ceros que unos en una secuencia binaria infinita debe
ejecutarse siempre para que pueda devolver un valor til. Si se implementa
correctamente, el valor devuelto por el algoritmo ser vlido, hasta que evale el
siguiente dgito binario. De esta forma, mientras evala la siguiente secuencia podrn
leerse dos tipos de seales: una seal positiva (en el caso de que el nmero de ceros es
mayor que el de unos) y una negativa en caso contrario. Finalmente, la salida de este
algoritmo se define como la devolucin de valores exclusivamente positivos si hay ms
ceros que unos en la secuencia, y en cualquier otro caso, devolver una mezcla de seales
positivas y negativas..
[editar]

Ejemplo
Se presenta el algoritmo para encontrar el mximo de un conjunto de enteros positivos.
Se basa en recorrer una vez cada uno de los elementos, comparndolo con un valor
concreto (el mximo entero encontrado hasta ahora). En el caso de que el elemento actual
sea mayor que el mximo, se le asigna su valor al mximo.
El algoritmo escrito de una manera ms formal, esto es, en pseudocdigo tendra el
siguiente aspecto:
ALGORITMO Maximo
ENTRADAS: Un conjunto no vaco de enteros C.
SALIDAS: El mayor nmero en el conjunto C.
maximo -
PARA CADA elemento EN el conjunto C, HACER
SI valor_del_elemento > maximo, HACER
maximo valor_del_elemento
DEVUELVE maximo

Sobre la notacin:

"" representa la asignacin entre dos objetos. Por ejemplo, maximo


valor_del_elemento significa que el objeto maximo cambia su valor por el de
valor_del_elemento.
"DEVUELVE" termina el algoritmo y devuelve el valor a su derecha (en este
caso maximo).

Como medida de la bondad de un algoritmo, se suelen estudiar los recursos (memoria y


tiempo) que consume el algoritmo. Por eso, se ha desarrollado el anlisis de algoritmos
para obtener valores que de alguna forma indiquen (o especifiquen) la evolucin del
gasto de tiempo y memoria en funcin del tamao de los valores de entrada. Por ejemplo,
el algoritmo anterior tiene un orden de eficiencia en tiempo de O(n), en la notacin O
mayscula, siendo n el tamao de la entrada, ms concretamente, en este caso, el nmero
de elementos de C. Adems, como el algoritmo necesita recordar un nico valor (el
mximo) requiere un espacio de O(1) (hay que tener en cuenta que el tamao de las
entradas no se considera como memoria usada por el algoritmo).
[editar]

Historia
La palabra algoritmo proviene del nombre del matemtico llamado Abu Abdullah
Muhammad bin Musa al-Khwarizmi que vivi entre los siglos VIII y IX. Su trabajo
consisti en preservar y difundir el conocimiento de la antigua Grecia y de la India. Sus
libros eran de fcil comprensin, de ah que su principal valor no fuera el de crear nuevos
teoremas o nuevas corrientes de pensamiento, sino el de simplificar las matemticas a un
nivel lo suficientemente bajo para que pudiera ser comprendido por un amplio pblico.
Cabe destacar cmo seal las virtudes del sistema decimal indio (en contra de los
sistemas tradicionales rabes) y cmo explic que, mediante una especificacin clara y
concisa de cmo calcular sistemticamente, se podran definir algoritmos que fueran
usados en dispositivos mecnicos en vez de las manos (por ejemplo, bacos). Tambin
estudi la manera de reducir las operaciones que formaban el clculo. Es por esto que aun
no siendo el creador del primer algoritmo, el concepto lleva aunque no su nombre, s su
pseudnimo.
As, de la palabra algorismo, que originalmente haca referencia a las reglas de uso de la
aritmtica utilizando dgitos rabes, se evolucion a la palabra latina, derivacin de alKhwarizmi, algobarismus, que ms tarde mutara a algoritmo en el siglo XVIII. La
palabra ha cambiado de forma que en su definicin se incluye a todos los procedimientos
finitos para resolver problemas.
Ya en el siglo XIX, se produjo el primer algoritmo escrito para un computador. La autora
fue Ada Byron, en cuyos escritos se detallaban la mquina analtica en 1842. Por ello que
es considerada por muchos como la primera programadora aunque, desde Charles
Babbage, nadie complet su mquina, por lo que el algoritmo nunca se implement.
[editar]

Tcnicas de diseo de algoritmos

Algoritmos voraces: seleccionan los elementos ms prometedores del conjunto de


candidatos hasta encontrar una solucin. En la mayora de los casos la solucin no
es ptima.
Algoritmos paralelos
Algoritmos probabilsticos
Algoritmos determinsticos
Algoritmos no determinsticos
Divide y vencers: dividen el problema en subconjuntos disjuntos obteniendo una
solucin de cada uno de ellos para despus unirlas, logrando as la solucin al
problema completo.
Heursticas: encuentran soluciones a problemas basndose en un conocimiento
anterior (a veces llamado experiencia) de los mismos.
Programacin dinmica: intenta resolver problemas disminuyendo su coste
computacional aumentando el coste espacial.
Ramificacin y acotacin: se basa en la construccin de las soluciones al
problema mediante un rbol implcito que se recorre de forma controlada
encontrando las mejores soluciones.
Vuelta Atrs: se construye el espacio de soluciones del problema en un rbol que
se examina completamente, almacenando las soluciones menos costosas.

[editar]

Temas relacionados

Cota superior asinttica


Cota inferior asinttica
Cota ajustada asinttica
Complejidad computacional

[editar]

Disciplinas relacionadas

[editar]

Ciencias de la Computacin
Complejidad computacional
Informtica
Inteligencia artificial
Investigacin operativa
Matemticas
Programacin

Libros sobre Algoritmia

The Art of Computer Programming, Knuth, D. E. [quien fue tambin, el creador


del TeX]
Introduction to Algorithms (2nd ed), Cormen, T. H., Leiserson, C. E., Rivest, R. L.
y Stein, C.
Introduction to Algorithms. A Creative Approach, Mamber, U.
Algorithms in C (3r ed), Sedgewick, R. [tambin existen versiones en C++ y Java]

Vous aimerez peut-être aussi