Академический Документы
Профессиональный Документы
Культура Документы
1Definicin formal
2.1Diagrama de flujo
2.2Pseudocdigo
2.3Sistemas formales
2.4Implementacin
2.5Variables
2.6Estructuras secuenciales
4Anlisis de algoritmos
5Ejemplo de algoritmo
o
5.2Descripcin formal
5.3Implementacin
6Vase tambin
o
6.3Temas relacionados
6.4Disciplinas relacionadas
7Referencias
8Bibliografa
9Enlaces externos
Definicin formal[editar]
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 deestructuras 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
Tiempo secuencial. Un algoritmo funciona en tiempo discretizado paso a paso,
definiendo as una secuencia de estados computacionales por cada entrada vlida
(la entrada son los datos que se le suministran al algoritmo antes de comenzar).
Estado abstracto. Cada estado computacional puede ser descrito formalmente
utilizando una estructura de primer orden y cada algoritmo es independiente de su
implementacin (los algoritmos son objetos abstractos) de manera que en un
algoritmo las estructuras de primer orden son invariantes bajo isomorfismo.
Exploracin acotada. La transicin de un estado al siguiente queda
completamente determinada por una descripcin fija y finita; es decir, entre cada
estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y
limitada de trminos del estado actual.
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
Aritmetizabilidad. Solamente operaciones innegablemente calculables estn
disponibles en el paso inicial.
Diagrama de flujo[editar]
Pseudocdigo[editar]
Artculo principal: Pseudocdigo
Sistemas formales[editar]
La teora de autmatas y la teora de funciones recursivas proveen
modelos matemticos que formalizan el concepto de algoritmo. Los
modelos ms comunes son la mquina de Turing, mquina de
registro yfunciones -recursivas. Estos modelos son tan precisos como
un lenguaje mquina, careciendo de expresiones coloquiales o
ambigedad, sin embargo se mantienen independientes de cualquier
computadora y de cualquier implementacin.
Implementacin[editar]
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.
Variables[editar]
Son elementos que toman valores especficos de un tipo de datos
concreto. La declaracin de una variable puede realizarse comenzando
con var. Principalmente, existen dos maneras de otorgar valores iniciales
a variables:
1. Mediante una sentencia de asignacin.
2. Mediante un procedimiento de entrada de datos (por ejemplo:
'read').
Ejemplo:
...
i:=1;
read(n);
while i < n do begin
(* cuerpo del bucle *)
i := i + 1
end;
...
Estructuras secuenciales[editar]
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
Anlisis de algoritmos[editar]
Artculo principal: Anlisis de algoritmos
Ejemplo de algoritmo[editar]
El problema consiste en encontrar el mximo de un conjunto de nmeros.
Para un ejemplo ms complejo vase Algoritmo de Euclides.
Descripcin formal[editar]
El algoritmo puede ser escrito de una manera ms formal en el
siguiente pseudocdigo:
Algoritmo Encontrar el mximo de un conjunto
funcin max()
// es un conjunto no vaco de nmeros//
// es el nmero de elementos de //
devolver
Sobre la notacin:
Implementacin[editar]
En lenguaje C++:
int max(int c[], int n)
{
int i, m = c[0];
for (i = 1; i < n; i++)
if (c[i] > m) m = c[i];
return m;
}
Vase tambin[editar]
Algoritmo de ordenamiento
Algoritmo de bsqueda
Temas relacionados[editar]
Complejidad computacional
Diagramas de flujo
Diagrama Nassi-Shneiderman
Mquina de Turing
Disciplinas relacionadas[editar]
Ciencias de la Computacin
Anlisis de algoritmos
Complejidad computacional
Informtica
Inteligencia artificial
Investigacin operativa
Matemticas
Programacin
Referencias[editar]
1.
2.
3.
4.
5.
6.
Volver arriba Carl Reynolds & Paul Tymann (2008). Schaum's Outline of
Principles of Computer Science. McGraw-Hill. ISBN 978-0-07-146051-4.
7.
8.
9.
10. Saltar a:a b Nachum Dershowitz & Yuri Gurevich (2008). A natural
axiomatization of computability and proof of Church's Thesis. Bulletin of
Symbolic Logic 14 (3): 299-350. ISSN 1079-8986.
11. Volver arriba Kelley, Dean (1995). Teora de Autmatas y Lenguajes
Formales. Prentice Hall. ISBN 0-13-497777-7.
Bibliografa[editar]
Enlaces externos[editar]
Portal de algoritmia
DEFINICIN DE
ALGORITMO
En el rabe es donde podemos encontrar el origen etimolgico del trmino
algoritmo que ahora vamos a analizar en profundidad. Ms exactamente se
halla en el nombre del matemtico Al-Khwarizmi, que naci en la Edad
Media en una de las zonas de lo que hoy se conoce como Uzbiekistn, en
Asia central.
Algoritmo
En Bagdad fue donde este desarroll gran parte de su carrera y es que
hasta all se traslad para, por orden del califa, crear un centro superior de
investigaciones cientficas que se dio en llamar Casa de la Sabidura.
Diversos tratados de lgebra o astronoma fueron algunos de los trabajos
que realiz dicho sabio que tambin ha dado lugar a la creacin de otra
serie de trminos cientficos tales como lgebra o guarismo.
Tal fue la importancia que tuvo dicho personaje histrico que actualmente
est considerado no slo como el padre del lgebra sino tambin como
quien se encarg de introducir nuestro sistema de numeracin.
Se denomina algoritmo a un grupo finito de operaciones organizadas de
manera lgica y ordenada que permite solucionar un determinado
problema. Se trata de una serie de instrucciones o reglas establecidas que,
por medio de una sucesin de pasos, permiten arribar a un resultado o
solucin.
Asimismo tampoco podemos pasar por alto que los algoritmos se pueden
expresar a travs de lenguajes de programacin, pseudocdigo, el lenguaje
natural y tambin a travs de los conocidos como diagramas de flujo.
Un manual de instrucciones para el funcionamiento de un electrodomstico
y una serie de rdenes del jefe a un empleado para desarrollar una cierta
tarea tambin pueden incluir algoritmos.
Esta amplitud de significado permite apreciar que no existe una definicin
formal y nica de algoritmo. El trmino suele ser sealado como el nmero
fijo de pasos necesarios para transformar informacin de entrada (un
problema) en una salida (su solucin). De todas formas, algunos algoritmos
carecen de final o no resuelven un problema en particular.
Existen ciertas propiedades que alcanzan a todos los algoritmos, con
excepcin de los denominados algoritmos paralelos: el tiempo secuencial
(los algoritmos funcionan paso a paso), el estado abstracto (cada algoritmo
es independiente de su implementacin) y la exploracin acotada (la
transicin entre estados queda determinada por una descripcin finita y
fija).
Cabe mencionar por ltimo que los algoritmos son muy importantes en la
informtica ya que permiten representar datos como secuencias de bits. Un
programa es un algoritmo que indica a la computadora qu pasos
especficos debe seguir para desarrollar una tarea.
--------------------
1.
Pasos
2.
Tipos
3.
4.
5.
Mandatos e instrucciones
6.
7.
Pasos:
Pasos
1
Diseo de algoritmo
Codificacin
Compilacin y ejecucin
Verificacin
Depuracin
Documentacin
Concepto
Algoritmo: es un mtodo para resolver un
problema mediante una serie de pasos
definidos, precisos y finitos.
Tipos :
Mtodo
Algortmico
Heurstica:
Ejemplos
Los algoritmos se
pueden
Formulas
expresar por:
Diagramas de flujo
Norte-Sur,Top-Down
Pseudo cdigo
inicio
leer a,b,c
calcular
escribir permetro
fin
Especif. de entrada
Especif. de salida
coef
Calculo
Expresin algebraica
team. cuadrtico
term. lineal
term. independiente
Codificacin en QBasic
X1=((-B+SQR(B^2-4*A*C))
X2=((-B-SQR(B^2-4*A*C))
Proceso:
En el diseo:
Los programas que se estructuran de esta forma, se dicen que tienen diseo modular y el
mtodo de romper el programa en modos pequeos se llamaprogramacin modular.
Los mdulos pueden ser planificados, codificados, compilados y depurados
independientemente pueden ser intercambiados entre si.
Este proceso implica la ejecucin de los siguientes pasos:
1
programar un modulo
comprobar un modulo
depurar el modulo
este proceso convierte el resultado del anlisis del problema en un diseo modular con
refinamientos sucesivos que permiten una traduccin a un lenguaje que se denomina
diseo del algoritmo.
El algoritmo se puede representar por medio de dos formas :
Pseudo cdigo
Diagrama de flujo:
Pseudo cdigo: es el lenguaje de especificacin de algoritmos y tiene una estructura: Las
instrucciones se escriben en ingles o en palabras similares al ingles o espaol que facilitan
la escritura de programacin
Para la resolucin de una ecuacin de segundo grado se escribira
inicio
Introducir coeficientes a, b y c
Imprimir ttulos primera raz, segunda raz, no tiene solucin,
Calcular raz 1 y raz 2
Imprimir raz 1 y raz 2
Fin
Diagramas de flujo (flows charts): Es la representacin grafica del algoritmo; segn la
ANSI consta de una simbologia , que tiene los siguientes significados:
Para ver el grfico seleccione la opcin "Descargar" del men superior
Smbolos del Diagrama de flujo
Codificacin :
Programacin:
Windows/Dos/
Quick Basic = Editor de texto.
Programa: definicin:
conjunto de datos y sentencias:
En la pantalla veramos:
Mandatos e instrucciones:
Mandato (command): es una orden aislada de efecto inmediato.
Ejemplo:
Mandato
RUN
LIST
SAVE.
PRINT
INPUT
Edicin de un programa: un programa esta formado por lneas secuenciales que se ejecutan
en forma descendente (Up Down)
Para dar por terminada una lnea se pulsa la tecla Enter (Return) en cualquier parte de la
misma. Para cambiar una lnea basta volver a teclearla.
Se puede corregir una lnea (borrar, rescribir ) en pantalla o bien con el mandato
EDIT.
Se pueden incluir varias instrucciones en una misma lnea, separndolos por dos
puntos.
Modo Directo:
Modo Programa
Run
Ventana activa
Ventana inmediata
CLS
Recomendaciones:
Todo programa debe estar documentado con comentarios; la primera lnea debe
contener el titulo del programa. Los comentarios deben de ir precedidos de la palabra
clave REM o de un apostrofo ( )
Constantes:
QBasic, trabaja con dos tipos de datos:
Datos
numricos:
alfanumricos
3452
Estos son ejemplos de valores numricos de punto fijo; se puede emplear una notacin de
punto flotante.
Mantisa
1,23456E+15
123456.0000000000
1.234567890789456D10
DIA $
Peso
-23.5
lunes
80
Una variable alfanumrica debe terminar con el carcter $ (x$, a23$, dias$,)
DEFDBL A
7. Documentacin:
Los comentarios que se incluyan deben ser significativos
Documentacin interna:
Va incluida dentro del cdigo del programa fuente, por medio de comentarios que
ayudan a la comprensin del cdigo.
El programa en si no los necesita y los ignora. Hace que los programas sean comprensibles.