0
   Un algoritmo (del griego y latín, dixit    algorithmus y este a su vez del matemático    persa Al-Juarismi[1] ) es un ...
   Un algoritmo se puede concebir como    una función que transforma los datos de    un problema (entrada) en los datos d...
   Como medida de la eficiencia de un algoritmo, se suelen estudiar    los recursos (memoria y tiempo) que consume el alg...
   Dado un conjunto finito de números, se tiene el problema de    encontrar el número más grande. Sin pérdida de generali...
Sobre la notación:"←" representa una asignación: ←significa que la variable toma el valor de ;"devolver" termina el algori...
   Un algoritmo voraz (también conocido como    ávido, devorador o goloso) es aquel que, para    resolver un determinado ...
 El conjunto C de candidatos, entradas del problema. Función solución. Comprueba, en cada paso, si el subconjunto  actua...
   En las ciencias de la computación, un algoritmo paralelo,    en oposición a los algoritmos clásicos o algoritmos    se...
   Un algoritmo probabilista (o probabilístico) es un algoritmo que basa    su resultado en la toma de algunas decisiones...
   Se puede optar por la elección aleatoria si se tiene un problema cuya    elección óptima es demasiado costosa frente a...
   Algoritmo de Montecarlo:   A veces da una solución incorrecta.   Con una alta probabilidad encuentra una solución co...
   Un algoritmo de Las Vegas nunca da una solución falsa. Toma decisiones al azar para encontrar una solución antes que ...
   Saltar a: navegación, búsqueda En ciencias de la computación,    un algoritmo determinista es un algoritmo que, en tér...
   En Ciencias de la computación, un algoritmo no    determinístico es un algoritmo que con la misma    entrada ofrece mu...
 Los algoritmos pueden ser expresados de muchas maneras,  incluyendo al lenguaje natural, pseudocódigo, diagramas de fluj...
Los diagramas de flujo son descripciones gráficas dealgoritmos; usan símbolos conectados con flechas paraindicar la secuen...
   El pseudocódigo (falso lenguaje, el prefijo pseudo significa falso)    es una descripción de alto nivel de un algoritm...
   La teoría de autómatas y la teoría de funciones    recursivas proveen modelos matemáticos que    formalizan el concept...
   Muchos algoritmos son ideados para    implementarse en un programa. Sin embargo,    los algoritmos pueden ser implemen...
   Círculo: Procedimiento estandarizado.   Cuadrado: Proceso de control.   Línea ininterrumpida: Flujo de información v...
Algoritmo
Algoritmo
Algoritmo
Algoritmo
Algoritmo
Algoritmo
Upcoming SlideShare
Loading in...5
×

Algoritmo

1,624

