La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Algoritmo. Algoritmo Algoritmo Al-Khowarizmi nunca pensó que su nombre, seria el origen de palabras mas importantes que el mismo: Álgebra. Logaritmo.

Presentaciones similares


Presentación del tema: "Algoritmo. Algoritmo Algoritmo Al-Khowarizmi nunca pensó que su nombre, seria el origen de palabras mas importantes que el mismo: Álgebra. Logaritmo."— Transcripción de la presentación:

1

2 Algoritmo

3 Algoritmo Al-Khowarizmi nunca pensó que su nombre, seria el origen de palabras mas importantes que el mismo: Álgebra. Logaritmo. Algoritmo.

4

5 Abu Ja’Far Mohammed lbn Musa al-Khowarizmi ( ), astronomo y matemático arabe. Era miembro de la “Casa de la sabiduria”, el cual era una academia de cientificos en Bagdad. El nombre al-Khowarizmi significa de la ciudad de Khowarizmi, que actualmente es llamada Khiva. Al-Khowarizmi escribió libros de matemáticas, astronomía y geografía. El álgebra fue introducida en Europa a través de sus trabajos. La palabra álgebra proviene del arabe al-jabr, el cual es parte del título de su libro Kitab al-jabr w’al muquabala. Este libro fue traducido al latin y fue usado por mucho tiempo. En su libro, sobre el uso de los numerales, Khowarizmi describe procedimiento para realizar las operaciones aritméticas. Los autores europeos usaron una adaptación latina de su nombre, hasta que finalmente llegaron a la palabra algoritmo.

6 Gracias a ese matemático árabe del siglo IX, hoy tenemos conocimiento de conceptos tan básicos.
Algoritmos y Estructuras de Datos forman el núcleo de la Ciencia de la Computación, siendo los componentes básicos de cualquier software. Por lo tanto, aprender algoritmos es importante para que quien desee desarrollar software de calidad.

7 ¿ Qué es el diseño de algoritmos 
Un algoritmo es una entidad matemática, independiente de un lenguaje de programación especifico, máquina o compilador. Diseñar algoritmos, en algún sentido, es todo acerca de la teoría matemática detrás del diseño de buenos programas. ¿ Porque se estudia diseño de algoritmos 

8 Los algoritmos son parte del día de las personas.
Instrucciones: para el uso de medicamentos medicinales. Indicaciones : de cómo montar un equipo de maquinaria. Establecer : un recorrido desde la casa a la universidad. Algoritmo es la sucesión de pasos ejecutables para obtener una solución para un determinado tipo de problema. Dijkstra: Un algoritmo corresponde a una descripción de un patrón de comportamiento, expresado en términos de un conjunto finito de acciones. Ejecutando la operación a + b, notamos un patrón de comportamiento.

9 Definiciones de algoritmo
Definición: Algoritmo es un conjunto finito de instrucciones precisas para ejecutar un proceso computacional. Un algoritmo es una herramienta para resolver un problema computacional bien especificado. Definiciones de algoritmo El diccionario Houaiss de la lengua portuguesa, 2001: Conjunto de reglas y procedimientos lógicos bien definidos que llevan a la solución de un problema en etapas. Diccionario Webster de la lengua inglesa:

10

11 Teoria de complejidad computacional
Bibliografía: Introductions to algorithms. Chapters 1, 2, 3 and 4. Thomas H. Cormen, Charles E. Leiserson and Ronald L. Rivest

12 Analizando algoritmos
El análisis de un algoritmo es para predecir los recursos que este requiere. Recursos como: Tiempo (complexity time). Memoria (complexity space). Comunicación (complexity communication).

13 Lo mas frecuente es la complejidad de tiempo (complexity time).
Generalmente, para un problema se analizan diversos algoritmos candidatos, esto permite identificar al mas eficiente. El análisis puede indicar mas de un candidato viable, pero en el proceso diversos algoritmos generalmente son descartados.

14 Analizar un algoritmo simple puede ser un descubrimiento. Pues
Como el comportamiento de un algoritmo puede ser diferente para cada entrada posible, entonces es necesario resumir el comportamiento en fórmulas fácilmente entendibles. Aunque, generalmente, se selecciona un solo modelo de máquina (para analizar un algoritmo); es posible enfrentarse a muchas opciones (decidir cómo expresar nuestro análisis). ¿Que modelo debo usar?

15 Algunos algoritmos presentan:
Complejidad de tiempo: O(n3C), donde C denota la capacidad máxima de cada arco en la red. O(n5). Complejidad de espacio: O(n2).

16 Análisis de algoritmos

