lunes, 23 de noviembre de 2009

historia de los algoritmos

HISTORIA DEL ALGORITMO.

El término proviene del matemático árabe Al’Khwarizmi, que escribió un tratado sobre los números. Este texto se perdió, pero su versión latina, Algoritmi de Numero Indorum, sí se conoce.
El trabajo de Al’Khwarizmi permitió preservar y difundir el conocimiento de los griegos (con la notable excepción del trabajo de Diofanto) e indios, pilares de nuestra civilización. Rescató de los griegos la rigurosidad y de los indios la simplicidad (en vez de una larga demostración, usar un diagrama junto a la palabra Mira). Sus libros son intuitivos y prácticos y su principal contribución fue simplificar las matemáticas a un nivel entendible por no expertos. En particular muestran las ventajas de usar el sistema decimal indio, un atrevimiento para su época, dado lo tradicional de la cultura árabe.
La exposición clara de cómo calcular de una manera sistemática a través de algoritmos diseñados para ser usados con algún tipo de dispositivo mecánico similar a un ábaco, más que con lápiz y papel, muestra la intuición y el poder de abstracción de Al’Khwarizmi. Hasta se preocupaba de reducir el número de operaciones necesarias en cada cálculo. Por esta razón, aunque no haya sido él el inventor del primer algoritmo, merece que este concepto esté asociado a su nombre.
Los babilonios que habitaron en la antigua Mesopotania, empleaban unas pequeñas bolas hechas de semillas o pequeñas piedras, a manera de “cuentas” y que eran agrupadas en carriles de caña. Más aún, en 1.800 A.C. un matemático babilónico inventó los algoritmos que le permitieron resolver problemas de cálculo numérico.
En 1850 A.C., un algoritmo de multiplicación similar al de expansión binaria es usado por los egipcios.
La teoría de las ciencias de la computación trata cualquier objeto computacional para el cual se puede crear un buen modelo. La investigación en modelos formales de computación se inició en los 30’s y 40’s por Turing, Post, Kleene, Church y otros. En los 50’s y 60’s los lenguajes de programación, compiladores y sistemas operativos estaban en desarrollo, por lo tanto, se convirtieron tanto en el sujeto como la base para la mayoría del trabajo teórico.
El poder de las computadoras en este período estaba limitado por procesadores lentos y por pequeñas cantidades de memoria. Así, se desarrollaron teorías (modelos, algoritmos y análisis) para hacer un uso eficiente de ellas. Esto dio origen al desarrollo del área que ahora se conoce como “Algoritmos y Estructuras de Datos”. Al mismo tiempo se hicieron estudios para comprender la complejidad inherente en la solución de algunos problemas. Esto dió origen a lo que se conoce como la jerarquía de problemas computacionales y al área de “Complejidad Computacional”.


concepto de algoritmo
En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa Al Juarismi[1] ) es una lista bien definida, ordenada y finita de operaciones que permite hallar la solución a un problema. Dado un estado inicial y una entrada, a través de pasos sucesivos y bien definidos se llega a un estado final, obteniendo una solución. Los algoritmos son objeto de estudio de la algoritmia.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 cuestión o inclusive en las instrucciones que recibe un trabajador por parte de su patrón. También existen ejemplos de índole matemática, como el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para calcular el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un Sistema lineal de ecuaciones.
http://es.wikipedia.org/wiki/Algoritmo
ALGORITMOConjunto de acciones o secuencias de operaciones ejecutadas en un determinado orden para resolver un problema.AcciónAcontecimiento producido por un actor en un tiempo finito que produce un resultado definido y preciso y además genera cierta transformación.Analizaremos la acciónExisten diferentes tipos de acciones:Acción simple: Realizadas directamenteAcción compleja: No se pueden realizar directamente sino a través de una descomposición de acciones más simples (diseño Top-down).Transformación Generada en los elementos intervinientes. Para determinar la transformación debo conocer el ESTADO.
http://www.monografias.com/trabajos59/concepto-algoritmos/concepto-algoritmos.shtml
podemos definir algoritmo como un conjunto de pasos o instruciones finito que se deben seguir para realizar una determinada tarea.
http://www.error500.net/garbagecollector/archives/categorias/apuntes/concepto_de_algoritmo.php
concepto de clase del instituto campechano.
algoritmo son los pasos realizadosen un orden para resolver los problema sel que fuese,o es allar una solucion aun problema por medio de un lista definida,ordenada y finita.





TIPOS DE ALGORITMOS

