Está en la página 1de 11

Algoritmo

En matemticas, ciencias de la computacin, y disciplinas relacionadas, un algoritmo


(del latn, dixit algorithmus y ste a su vez del matemtico persa al-Jwarizmi) es una
lista bien definida, ordenada y finita de operaciones que permite hallar la solucin a un
problema. Dado un estado inicial y una entrada, a travs de pasos sucesivos y bien
definidos se llega a un estado final, obteniendo una solucin. Los algoritmos son
objeto de estudio de la algoritmia, y su definicin queda formalizada por el modelo
computacional de la Mquina de Turing.
Su importancia radica en mostrar la manera de llevar a cabo procesos y resolver
mecnicamente problemas matemticos o de otro tipo. Al igual que las funciones
matemticas, los algoritmos reciben una entrada y la transforman en una salida,
comportndose como una caja negra. Sin embargo, para que un algoritmo pueda ser
considerado como tal, debe ser determinista, tener un nmero finito de instrucciones y
debe acabar. Por determinista se entiende que, si se sigue el mismo proceso ms de
una vez, se llega siempre al mismo resultado.
El concepto de algoritmo, aunque similar y obviamente relacionado, no debe
confundirse con el concepto de programa. Mientras el primero es la especificacin de
un conjunto de pasos (operaciones, instrucciones, rdenes,...) orientados a la
resolucin de un problema, el segundo es ese conjunto de operaciones especificadas
en un determinado lenguaje de programacin y para un computador concreto,
susceptible de ser ejecutado (o compilado o interpretado). Un algoritmo, estrictamente
hablando, no puede ejecutarse hasta que se implementa, ya sea en un lenguaje de
programacin, en un circuito elctrico, en un aparato mecnico, usando papel y lpiz,
o en algn otro modelo de computacin.
En la vida cotidiana se emplean algoritmos en multitud de ocasiones para resolver
diversos problemas. Algunos ejemplos se encuentran en los instructivos (manuales de
usuario), los cuales muestran algoritmos para usar el aparato en cuestin o inclusive
en las instrucciones que recibe un trabajador por parte de su patrn. 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 el mtodo de Gauss para resolver un Sistema lineal
de ecuaciones.

Caractersticas de los algoritmos


El cientfico de computacin Donald Knuth ofreci una lista de cinco propiedades, que
son ampliamente aceptadas como requisitos para un algoritmo:
1. Carcter finito. "Un algoritmo siempre debe terminar despus de un nmero
finito de pasos".

2. Precisin. "Cada paso de un algoritmo debe estar precisamente definido; las


operaciones a llevar a cabo deben ser especificadas de manera rigurosa y no
ambigua para cada caso".
3. Entrada. "Un algoritmo tiene cero o ms entradas: cantidades que le son dadas
antes de que el algoritmo comience, o dinmicamente mientras el algoritmo
corre. Estas entradas son tomadas de conjuntos especficos de objetos".
4. Salida. "Un algoritmo tiene una o ms salidas: cantidades que tienen una
relacin especfica con las entradas".
5. Eficacia. "Tambin se espera que un algoritmo sea eficaz, en el sentido de que
todas las operaciones a realizar en un algoritmo deben ser suficientemente
bsicas como para que en principio puedan ser hechas de manera exacta y en
un tiempo finito por un hombre usando lpiz y papel".
Knuth admite que, aunque su descripcin pueda ser intuitivamente clara, carece de
rigor formal, puesto que no est exactamente claro qu significa "precisamente
definido", "de manera rigurosa y no ambigua", o "suficientemente bsicas", y as
sucesivamente.
A partir del caracter finito y de la salida se deduce que ante una misma situacin inicial
(o valores de entrada) un algoritmo debe proporcionar siempre el mismo resultado (o
salida), con excepcin de los algoritmos probabilistas.