Published on

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,624
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
54
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Algoritmo"

  1. 1.  Un algoritmo (del griego y latín, dixit algorithmus y este a su vez del matemático persa Al-Juarismi[1] ) es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad.[2] Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia.[1]
  2. 2.  Un algoritmo se puede concebir como una función que transforma los datos de un problema (entrada) en los datos de una solución (salida). Más aun, los datos se pueden representar a su vez como secuencias de bits, y en general, de símbolos cualesquiera.[1] [9] [11] Como cada secuencia de bits representa a un número natural (véase Sistema binario), entonces los algoritmos son en esencia funciones de los números naturales en los números naturales que sí se pueden calcular. Es decir que todo algoritmo calcula una función donde cada número natural es la codificación de un problema o de una solución.
  3. 3.  Como medida de la eficiencia de un algoritmo, se suelen estudiar los recursos (memoria y tiempo) que consume el algoritmo. El análisis de algoritmos se ha desarrollado para obtener valores que de alguna forma indiquen (o especifiquen) la evolución del gasto de tiempo y memoria en función del tamaño de los valores de entrada. El análisis y estudio de los algoritmos es una disciplina de las ciencias de la computación y, en la mayoría de los casos, su estudio es completamente abstracto sin usar ningún tipo de lenguaje de programación ni cualquier otra implementación; por eso, en ese sentido, comparte las características de las disciplinas matemáticas. Así, el análisis de los algoritmos se centra en los principios básicos del algoritmo, no en los de la implementación particular. Una forma de plasmar (o algunas veces "codificar") un algoritmo es escribirlo en pseudocódigo o utilizar un lenguaje muy simple tal como Lexico, cuyos códigos pueden estar en el idioma del programador.
  4. 4.  Dado un conjunto finito de números, se tiene el problema de encontrar el número más grande. Sin pérdida de generalidad se puede asumir que dicho conjunto no es vacío y que sus elementos están numerados como . Es decir, dado un conjunto se pide encontrar tal que para todo elemento que pertenece al conjunto . Para encontrar el elemento máximo, se asume que el primer elemento () es el máximo; luego, se recorre el conjunto y se compara cada valor con el valor del máximo número encontrado hasta ese momento. En el caso que un elemento sea mayor que el máximo, se asigna su valor al máximo. Cuando se termina de recorrer la lista, el máximo número que se ha encontrado es el máximo de todo el conjunto.
  5. 5. Sobre la notación:"←" representa una asignación: ←significa que la variable toma el valor de ;"devolver" termina el algoritmo y devuelveel valor a su derecha (en este caso, elmáximo de ).
  6. 6.  Un algoritmo voraz (también conocido como ávido, devorador o goloso) es aquel que, para resolver un determinado problema, sigue una heurística consistente en elegir la opción óptima en cada paso local con la esperanza de llegar a una solución general óptima. Este esquema algorítmico es el que menos dificultades plantea a la hora de diseñar y comprobar su funcionamiento. Normalmente se aplica a los problemas de optimización.
  7. 7.  El conjunto C de candidatos, entradas del problema. Función solución. Comprueba, en cada paso, si el subconjunto actual de candidatos elegidos forma una solución (no importa si es óptima o no lo es). Función de selección. Informa de cuál es el elemento más prometedor para completar la solución. Éste no puede haber sido escogido con anterioridad. Cada elemento es considerado una sola vez. Luego, puede ser rechazado o aceptado y pertenecerá a . Función de factibilidad. Informa si a partir de un conjunto se puede llegar a una solución. Lo aplicaremos al conjunto de seleccionados unido con el elemento más prometedor C/S. Función objetivo. Es aquella que queremos maximizar o minimizar, el núcleo del problema.
  8. 8.  En las ciencias de la computación, un algoritmo paralelo, en oposición a los algoritmos clásicos o algoritmos secuenciales, es un algoritmo que puede ser ejecutado por partes en el mismo instante de tiempo por varias unidades de procesamiento, para finalmente unir todas las partes y obtener el resultado correcto. Algunos algoritmos son fácilmente divisibles en partes; como por ejemplo, un algoritmo que calcule todos los números primos entre 1 y 100, donde se podría dividir los números originales en subconjuntos y calcular los primos para cada uno de los subconjuntos de los números originales; al final, uniríamos todos los resultados y tendríamos la solución final del algoritmo. Otro ejemplo, puede ser el cálculo de Pi en paralelo.
  9. 9.  Un algoritmo probabilista (o probabilístico) es un algoritmo que basa su resultado en la toma de algunas decisiones al azar, de tal forma que, en promedio, obtiene una buena solución al problema planteado para cualquier distribución de los datos de entrada. Es decir, al contrario que un algoritmo determinista, a partir de unos mismos datos se pueden obtener distintas soluciones y, en algunos casos, soluciones erróneas. Existen varios tipos de algoritmos probabilísticos dependiendo de su funcionamiento, pudiéndose distinguir: Algoritmos numéricos, que proporcionan una solución aproximada del problema. Algoritmos de Montecarlo, que pueden dar la respuesta correcta o respuesta erróneas (con probabilidad baja). Algoritmos de Las Vegas, que nunca dan una respuesta incorrecta: o bien dan la respuesta correcta o informan del fallo.
  10. 10.  Se puede optar por la elección aleatoria si se tiene un problema cuya elección óptima es demasiado costosa frente a la decisión aleatoria. Un algoritmo probabilista puede comportarse de distinta forma aplicando la misma entrada. A un algoritmo determinista nunca se le permite que no termine: hacer una división por 0, entrar en un bucle infinito, etc. Si existe más de una solución para unos datos dados, un algoritmo determinista siempre encuentra la misma solución (a no ser que se programe para encontrar varias o todas). Un algoritmo probabilista puede encontrar soluciones diferentes ejecutándose varias veces con los mismos datos. A un algoritmo determinista no se le permite que calcule una solución incorrecta para ningún dato. Un algoritmo probabilista puede equivocarse siempre que esto ocurra con una probabilidad pequeña para cada dato de entrada.
  11. 11.  Algoritmo de Montecarlo: A veces da una solución incorrecta. Con una alta probabilidad encuentra una solución correcta sea cual sea la entrada. Definición: Sea p un número real tal que 0.5<p<1.Un algoritmo de Montecarlo es p–correcto si: Devuelve una solución correcta con probabilidad mayor o igual que p, cualesquiera que sean los datos de entrada. A veces, p dependerá del tamaño de la entrada, pero nunca de los datos de la entrada en sí. Un ejemplo de algoritmo de Montecarlo (el más conocido): decidir si un número impar es primo o compuesto. Ningún algoritmo determinista conocido puede responder en un tiempo “razonable” si el número tiene cientos de cifras. La utilización de primos de cientos de cifras es fundamental en criptografía
  12. 12.  Un algoritmo de Las Vegas nunca da una solución falsa. Toma decisiones al azar para encontrar una solución antes que un algoritmo determinista. Si no encuentra solución lo admite. Hay dos tipos de algoritmos de Las Vegas, según la posibilidad de no encontrar una solución: Los que siempre encuentran una solución correcta, aunque las decisiones al azar no sean afortunadas y la eficiencia disminuya. Los que a veces, debido a decisiones desafortunadas, no encuentran una solución. Tipo a: Algoritmos de Sherwood Existe una solución determinista que es mucho más rápida en media que en el peor caso.
  13. 13.  Saltar a: navegación, búsqueda En ciencias de la computación, un algoritmo determinista es un algoritmo que, en términos informales, es completamente predictivo si se conocen sus entradas. Dicho de otra forma, si se conocen las entradas del algoritmo siempre producirá la misma salida, y la máquina interna pasará por la misma secuencia de estados. Este tipo de algoritmos ha sido el más estudiado durante la historia y por lo tanto resulta ser el tipo más familiar de los algoritmos, así como el más práctico ya que puede ejecutarse en las máquinas eficientemente. Un modelo simple de algoritmo determinista es la función matemática, pues esta extrae siempre la misma salida para una entrada dada. No obstante un algoritmo describe explícitamente cómo la salida se obtiene de la entrada, mientras que las funciones definen implícitamente su salida.
  14. 14.  En Ciencias de la computación, un algoritmo no determinístico es un algoritmo que con la misma entrada ofrece muchos posibles resultados. No se puede saber de antemano cuál será el resultado de la ejecución de un algoritmo no determinístico. En la teoría estándar de la computación la definición de algoritmo deja en claro que de por sí un algoritmo es determinístico. Sin embargo, los algoritmos no determinísticos emplean modelos de computación tales como la Máquina de Turing probabilística, que no son determinísticos. Se considera entonces que los algoritmos no determinísticos son un caso especial.
  15. 15.  Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas.. La descripción de un algoritmo usualmente se hace en tres niveles: 1.Descripción de alto nivel. Se establece el problema, se selecciona un modelo matemático y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles. 2.Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución. 3.Implementación. Se muestra el algoritmo expresado en un lenguaje de programación específico o algún objeto capaz de llevar a cabo instrucciones. También es posible incluir un teorema que demuestre que el algoritmo es correcto, un análisis de complejidad o ambos.
  16. 16. Los diagramas de flujo son descripciones gráficas dealgoritmos; usan símbolos conectados con flechas paraindicar la secuencia de instrucciones y están regidos porISO. Los diagramas de flujo son usados pararepresentar algoritmos pequeños, ya que abarcanmucho espacio y su construcción es laboriosa. Por sufacilidad de lectura son usados como introducción a losalgoritmos, descripción de un lenguaje y descripción deprocesos a personas ajenas a la computación. Los algoritmos pueden ser expresados de muchasmaneras, incluyendo al lenguaje natural, pseudocódigo,diagramas de flujo y lenguajes de programación entreotros. Las descripciones en lenguaje natural tienden aser ambiguas y extensas.
  17. 17.  El pseudocódigo (falso lenguaje, el prefijo pseudo significa falso) es una descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticas propias de lenguajes de programación, como asignaciones, ciclos y condicionales, aunque no está regido por ningún estándar. Es utilizado para describir algoritmos en libros y publicaciones científicas, y como producto intermedio durante el desarrollo de un algoritmo, como los |diagramas de flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos descritos en pseudocódigo requieren menos espacio para representar instrucciones complejas.El pseudocódigo está pensado para facilitar a las personas el entendimiento de un algoritmo, y por lo tanto puede omitir detalles irrelevantes que son necesarios en una implementación.
  18. 18.  La teoría de autómatas y la teoría de funciones recursivas proveen modelos matemáticos que formalizan el concepto de algoritmo. Los modelos más comunes son la máquina de Turing, máquina de registro y funciones μ- recursivas. Estos modelos son tan precisos como un lenguaje máquina, careciendo de expresiones coloquiales o ambigüedad, sin embargo se mantienen independientes de cualquier computadora y de cualquier implementación.
  19. 19.  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 eléctrico o un aparato mecánico y eléctrico. Algunos algoritmos inclusive se diseñan especialmente para implementarse usando lápiz y papel. El algoritmo de multiplicación tradicional, el algoritmo de Euclides, la criba de Eratóstenes y muchas formas de resolver la raíz cuadrada son sólo algunos ejemplos
  20. 20.  Círculo: Procedimiento estandarizado. Cuadrado: Proceso de control. Línea ininterrumpida: Flujo de información vía formulario o documentación en soporte de papel escrito. Línea interrumpida: Flujo de información vía formulario digital. Rectángulo: Formulario o documentación. Se grafica con un doble de ancho que su altura. Rectángulo Pequeño: Valor o medio de pago (cheque, pagaré, etcétera).Se grafica con un cuádruple de ancho que su altura, siendo su ancho igual al de los formularios. Triángulo (base inferior): Archivo definitivo. Triángulo Invertido (base superior): Archivo Transitorio. Semi-óvalo: Demora. Rombo: División entre opciones. Trapezoide: Carga de datos al sistema. Elipsoide: Acceso por pantalla. Hexágono: Proceso no representado. Pentágono: Conector. Cruz de Diagonales: Destrucción de Formularios
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×