Académique Documents
Professionnel Documents
Culture Documents
ndice
1 Definicin formal
o 2.4 Implementacin
o 2.5 Variables
4 Anlisis de algoritmos
5 Ejemplo de algoritmo
o 5.3 Implementacin
6 Vase tambin
7 Referencias
8 Bibliografa
9 Enlaces externos
Definicin formal
En general, no existe ningn consenso definitivo en cuanto a la definicin formal de
algoritmo. Muchos autores los sealan como listas de instrucciones para resolver un
clculo o un problema abstracto, es decir, que un nmero finito de pasos convierten los
datos de un problema (entrada) en una solucin (salida).1 2 3 4 5 6 Sin embargo cabe notar
que algunos algoritmos no necesariamente tienen que terminar o resolver un problema
en particular. Por ejemplo, una versin modificada de la criba de Eratstenes que nunca
termine de calcular nmeros primos no deja de ser un algoritmo.7
A lo largo de la historia varios autores han tratado de definir formalmente a los
algoritmos utilizando modelos matemticos. Esto fue realizado por Alonzo Church en
1936 con el concepto de "calculabilidad efectiva" basada en su clculo lambda y por
Alan Turing basndose en la mquina de Turing. Los dos enfoques son equivalentes, en
el sentido en que se pueden resolver exactamente los mismos problemas con ambos
enfoques.8 9 Sin embargo, estos modelos estn sujetos a un tipo particular de datos como
son nmeros, smbolos o grficas mientras que, en general, los algoritmos funcionan
sobre una vasta cantidad de estructuras de datos.3 1 En general, la parte comn en todas
las definiciones se puede resumir en las siguientes tres propiedades siempre y cuando no
consideremos algoritmos paralelos:7
En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso
se pueda describir sin ambigedad y sin hacer referencia a una computadora en
particular, y adems tiene un lmite fijo en cuanto a la cantidad de datos que se pueden
leer/escribir en un solo paso. Esta amplia definicin abarca tanto a algoritmos prcticos
como aquellos que solo funcionan en teora, por ejemplo el mtodo de Newton y la
eliminacin de Gauss-Jordan funcionan, al menos en principio, con nmeros de
precisin infinita; sin embargo no es posible programar la precisin infinita en una
computadora, y no por ello dejan de ser algoritmos.10 En particular es posible considerar
una cuarta propiedad que puede ser usada para validar la tesis de Church-Turing de que
toda funcin calculable se puede programar en una mquina de Turing (o
equivalentemente, en un lenguaje de programacin suficientemente general):10
Diagrama de flujo
Diagrama de flujo que expresa un algoritmo para calcular la raz cuadrada de un nmero
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
As el pseudocdigo cumple con las funciones antes mencionadas para representar algo
abstracto los protocolos son los lenguajes para la programacin. Busque fuentes ms
precisas para tener mayor comprensin del tema.
Sistemas formales
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 y elctrico. 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 solo algunos ejemplos.
Variables
...
i:=1;
read(n);
while i < n do begin
(* cuerpo del bucle *)
i := i + 1
end;
...
Estructuras secuenciales
La estructura secuencial es aquella en la que una accin sigue a otra en secuencia. Las
operaciones se suceden de tal modo que la salida de una es la entrada de la siguiente y
as sucesivamente hasta el fin del proceso. La asignacin de esto consiste, en el paso de
valores o resultados a una zona de la memoria. Dicha zona ser reconocida con el
nombre de la variable que recibe el valor. La asignacin se puede clasificar de la
siguiente forma:
Inicio
...
float b, h, a;
printf("Diga la base");
scanf("%f", &b);
printf("Diga la altura");
scanf("%f", &h);
a = (b*h)/2;
printf("El rea del tringulo es %f", a)
...
Fin
En ocasiones los algoritmos son susceptibles de nunca terminar, por ejemplo, cuando
entran a un bucle infinito. Cuando esto ocurre, el algoritmo nunca devuelve ningn
valor de salida, y podemos decir que la funcin queda indefinida para ese valor de
entrada. Por esta razn se considera que los algoritmos son funciones parciales, es decir,
no necesariamente definidas en todo su dominio de definicin.
Cuando una funcin puede ser calculada por medios algortmicos, sin importar la
cantidad de memoria que ocupe o el tiempo que se tarde, se dice que dicha funcin es
computable. No todas las funciones entre secuencias datos son computables. El
problema de la parada es un ejemplo.
Anlisis de algoritmos
Artculo principal: Anlisis de algoritmos
Ejemplo de algoritmo
El problema consiste en encontrar el mximo de un conjunto de nmeros. Para un
ejemplo ms complejo vase Algoritmo de Euclides.
Es decir, dado un conjunto se pide encontrar tal que para todo elemento que pertenece al
conjunto .
Descripcin formal
funcin max()
Sobre la notacin:
Implementacin
En lenguaje C++:
Vase tambin
Tipos de algoritmos segn su funcin
Algoritmo de ordenamiento
Algoritmo de bsqueda
Temas relacionados
Complejidad computacional
Diagramas de flujo
Diagrama Nassi-Shneiderman
Mquina de Turing
Disciplinas relacionadas
Ciencias de la Computacin
Anlisis de algoritmos
Complejidad computacional
Informtica
Inteligencia artificial
Investigacin operativa
Matemticas
Programacin