Tipos de AlgoritmosCualitativos: Son aquellos en los que se describen los pasos utilizando palabras.Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso.
Existen dos tipos y son llamados así por su naturaleza:Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso.
http://www.desarrolloweb.com/articulos/2143.phpAlgoritmos estáticos, es decir, algoritmos que funcionan siempre igual, independientemente del tipo de problema tratado. Por ejemplo, los sistemas basados en el método de resolución. Algoritmos probabilísticos, es decir, algoritmos que no utilizan valores de verdad booleanos sino continuos. Por ejemplo, los sistemas basados en lógica difusa. Algoritmos adaptativos, es decir, algoritmos con cierta capacidad de aprendizaje. Por ejemplo, los sistemas basados en redes neuronales.


CONSTANTES Y VARIABLES

REGLA DE DECISIÓN - PRUEBA DE CONTRASTESi ya están formuladas las hipótesis, ¿bajo que condiciones podrá ser rechazada la hipótesis nula?. O lo que es lo mismo, ¿cuando consideraremos que tenemos evidencias suficientes de la hipótesis alternativa?. Este es el momento de elegir la regla de decisión, es decir , establecer un criterio que permita rechazar o no la hipótesis nula.Por lo general , una prueba o regla de decisión para contrastar una hipótesis consiste en un suceso o resultado experimental S, cuya posibilidad de ocurrencia sea muy pequeña siendo cierta la hipótesis H0, es decir:(Nivel de significación)Si ocurre el suceso S, rechazaremos la hipótesis H0, y no lo haremos en caso contrario.La justificación es simple: o bien la hipótesis es cierta y se ha producido un suceso de muy pequeña probabilidad, o bien la hipótesis es falsa. Es como si hiciésemos una reducción al absurdo, sólo que la contradicción con la hipótesis de partida no se establece de forma absoluta, sino en términos de probabilidad.Si ocurre S, parece pues natural que apostemos por la segunda opción y rechacemos la hipótesis H0, haciendonos cargo de que existe una probabilidad a (es la probabilidad de que haya ocurrido S aún siendo cierta H0) de equivocarnos.
http://www.isftic.mepsyd.es/w3/eos/MaterialesEducativos/mem2001/estadistica/ampliatests.htm
Se trata de variables que surgen cuando se estudian dos características asociadas a la observación de un fenómeno.Ejemplo 1.- Estudiamos la talla, medida en cm. y el peso, medido en kg. de un grupo de 10 personas, podemos obtener los siguientes valores:TALLA (cm)160165168170171175175180180182PESO (kg)55585861676266747983Podemos llamar X a la talla e Y al peso con lo que se obtendría la variable bidimensional (X, Y) que toma 10 valores, que son las 10 parejas de valores de la tabla anterior: (160,55), (165,58), etc.Cuando el número de valores de la variable bidimensional no es muy grande, los mismos se expresan en una tabla semejante a la anterior, pero en algunos casos el número de "parejas" de valores (x,y) es grande y además muchos de ellos aparecen repetidos; en este caso se utiliza una "Tabla de doble entrada"
http://descartes.cnice.mec.es/materiales_didacticos/Variables_estadisticas_bidimensionales_regresion_correlacion/Regresion_1.htm#Variables%20estadísticas%20bidimensionales
Contrastes T en un modelo lineal uniecuacional. Para desarrollar la presente cuestión pasamos a desarrollar una serie de puntos; 1.- Realizamos un análisis sobre la muestra de una población pasando a desarrollar una serie de objetivos tales como una especificacion donde las variables rpedeterminadas X, van a explicar o determinar una variable endógena y; - estimación de parámetros - validación de modelos estimados que se realizan mediante *la demida de grado de ajuste * análisis de los residuos * coeficiente de determinación2.- En el segundo paso establece mos las hipótesis sobre las q consideramos que se puede estimar la muestra H0; B = 0 H1 B = 0 si aceptramos H0 se elimina xj como variable explicativa de las variaciones de la vriable endógena, si aceptamos H1 consideramos la variable explicativa xy como aceptable. 3.- Nos basamos en unos datos obtenidos n de una poblacion que suelen sre mayores de los que posteriormente van a considerarse3. 4.- Forma de procesar los datos. Utilizando el estadístico t util para el presente modelo q se desarrolla mediante la fórmula T=bj/Sbj= njj/Se raiz ajjSi Ho es cierto su distribución muestral T e t (n-k-1)5.- regla de decisión. si fuese cierta la hipótesis Ho la región de aceptacion se encontraría cercana a 0 (-t /2, +t /2) El nivel de significación que representamos mediante determina la máxima probabilidad de cometer error de tipo I - si rechazamos H0 siendo cierta cometemos error de tipo I si rechazamos H1 siendo cierta cometemos error de tipo II6. - Debemos estimar valores de comprendidos ,015 =0,05entre (o,05 y 0,15) teniendo en cuenta sobre todo que estos deben ser superiores a 0,05 ya que si no así casi siempre se aceptaría H0, eludiendo multitud de variables exógenas. Podemos calificar la región H1 como la crítica, siendo H0 aceptacion del modelo P = 2 Pr (!T! mayor !t!). Al aumentar el valor de t la probabilidad límite se reduce. así se produce una variación es la aceptación de Co a Ci. La probabilidad P = Pr (Tbj !mayor! !tbj!) 6.- Tomamos a continuación los datos de los estadísticos T= bj/S bj Posteriormente relacionamos la probabilidad "p" con el valor antes mencionado " " 1 si p mayor o = aceptamos Co 1 si p meno r aceptamos C1 ejemplo 1 p= 0,25 =0,05 ejemplo 2 p= 0
http://www.xuletas.es/ficha/contraste-t-2/
Conectores Distributivos y de Contraste-Los conectores distributivos.- sirven para presentar ideas entre las que se da una relación de alternancia. Los más frecuentes son: por una parte...por otra (parte); pormun lado... por otro(lado); unas veces... otras veces; unos... otros.-Los conectores de contraste u oposición.-señalan que los enunciados que aparecen a continuacióncontienen alguna oposición, contraste o diferencia con respecto a la información anterior. Los principales conectores de contraste son: pero, sin embargo, no obstante, antes bien, ahora bien, en cambio, por el contrario...
http://www.xuletas.es/ficha/conectores-distributivos-y-de-contraste/