17 Introducción Antes de analizar un algoritmo, primero se debe tener claro: Modelo computacional. Dominación asintótica. Análisis de algoritmos. Costo de un algoritmo. Función de complejidad de un algoritmo. Tamaño de la entrada de los datos. Clases de comportamiento asintótico. Jerarquía de las funciones. Casos de complejidad. Comparación de programas. Técnicas para el análisis de algoritmos.

18 1) Modelo computacional
Aquel que incluye los recursos que serán usados, además de los costos que implica su uso. RAM PRAM ¿Que modelo debo usar?

19 Modelo RAM: Las instrucciones son ejecutadas una después de la otra, con operaciones no concurrentes. X1 X Xn Cinta de entrada Programa . Memoria Acumulador Contador Cinta de salida y y yn

20 Modelo PRAM: Investigar modelos para computadores paralelos. Pp ... P2
Unidad de Control Pp ... Memoria Privada P2 P1 . . . Interconexión en Red Memoria Global

21 . Interconnection network Memoria distribuida: 1 p - Procesadores
1 Interconnection network p - Procesadores I/O paralela . Memorias

22

23

24

25 2) Dominación asintótica
El análisis de un algoritmo cuenta con algunas operaciones elementales. La medida de costo o medida de complejidad indica el crecimiento asintótico de la operación considerada.

26 Sean g(n) = (n+1)2 y f(n) = n2 . Entonces:
Definición: Una función f(n) domina asintóticamente a otra función g(n), si existen las constantes c, m  0 tal que, para n  m, se tiene |g(n)|  c.|f(n)| Sean g(n) = (n+1)2 y f(n) = n2 . Entonces: g(n) y f(n) se dominan asintoticamente, pues: |(n+1)2 |  4|n2|, para n  1. |n2|  |(n+1)2 | , para n  0.

27 Lo tengo asintoticamente dominado
Notación O f(n) = O(g(n)) expresa: Que g(n) domina asintóticamente a f(n). La notación O significa que g(n) es el límite superior para el crecimiento de f(n). O(g(n)) = {f(n) : n constantes positivas c y n0, tal que n  n0, tenemos 0  f(n)  cg(n) } Cualquier función lineal an + b esta en O(n2). ¿cómo? Mostar que 3n3 = O(n4) para un c y un n0 apropiado.

28 Cuando la notación O se usa para expresar el tiempo de ejecución de un algoritmo en el peor caso, entonces estaremos definiendo el limite superior del tiempo de ejecución de tal algoritmo para todas las entradas. Ejemplo: Algoritmo de ordenación por inserción es en el peor caso O(n2). Técnicamente es un abuso decir que el tiempo de ejecución del algoritmo de ordenación por inserción es O(n2), sin especificar de que caso se trata. El tiempo de ejecución de este algoritmo depende de cómo estén dados los datos de entrada. Si los datos de entrada ya estuviesen ordenados, entonces el algoritmo tiene un tiempo de ejecución de O(n) en el mejor caso

29 Al fin domino la situación
Notación  Al fin domino la situación Especifica un límite inferior para el crecimiento de g(n). (g(n)) = { f(n) :  constantes positivas c y n0, tal que n  n0, tenemos 0  cg(n)  f(n) } Para mostrar que f(n) = 3n3 + 2n2 es (n3), basta hacer c = 1. Entonces n3  3n3 + 2n2 , para n  0. f(n) es (n2), haciendo c = 1/10 y n = 0, 2, 4, . . .

30 Entonces f(n) es (n2), haciendo c = 1/10 y n = 0, 2, 4, . . .
Cuando la notación  se usa para expresar el tiempo de ejecución de un algoritmo en el mejor caso, entonces estaremos definiendo el limite inferior del tiempo de ejecución de tal algoritmo para todas las entradas. Ejemplos: El tiempo de ejecución del algoritmo de ordenación por inserción es, en el mejor caso es (n). Para mostrar que f(n) = 3n3 + 2n2 es (n3), basta hacer c = 1. Entonces n3  3n3 + 2n2 , para n  0. Sea Entonces f(n) es (n2), haciendo c = 1/10 y n = 0, 2, 4, . . .

31 Limites del algoritmo de ordenación por inserción
De acuerdo con las notaciones anteriores, notamos que el tiempo de ejecución del algoritmo esta entre (n) y O(n2).

32 Notación  Sea f(n) = n2/3 – 2n. Dq: f(n) = (n2)
Somos iguales Notación  (g(n)) = {f(n) :n constantes positivas c1, c2, y n0, tal que n  n0, donde 0  c1g(n)  f(n)  c2g(n) } Sea f(n) = n2/3 – 2n. Dq: f(n) = (n2) Debemos obtener c1, c2 y n0 tal que: c1n2  (1/3)n2 – 2n  c2n2,  n  n0 . Dividiendo tenemos: c1  1/3 – 2/n  c2,  n  n0 . Lado derecho de la desigualdad es válido  n  1, cuando se escoge c2  1/3. Escogiendo c1  1/21, el lado izquierdo de la desigualdad es válido  n  7. Luego, considerando c1 = 1/21; c2 = 1/3; m = 7 Tenemos que: n2/3 – 2n = (n2).

