Documente Academic
Documente Profesional
Documente Cultură
Contenido
[ocultar]
1 Caractersticas principales y definicin formal
2 Medios de expresin de un algoritmo
o 2.1 Diagrama de flujo
o 2.2 Pseudocdigo
o 2.3 Sistemas formales
o 2.4 Implementacin
3 Algoritmos como funciones
4 Anlisis de algoritmos
5 Ejemplo de algoritmo
o 5.1 Descripcin de alto nivel
o 5.2 Descripcin formal
o 5.3 Implementacin
6 Tipos de algoritmos segn su funcin
7 Tcnicas de diseo de algoritmos
8 Temas relacionados
9 Disciplinas relacionadas
10 Referencias
11 Bibliografa
12 Enlaces externos
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
x
Artculo principal: Diagrama de flujo
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
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 slo algunos ejemplos.
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 m tal que para todo elemento x
que pertenece al conjunto C.
Para encontrar el elemento mximo, se asume que el primer elemento (c0) es el mximo;
luego, se recorre el conjunto y se compara cada valor con el valor del mximo nmero
encontrado hasta ese momento. En el caso que un elemento sea mayor que el mximo,
se asigna su valor al mximo. Cuando se termina de recorrer la lista, el mximo nmero
que se ha encontrado es el mximo de todo el conjunto.
Descripcin formal
funcin
si entonces
devolver
Sobre la notacin:
" " representa la asignacin entre dos objetos. Por ejemplo, significa
que el objeto m cambia su valor por el de x
"devolver" termina el algoritmo y devuelve el valor a su derecha (en este caso,
el mximo de C)
Implementacin
En lenguaje C++:
Temas relacionados
Cota superior asinttica
Cota inferior asinttica
Cota ajustada asinttica
Complejidad computacional
Mquina de Turing
Disciplinas relacionadas
Ciencias de la Computacin
Anlisis de algoritmos
Complejidad computacional
Informtica
Inteligencia artificial
Investigacin operativa
Matemticas
Programacin
Referencias
1. a b c d e Brassard, Gilles; Bratley, Paul (1997). Fundamentos de Algoritmia.
Madrid: PRENTICE HALL. ISBN 84-89660-00-X.
2. a b Real Academia Espaola. Diccionario de la lengua espaola "Conjunto
ordenado y finito de operaciones que permite hallar la solucin de un
problema."
3. a b Cormen, Thomas; Leiserson, Charles; Rivest, Ronald; Stein, Clifford
(2009). Introduction to algorithms. Cambridge, Massachusetts: The MIT Press.
ISBN 978-0-262-53305-8.
4. Ralph P. Grimaldi (1998). Propiedades de los nmeros enteros: Induccin
matemtica, Matemticas Discreta y Combinatoria. Mxico: Addison Wesley
Longman de Mxico. ISBN 968-444-324-2.
5. Johnsonbaugh, Richard (2005). Introduccin a la teora de nmeros,
Matemticas Discretas. Mxico: PEARSON EDUCACIN. ISBN 970-26-
0637-3.
6. Carl Reynolds & Paul Tymann (2008). Schaum's Outline of Principles of
Computer Science. McGraw-Hill. ISBN 978-0071460514.
7. a b Gurevich, Yuri (2000). Sequential Abstract State Machines capture
Sequential Algorithms ACM Transactions on Computational Logic. Vol. 1. n.
1. ISSN 1529-3785, 77-111.
8. John E. Savage (1987). The Complexity of Computing. Krieger Publishing Co..
ISBN 089874833X.
9. a b [Michael] (2005). Introduction to the Theory of Computation, 2 edicin,
Course Technology. ISBN 978-0534950972.
10. a b Nachum Dershowitz & Yuri Gurevich (2008). A natural axiomatization of
computability and proof of Church's Thesis Bulletin of Symbolic Logic. Vol.
14. n. 3. ISSN 10798986, 299-350.
11. [Dean] (1995). Teora de Autmatas y Lenguajes Formales. Prentice Hall.
ISBN 0-13-497777-7.
Bibliografa
Fundamentos de Algoritmia, G. Brassard y P. Bratley. (ISBN 848966000)
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)
The Design and Analysis of Computer Algorithms, Aho, A.