Medios de expresin de un algoritmo


Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje
natural, pseudocdigo, diagramas de flujo y lenguajes de programacin entre otros.
Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar
pseudocdigo y diagramas de flujo evita muchas ambigedades del lenguaje natural.
Dichas expresiones son formas ms estructuradas para representar algoritmos; no
obstante, se mantienen independientes de un lenguaje de programacin especfico.
La descripcin de un algoritmo usualmente se hace en tres niveles:
1. Descripcin de alto nivel. Se establece el problema, se selecciona un modelo
matemtico y se explica el algoritmo de manera verbal, posiblemente con
ilustraciones y omitiendo detalles.
2. Descripcin formal. Se usa pseudocdigo o diagrama de flujo para describir la
secuencia de pasos que encuentran la solucin.
3. Implementacin. Se muestra el algoritmo expresado en un lenguaje de
programacin especfico o algn objeto capaz de llevar a cabo instrucciones.

Diagrama de flujo

Diagrama de flujo que expresa un algoritmo para calcular la raz cuadrada de un nmero x

Los diagramas de flujo son descripciones grficas de algoritmos; usan smbolos


conectados con flechas para indicar la secuencia de instrucciones y estn regidos por
ISO.
Los diagramas de flujo son usados para representar algoritmos pequeos, ya que
abarcan mucho espacio y su construccin es laboriosa. Por su facilidad de lectura son
usados como introduccin a los algoritmos, descripcin de un lenguaje y descripcin
de procesos a personas ajenas a la computacin.

Pseudocdigo
Pseudocdigo es la descripcin de un algoritmo que asemeja a un lenguaje de
programacin pero con algunas convenciones del lenguaje natural. Tiene varias
ventajas con respecto a los diagramas de flujo, entre las que se destaca el poco
espacio que se requiere para representar instrucciones complejas. El pseudocdigo
no est regido por ningn estndar.

Implementacin
Muchos algoritmos son ideados para implementarse en un programa. Sin embargo,
los algoritmos pueden ser implementados en otros medios, como una red neuronal, un
circuito elctrico o un aparato mecnico. Algunos algoritmos inclusive se disean
especialmente para implementarse usando lpiz y papel. El algoritmo de multiplicacin
tradicional, el algoritmo de Euclides, la criba de Eratstenes y muchas formas de
resolver la raz cuadrada son slo algunos ejemplos.

Anlisis de algoritmos

Como medida de la eficiencia de un algoritmo, se suelen estudiar los recursos


(memoria y tiempo) que consume el algoritmo. El anlisis de algoritmos se ha
desarrollado 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.
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, 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.

Historia
La palabra algoritmo proviene del nombre del matemtico llamado Muhammad ibn
Musa al-Jwarizmi 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 logro no fuera el de crear nuevos teoremas o
corrientes de pensamiento, sino el de simplificar la matemtica a punto tal que
pudieran ser comprendidas y aplicadas por un mayor nmero de personas. 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
an 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
al-Khwarizmi, 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.

Diagrama de flujo
El diagrama de flujo representa la forma ms tradicional, practica, segura, universal,
sistemtica, independiente, sentimental y duradera para especificar los detalles
algortmicos de un proceso. Se utiliza principalmente en programacin, economa y
procesos industriales; estos diagramas utilizan una serie de smbolos con significados
especiales. Son la representacin grfica de los pasos de un proceso, que se realiza
para entender mejor al mismo. Son modelos tecnolgicos utilizados para comprender
los rudimentos de la programacin lineal.
Otra definicin del diagrama de flujo es:
"Es un esquema para representar grficamente un algoritmo. Se basan en la
utilizacin de diversos smbolos para representar operaciones especficas. Se les
llama diagramas de flujo porque los smbolos utilizados se conectan por medio de
flechas para indicar la secuencia de operacin. Para hacer comprensibles los
diagramas a todas las personas, los smbolos se someten a una normalizacin; es
decir, se hicieron smbolos casi universales, ya que, en un principio cada usuario
podra tener sus propios smbolos para representar sus procesos en forma de
Diagrama de flujo. Esto trajo como consecuencia que slo aquel que conoca sus
smbolos, los poda interpretar. La simbologa utilizada para la elaboracin de
diagramas de flujo es variable y debe ajustarse a un patrn definido previamente."

