You are on page 1of 4

Algoritmo (De Wikipedia)

Un algoritmo es un conjunto finito de instrucciones o pasos que sirven para ejecutar una tarea o resol-
ver un problema. De un modo ms formal, un algoritmo es una secuencia finita de operaciones realiza-
bles, no ambiguas, cuya ejecucin da una solucin de un problema.

El trmino algoritmo no est exclusivamente relacionado con las matemticas, ciencias de la computa-
cin o informtica. En realidad, en la vida cotidiana empleamos algoritmos en multitud de ocasiones
para resolver diversos problemas. Ejemplos son el uso de una lavadora (se siguen las instrucciones),
para cocinar (se siguen los pasos de la 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 calcu-
lar el mximo comn divisor de dos enteros positivos, o incluso el mtodo de Gauss para resolver siste-
mas de ecuaciones.

Concepto

Sistema por el cual se llega a una solucin, teniendo en cuenta que debe de ser: definido, finito y preci-
so. Por preciso entendemos que cada paso a seguir tiene un orden; finito implica que tiene un determi-
nado 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-inicio 2-datos de entrada (operaciones bsicas) 3-procesamiento de los datos 4-
datos de salida 5-fin

Historia

La palabra algoritmo proviene del nombre del matemtico persa 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, he aqu que su
principal valor no fuera el de crear nuevos teoremas o nuevas corrientes de pensamiento, sino el simpli-
ficar las matemticas a un nivel lo suficientemente bajo para que pudiera ser comprendido por un amplio
pblico. Cabe destacar, cmo l 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 an no siendo l 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 utili-
zando dgitos arbigos, se evolucion a la palabra latina, derivacin de al-Khwarizmi, algobarismus, y
luego ms tarde mut en algoritmo en el siglo XVIII. La palabra ha cambiado de forma que en su defi-
nicin se incluyen 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. Es 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.
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 mayo-
ra 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 po-
drn leerese 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 cual-
quier otro caso, devolver una mezcla de seales positivas y negativas..

Ejemplo

Se presenta el algoritmo para encontrar el mximo de un conjunto de enteros positivos. Se basa en reco-
rrer una vez cada uno de los elementos, comparndolo con un valor concreto (el mximo entero encon-
trado 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, HAZ
SI item > maximo, HAZ
maximo elem
DEVUELVE maximo

Sobre la notacin:

" " representa la asignacin entre dos elementos. Por ejemplo, con maximo elem significa
que el nmero maximo cambia su valor por el de elem.
"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 ta-
mao de los valores de entrada. Por ejemplo, el algoritmo anterior tiene un orden de eficiencia en tiem-
po de O(n), en la notacin O mayscula n es el tamao de la entradas; en este caso n es la 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).

Tcnicas de diseo de algoritmos

Algoritmos greedy: Informalmente, podemos decir que este tipo de algoritmos selecciona los
elementos del conjunto de candidatos en un determinado orden hasta encontrar una solucin; es
decir, calcula la solucin al problema tomando en cada paso la opcin ms prometedora. En la
mayora de los casos la solucin no es ptima.
Algoritmos paralelos
Algoritmos probabilsticos
Algoritmos determinsticos
Algoritmos no determinsticos
Divide y vencers (divide & conquer, en ingls): este tipo de algoritmos dividen el problema en
subconjuntos disjuntos obteniendo una solucin de cada uno de ellos para despus unirlas, lo-
grando as la solucin al problema completo.
Heursticas: algoritmos que encuentran soluciones a problemas basndose en un conocimiento
anterior (a veces llamado experiencia) de los mismos.
Programacin dinmica: intenta resolver problemas disminuyendo su coste espacial aumentando
el coste computacional.
Ramificacin y acotacin: tambin conocidos como ramificacin y poda, branch and bound. Es-
te mtodo 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: al igual que el mtodo ramificacin y acotacin, vuelta atrs (backtracking, en in-
gls) se construye el espacio de soluciones del problema en un rbol que se examina completa-
mente, almacenando las soluciones menos costosas.

Temas relacionados

Cota superior asinttica


Cota inferior asinttica
Cota ajustada asinttica
Complejidad computacional

Disciplinas relacionadas

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]

Enlaces externos

Portal de algoritmia
Tcnicas de Diseo de Algoritmos manual que explica y ejemplifica los distintos paradigmas de
diseo de algoritmos. Rosa Guerequeta y Antonio Vallecillo (profesores de la Universidad de
Mlaga).
Transparencias de la asignatura "Esquemas Algortmicos", Campos, J.
Apuntes y problemas de Algortmica por Domingo Gimnez Cnovas
Algoritmos bsicos

You might also like