CONTADOR Y ACUMULADOR

ContadoresUn contador es una variable cuyo valor se incremento o decrementa,Una forma de controlar a un bucle es mediante un contadorLos procesos repetitivos son la base del uso de las computadoras.En estos procesos se necesitan normalmente contar los sucesos o acciones internas del bucle,como pueden ser los elementos de un fichero de interacciones a realizar por el bucle.El contador se muestra en el ejemplo siguiente con la variable CONT.Este es un diagrama de flujo para un algoritmo que se desea repetir 50 veces.
AcumuladorUn acumulado es una variable cuya misión es almacenar cantidades variables resultantes de sumas sucesivas.Realiza la misma función que un contador con deferencia de que el incremento o decremento de cada suma es variable en lugar de constante como en el caso del contador.Se representa con la instrucción S S+N, donde N es una variable y no una constante.Decisión o selecciónCuando se quiere especificar dos o mas caminos alternativos en un algoritmos se deben utilizar estructuras de decisión o solución. Una instrucción de decisión o selección evalúa una condición y en función del resultado de esa condición se bifurca en un determinado punto.
http://conceptodeprograma.tripod.com/paginaprincipal.htm
En electrónica digital, un contador (counter en inglés) es un circuito secuencial construido a partir de biestables y puertas lógicas capaz de realizar el cómputo de los impulsos que recibe en la entrada destinada a tal efecto, almacenar datos o actuar como divisor de frecuencia. Habitualmente, el cómputo se realiza en un código binario, que con frecuencia será el binario natural o el BCD natural (contador de décadas).Existen diversos tipos de contadores:Contadores de rizado.Contadores paralelos.Contadores de rizado mod-6.Contador Johnson. Activa una sola salida entre varias. En respuesta al pulso de conteo, la salida siguiente pasa a ser la activa. No se emplea un contador binario seguido de un decodificador debido a que, al conmutar entre dos estados, podría producir pulsos espúrios en otras salidas. El 4017 es un contador johnson de 10 estados.“Se utilizan para llevar el control del número de ocasiones en que se realiza una operación o se cumple una condición. Los incrementos son generalmente de uno en uno.”CONTADOR:Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante cada vez que se produce un determinado suceso o acción. Los contadores se utilizan con la finalidad de contar sucesos o acciones internas de un bucle; deben realizar una operación de inicialización y posteriormente las sucesivas de incremento o decremento del mismo. La inicialización consiste en asignarle al contador un valor. Se situará antes y fuera del bucle.Representación:¬ nombre del contador> + Si en vez de incremento es decremento se coloca un menos en lugar del más.Ejemplo: i = i + 1ACUMULADOR O TOTALIZADOR :Es una variable que suma sobre sí misma un conjunto de valores para de esta manera tener la suma de todos ellos en una sola variable. La diferencia entre un contador y un acumulador es que mientras el primero va aumentando de uno en uno, el acumulador va aumentando en una cantidad variable.Representación: ¬ + Valores de inicializaciónSuma = 0Producto = 1
http://gencervel.wordpress.com/2008/01/22/contadores-y-acumuladores/
CONTADOR: Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante cada vez que se produce un determinado suceso o acción. Los contadores se utilizan con la finalidad de contar sucesos o acciones internas de un bucle; deben realizar una operación de inicialización y posteriormente las sucesivas de incremento o decremento del mismo. La inicialización consiste en asignarle al contador un valor. Se situará antes y fuera del bucle.Representación: ¬ nombre del contador> + Si en vez de incremento es decremento se coloca un menos en lugar del más.Ejemplo: i = i + 1ACUMULADOR O TOTALIZADOR :Es una variable que suma sobre sí misma un conjunto de valores para de esta manera tener la suma de todos ellos en una sola variable. La diferencia entre un contador y un acumulador es que mientras el primero va aumentando de uno en uno, el acumulador va aumentando en una cantidad variable.Representación: ¬ + Ejemplo: Calcular la suma de los cuadrados de los primeros 100 enteros y escribir el resultado. Se desea resolver el problema usando estructura Desde, Mientras y luego Repetir.
http://www.mailxmail.com/curso-aprende-programar/estructuras-basicas