Diagrama de flujo sencillo con los pasos a seguir si una lmpara no funciona.

No es necesario usar un tipo especial de smbolos para crear un diagrama de flujo,


pero existen algunos ampliamente utilizados por lo que es adecuado conocerlos y
utilizarlos, ampliando as las posibilidades de crear un diagrama ms claro y
comprensible para crear un proceso lgico y con opciones mltiples adecuadas. Se
utilizan los smbolos indicados a continuacin, estandarizados segn ISO 5807:

Flecha. Indica el sentido y trayectoria del proceso de informacin o tarea.

Rectngulo. Se usa para representar un evento o proceso determinado. ste es


controlado dentro del diagrama de flujo en que se encuentra. Es el smbolo ms
comnmente utilizado. Se usa para representar un evento que ocurre de forma
automtica y del cual generalmente se sigue una secuencia determinada.

Rombo. Se utiliza para representar una condicin. Normalmente el flujo de


informacin entra por arriba y sale por un lado si la condicin se cumple o sale por
el lado opuesto si la condicin no se cumple.el rombo adems especifica que hay
una bifurcacin

Crculo. Representa un punto de conexin entre procesos. Se utiliza cuando es


necesario dividir un diagrama de flujo en varias partes, por ejemplo por razones de
espacio o simplicidad. Una referencia debe de darse dentro para distinguirlo de
otros. La mayora de las veces se utilizan nmeros en los mismos.

Existen adems un sin fin de formas especiales para denotar las entradas, las salidas,
los almacenamientos, etctera.

De acuerdo al estndar ISO, los smbolos e incluso las flechas deben tener ciertas
caractersticas para permanecer dentro de sus lineamientos y ser considerados
sintcticamente correctos. En el caso del crculo de conexin, se debe procurar usarlo
slo cuando se conecta con un proceso contenido dentro de la misma hoja. Existen
tambin conectores de pgina, que asemejan a una casita y se utilizan para unir
actividades que se encuentran en otra hoja. En los diagramas de flujo se presuponen
los siguientes aspectos:

Existe siempre un camino que permite llegar a una solucin.


Existe un nico inicio del proceso.
Existe un nico punto de fin para el proceso de flujo, salvo del rombo que indica
una comparacin con dos caminos posibles y adems una gran ayuda.

A su vez, es importante que al construir diagramas de flujo, se observen las siguientes


recomendaciones:

Evitar sumideros infinitos, burbujas que tienen entradas pero no salidas.


Evitar las burbujas de generacin espontnea, que tienen salidas sin tener
entradas, porque son sumamente sospechosas y generalmente incorrectas.
Tener cuidado con los flujos y procesos no etiquetados. Esto suele ser un
indicio de falta de esmero, pero puede esconder un error an ms grave: a veces
el analista no etiqueta un flujo o un proceso porque simplemente no se le ocurre
algn nombre razonable.

Introduccin
Un diagrama de flujo es la representacin grfica de un proceso. Un
diagrama de flujo tiene como objetivo facilitarnos la comprensin de
un algoritmo o simplificar el anlisis de un proceso. El diagrama de
flujo consta de smbolos como cuadros, rombos, valos, etc. que
representan a cada uno de los pasos a seguir durante un proceso.
Estos smbolos estn conectados por flechas de un solo sentido y
nos indican la secuencia en que se van desarrollando las distintas
tareas.
Los diagramas de flujo se desarrollaron con la idea de representar
procesos en reas como la administracin de empresas, la
planeacin de proyectos, la manufactura de productos, la
planificacin de estrategias de ventas y muchas reas ms, no
obstante, han cobrado un inters muy especial en el anlisis y
planeacin de procesos para el desarrollo de sistemas
computacionales. Y al mismo tiempo han demostrado tener una
gran utilidad en el proceso de aprendizaje y formacin de futuros
desarrolladores de software.

Los diagramas facilitan la comprensin de mtodos de solucin para


problemas matemticos y lgicos, permitiendo a los estudiantes
abstraerse de un lenguaje determinado y enfocarse en el
procedimiento de solucin. De este modo, la posterior etapa de
codificacin se simplifica enormemente al tener ya resuelta la
metodologa a travs de un diagrama de flujo.
Existen diferentes smbolos utilizados en la diagramacin, de los
cuales podemos destacar cinco smbolos bsicos con los cuales se
puede representar prcticamente cualquier algoritmo informtico
por muy complejo que ste sea.
Estos smbolos son los siguientes

Simbolo

Descripcin

Inicio / Terminacin. Este smbolo se utiliza


para sealar el comienzo as como el final de un
diagrama. Tradicionalmente se colocan las
palabras INICIO FIN dentro de la figura
para hacerlo ms explcito.
Es el nico smbolo que solamente tiene una
conexin (flecha) ya sea de salida, en el de
inicio, o de entrada, para el de fin.

Entrada de datos. En este smbolo se indican


los valores iniciales que deber recibir el
proceso. Esto se hace asignndoles letras o
nombres de variables para cada uno de los
valores y anotando estas letras en el interior de
la figura.
Existen otros smbolos que tambin representan
una entrada de datos pero no consideramos que
su utilizacin, o combinacin, aporte mayor
utilidad al objetivo intrnseco de ejemplificar una
entrada de datos.
Este smbolo siempre deber tener al menos
una conexin entrante (generalmente del inicio)

y una de salida.

Proceso de datos. Este smbolo lo utilizaremos


para sealar operaciones matemticas,
aritmticas o procesos especficos que se
realicen con nuestros datos.
La manera de anotar dichos procesos, puede ser
mediante una descripcin breve de la operacin
o mediante una asignacin de dicha operacin
hacia una variable como por ejemplo: R A +
B
Este smbolo siempre deber tener al menos
una conexin de entrada y una de salida.

Decisin. Este smbolo nos representa una


disyuntiva lgica o decisin. En su interior se
anota una instruccin o pregunta que pueda ser
evaluada como cierta o falsa y que determine el
flujo del programa.
Este smbolo es el nico que puede contener
dos salidas y en cada una de las salidas se suele
poner un rtulo de si/no o cierto/falso
indicando con esto cual de ellas se tomar
segn el resultado de la evaluacin de la
funcin.
Es una buena prctica de diagramacin utilizar
siempre el mismo lado para los positivos
siempre que esto sea posible.

Desplegado de informacin. Este smbolo se


utiliza para mostrar un resultado, el cual puede
representar la solucin al problema que se
pretende resolver y que fue conseguida a travs
del resto del diagrama.
Dentro de su interior se anotar la variable con

el resultado final o el mensaje que represente el


resultado del algoritmo.
Generalmente veremos este smbolo muy cerca
del final del proceso y precedido por el smbolo
de terminacin.
Este smbolo siempre deber tener al menos
una conexin de entrada y una de salida.

En la diagramacin, tambin contamos con una serie de smbolos


auxiliares que no intervienen en el proceso del algoritmo, pero que
pueden ser tiles para ayudarnos a dar claridad a nuestros
diagramas, algunos de ellos son los siguientes:
Simbolo

Descripcin

Conector. Este smbolo se utiliza para indicar un salto


dentro del diagrama. Se utiliza con el propsito de
facilitar la disposicin plana de un diagrama y evitar el
cruce excesivo de lneas a travs del mismo.
Este conector va asociado a un conector gemelo y
junto con l, representa una puerta de entrada y de
salida para el flujo del diagrama, es decir que cuando
una flecha termina en un conector marcado con la letra
A, se continuar el diagrama a partir de otro conector
marcado con la misma letra tal como si se tratara de
una lnea continua in interrumpida.

Conector de pgina. Este conector es idntico en


funcionamiento que el anterior, pero su forma
pentagonal lo distingue y nos indica que debemos
buscar el gemelo en una pgina distinta de la actual.
Este conector lleva asociado una especie de salto entre
pginas.

Cabe mencionar que no se debe abusar del uso de conectores pues


de lo contrario comenzara a perderse la claridad que se pretende
alcanzar con el diagrama.

También podría gustarte