33 Ejemplo: Muestre que En efecto Por definición Dividiendo por :
Por tanto : se verifica para:

34 3) Análisis de algoritmos
Determinar las características de la performance del algoritmo. Tiempo. Memoria. Ancho de banda de la comunicación. ¿Porque analizar algoritmos? De todos los algoritmos que se tenga, elegir aquel que sea el mas eficiente para el mismo problema. ¿Es posible obtener el mejor tiempo de ejecución para un problema razonablemente finito ?.

35 3.1 Costo de un algoritmo Determinar el menor costo para resolver problemas de una clase dada. Cuando el Costo de un Algoritmo es igual al Menor Costo Posible, entonces el algoritmo es óptimo. Pueden existir varios algoritmos para resolver el mismo problema. Si la misma medida de costo se aplica a diferentes algoritmos, entonces se puede compararlos y escoger el mas adecuado.

36 Ejemplo: Ordenación selección. Ordenación inserción.
Ordenación Quicksort. Ordenación HeapSort.

37 3.2 Función de complejidad de un algoritmo
Para medir el costo de ejecución de un algoritmo: Se debe definir la función de costo o función de complejidad f. f(n) denota la medida del tiempo necesario para ejecutar un algoritmo para un problema de tamaño n. Función de complejidad de tiempo f(n): Mide el tiempo que es necesario para ejecutar un algoritmo en un problema de tamaño n. La complejidad de tiempo no representa directamente tiempo. Esta complejidad representa la cantidad de veces que una operación se ejecuta.

38 Función de Complejidad de Espacio f(n):
Mide la cantidad de memoria necesaria para ejecutar un algoritmo en un problema de tamaño n.

39 3.3 Tamaño de la entrada de los datos
La medida del costo de ejecución de un algoritmo depende del tamaño de la entrada de los datos. Es común considerar el tiempo de ejecución de un algoritmo, como una función. Para algunos algoritmos, el costo de ejecución es una función de la entrada particular de los datos. En la función Max, el costo es uniforme sobre todos los problemas de tamaño n. En un algoritmo de ordenación esto no ocurre: Si los datos de entrada ya estuviesen casi ordenados, entonces el algoritmo trabaja menos.

40 3.4 Clases de comportamiento asintótico
Complejidad constante: f(n) = O(1) El uso del algoritmo es independiente del tamaño de n. Las instrucciones del algoritmo son ejecutadas una cantidad fija de veces. Complejidad logarítmica: f(n) = O(log n) Se presenta, comúnmente, en algoritmos que resuelven un problema transformándolo en problemas menores. El tiempo de ejecución puede ser considerado como menor que una constante grande. Para n = 1000, log  10. Ejemplo: Busca binaria.

41 Complejidad lineal: f(n) = O(n)
Un pequeño trabajo se realiza sobre cada elemento de entrada. Esto es bueno para un algoritmo que tiene que procesar y/o producir n elementos de entrada y/o salida. Ejemplo: Busca secuencial, teste de la planaridad de un grafo. Complejidad lineal logaritmica: f(n) = O(nlog n) Ocurre en algoritmos que solucionan un problema dividiéndolo en subproblemas. Luego resuelve cada subproblema y finalmente agrupa las soluciones. Es común en algoritmos basados en el paradigma dividir para conquistar. Ejemplo: Ordenación MergeSort.

42 Complejidad cuadrática: f(n) = O(n2)
Ocurre en algoritmos que presentan anillos (loops) uno dentro del otro. Es útil en algoritmos que usan datos relativamente pequeño. Ejemplo: Ordenación por selección e inserción. Complejidad exponencial: f(n) = O(2n) No son útiles del punto de vista practico. Se presentan cuando en la solución de los problemas se usa la fuerza bruta. Ejemplo: Cartero viajante.

43 Complejidad factorial: f(n) = O(n!)
220 = Complejidad factorial: f(n) = O(n!) Su comportamiento es mucho peor que el caso exponencial. Se presentan cuando se usa la fuerza bruta en la solución del problema. 20! =

44 3.5 Jerarquía de funciones
Del punto de vista asintótico esta dado por: donde  y c son constantes arbitrarias con Resultados:


Descargar ppt "Algoritmo. Algoritmo Algoritmo Al-Khowarizmi nunca pensó que su nombre, seria el origen de palabras mas importantes que el mismo: Álgebra. Logaritmo."

Presentaciones similares


Anuncios Google