PSEUDOCODIGO
Un pseudocódigo (falso lenguaje), es una serie de palabras léxicas y gramaticales referidos a los lenguajes de programación, pero sin llegar a la rigidez de la sintaxis de estos ni a la fluidez del lenguaje coloquial. Esto permite codificar un programa con mayor agilidad que en cualquier lenguaje de programación, con la misma validez semántica, normalmente se utiliza en las fases de análisis o diseño de Software, o en el estudio de un algoritmo. Forma parte de las distintas herramientas de la ingeniería de software. Es, netamente, lenguaje de tipo informático.Para probar el algoritmo se utiliza un Pseudo intérprete el cual se encuentra disponible para las plataformas GNU/Linux y Windows, es de código libre y está escrito en C++. El mismo se ejecuta en un Terminal.El pseudocódigo describe un algoritmo utilizando una mezcla de frases en lenguaje común, instrucciones de programación y palabras clave que definen las estructuras básicas. Su objetivo es permitir que el programador se centre en los aspectos lógicos de la solución a un problema.No siendo el pseudocódigo un lenguaje formal, varían de un programador a otro, es decir, no hay una estructura semántica ni arquitectura estándar. Es una herramienta ágil para el estudio y diseño de aplicaciones, veamos un ejemplo, que podríamos definir como: lenguaje imperativo, de tercera generación, según el método de programación estructurada.Pseudocódigo = Pseudo (Supuesto) + Código (Instrucción)
http://es.wikipedia.org/wiki/Pseudocódigo
un pseudocodigo no es una forma de programación. Se trata de una herramienta que los analistas de sistemas utilizan para comunicar a los programadores la estructura del programa que van a realizar, de forma de tener una idea bien clara de lo que se necesita programar.Digamos que el pseudo código es una forma de diagramar un algoritmo para resolver un determinado problema, sin atenerse a ningún lenguaje de programación en especial.Un algoritmo es un conjunto de procedimientos que permiten resolver un problema.En vez de escribir el programa directamente en un lenguaje de programación determinado (C, Basic, etc.), crearemos un borrador entendible para todos, para luego de tener bien en claro lo que se debe hacer, pasar a la programación.
http://www.monografias.com/trabajos40/pseudo-codigo/pseudo-codigo.shtml
Considerado como un lenguaje falso, el pseudocódigo es un lenguaje intermedio entre nuestro lenguaje y el de programación, debido a que quien lo utiliza se guía por una serie de normas pero sin llegar a usar una estructura tan rígida como la del lenguaje de programación.El objetivo al que apunta es que quien lo pone en práctica se centre más en la solución del algoritmo o el diseño de un software que en el programa que utiliza para crearlo. Y esto es posible porque es más fácil de manipular ya que no tiene que tener en mente el lenguaje en sí y además, más fácil de codificar.Por ejemplo, si alguien tiene que hacer un software con un fin determinado, utiliza un pseudocódigo propio en donde confluyen frases del lenguaje coloquial y algunas palabras de programación, y una vez que se logra concretar el software, se puede pasar al escalón siguiente que es el de la transformación al lenguaje de programación formal que se vaya a utilizar.De esta manera, al ser un lenguaje intermedio, no tiene una composición estandarizada por lo que no todos los programadores utilizan la misma sintaxis con exactitud. Pero a la vez, como es una herramienta que está un paso previo al lenguaje formal de programación, es fácil de transformar al que será ejecutado en la computadora.
http://www.mastermagazine.info/termino/6428.php

4 comentarios: