Análisis de algoritmos
|
|
|
- Veronica Ortíz Espejo
- hace 7 años
- Vistas:
Transcripción
1 Tema 03: Análisis temporal M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom 1
2 Contenido Caso de entrada Ejemplo 1 (Búsqueda lineal) Operación básica Ejemplo 2 (Producto de 2 mayores) Elección de la operación básica Concepto de Instancia Análisis Peor Caso, Mejor Caso y Caso Promedio Análisis Temporal (mejor, peor y caso medio) Retomando el Ejemplo 1 (Búsqueda lineal) Retomando el Ejemplo 2 (Producto de 2 mayores) 2
3 Caso de entrada Un caso de entrada para un algoritmo es una instancia del problema inicial. Un algoritmo para resolver un problema de tamaño n, puede recibir una o más entradas, las cuales pueden definir el número de operaciones que hará. Se puede determinar que tipos de operaciones utiliza y cuantas veces las ejecuta para una entrada especifica k. Por ejemplo realizar una búsqueda lineal del 40 en un arreglo de 100,000 elementos (n=100,000). Entrada k Algoritmo Problema de tamaño n 3
4 Ejemplo 1 (Búsqueda lineal) func BusquedaLineal(Valor,A,n) { i=1; while(i<=n&&a[i]!=valor) { i=i+1; } } return i; A= Si el ciclo se ejecutará k veces k sumas (una por cada iteración). k + 2 asignaciones (las del ciclo y las realizadas fuera del ciclo). k + 1 operaciones lógicas (la condición se debe probar k + 1 veces, la última es para saber que el ciclo no debe volver a ejecutarse). k + 1 comparaciones con el índice. k + 1 comparaciones con elementos de A: k + 1 accesos a elementos de A: 6k + 6 operaciones en total n=10 Caso 0: Valor=11, A={49,12,56,90,2,5,11,32,22,7}, n=10 Si el Valor=11 se entra al ciclo 6 veces k=6 4
5 Operaciones a ejecutar: 6k + 6 k=numero de veces que se entra al ciclo k Instrucciones 0 6 func BusquedaLineal(Valor,A,n) { i=1; while(i<=n&&a[i]!=valor) { i=i+1; } return i; }
6 Operación básica Del ejemplo notamos que el número de veces que se ejecutan algunas operaciones, para valores sucesivamente mayores que k y/o n; se presenta un modelo de crecimiento similar al que tiene el número total de operaciones que ejecuta. Para hacer una estimación de la cantidad de tiempo que tarda un algoritmo en ejecutarse, no es necesario contar el número total de operaciones que realiza. Se puede elegir alguna, a la que se identificará como operación básica que observe un comportamiento parecido al del número total de operaciones realizadas y que, por lo tanto, será proporcional al tiempo total de ejecución. 6
7 En general, debe procurarse que la operación básica, en la cual se basa el análisis, de alguna forma esté relacionada con el tipo de problema que se intenta resolver, ignorando las asignaciones de valores iniciales y las operaciones sobre variables para control de ciclos (índices). Pg. la operación básica en el Algoritmo 3 (búsqueda lineal) es la comparación entre los elementos del arreglo y el valor buscado. func BusquedaLineal(Valor,A,n) { i=1; while(i<=n&&a[i]!=valor) { i=i+1; } return i; } Operación básica Compración A[i]!=Valor n 7
8 Ejemplo 2 (Producto de 2 mayores) El algoritmo siguiente obtiene el producto de los dos valores más grandes contenidos en un arreglo A de n enteros func Producto2Mayores(A,n) if(a[1] > A[2]) mayor1 = A[1]; mayor2 = A[2]; else mayor1 = A[2]; mayor2 = A[1]; i = 3; while(i<=n) if(a[i] > mayor1) mayor2 = mayor1; mayor1 = A[i]; else if (A[i] > mayor2) mayor2 = A[i]; i = i + 1; return = mayor1 * mayor2; 8
9 En este algoritmo se realizan las siguientes operaciones: a) Comparación con los elementos del arreglo b) Asignaciones a mayor1 y mayor2 c) Asignación al índice i d) Asignación a la función e) Producto de los mayores f) Incremento al índice i g) Comparación entre el índice i y la longitud del arreglo n Las operaciones (c), (f) y (g) no se consideran por realizarse entre índices, las operaciones (d) y (e) se ejecutan una sola vez y no son proporcionales al número total de operaciones. Entonces, se tiene que las operaciones que se pueden considerar para hacer el análisis son: (a) Comparación con los elementos del arreglo y (b) las asignaciones a los elementos mayores. 9
10 (c), (f), (g), (d) y (e) pueden omitirse para el análisis (a) y (b) operaciones básicas del algoritmo func Producto2Mayores(A,n) if(a[1] > A[2]) mayor1 = A[1]; mayor2 = A[2]; else mayor1 = A[2]; mayor2 = A[1]; i = 3; while(i<=n) if(a[i] > mayor1) mayor2 = mayor1; mayor1 = A[i]; else if (A[i] > mayor2) mayor2 = A[i]; i = i + 1; return = mayor1 * mayor2; (d) (a) (b) (b) (b) (b) (c) (g) (a) (b) (b) (a) (b) (f) (e) 10
11 Elección de la operación básica El análisis de un algoritmo se puede hacer considerando sólo aquella operación que cumpla los siguientes criterios: a) Debe estar relacionada con el tipo de problema que se resuelve. b) Debe ejecutarse un número de veces cuyo modelo de crecimiento sea similar al del número total de operaciones que efectúa el algoritmo. Si ninguna de las operaciones encontradas cumple con ambos criterios, es posible declinar por el primero. Si aun así no es posible encontrar una operación representativa, se debe hacer un análisis global, contando todas las operaciones. 11
12 Elección de la operación básica para algunos problemas: Búsqueda de un elemento en un conjunto Comparación entre el valor y los elementos del conjunto Multiplicar dos matrices Producto de los elementos de las matrices Recorrer un árbol Visitar un nodo Resolver un sistema de ecuaciones lineales Suma y resta de las ecuaciones Ordenar un conjunto de valores Comparación entre valores 12
13 Concepto de Instancia Un problema computacional consiste en una caracterización de un conjunto de datos de entrada, junto con la especificación de la salida deseada con base a cada entrada. Un problema computacional tiene una o más instancias, que son valores particulares para los datos de entrada, sobre los cuales se puede ejecutar el algoritmo para resolver el problema; i.e. un caso específico de un problema. Ejemplo: el problema computacional de multiplicar dos números enteros tiene, las siguientes instancias: multiplicar 345 por 4653, multiplicar 2637 por 10000, multiplicar por 12, etc. 13
14 02 El rol de los algoritmos en la Computación Análisis Peor Caso, Mejor Caso y Caso Promedio El comportamiento de un algoritmo puede variar notablemente para diferentes instancias. Suelen estudiarse tres casos para un mismo algoritmo: caso mejor, caso peor, caso medio. Tipos de análisis: Peor caso: indica el mayor tiempo obtenido, teniendo en consideración todas las entradas posibles. Mejor caso: indica el menor tiempo obtenido, teniendo en consideración todas las entradas posibles. Caso medio: indica el tiempo medio obtenido, considerando todas las entradas posibles. 14
15 02 El rol de los algoritmos en la Computación Retomando el ejemplo 01: Búsqueda lineal Problema: Encontrar la posición de un determinado número en un arreglo desordenado. Cuales serían el peor caso, mejor caso y caso promedio? *Conclusión: Si se conociera la distribución de los datos, podemos sacar provecho de esto, para un mejor análisis y diseño del algoritmo. Por otra parte, sino conocemos la distribución, entonces lo mejor es considerar el peor de los casos. 15
16 Análisis Temporal (mejor, peor y caso medio) Con los conceptos anteriores es posible llevar a cabo el análisis temporal de un algoritmo i.e. calcular la función complejidad temporal ft(n). Considérese el Algoritmo del ejemplo 3 (Búsqueda lineal), para hacer el análisis de su comportamiento: Operación básica: Comparaciones con elementos del arreglo Caso muestra: A = [2, 7, 4, 1, 3] y n = 5: Si Valor = 2, se hace una comparación, f t (5) = 1 Si Valor = 4, se hacen tres comparaciones, f t (5) = 3 Si Valor = 8, se hacen cinco comparaciones, y f t (5) = n=5 func BusquedaLineal(Valor,A,n) { i=1; while(i<=n&&a[i]!=valor) { i=i+1; } return i; } 16
17 Del análisis anterior es posible descubrir que la función complejidad temporal no es tal, en realidad es una relación, ya que para un mismo tamaño de problema se obtienen distintos valores de la función complejidad. Para la mayoría de los algoritmos el número de operaciones depende, no sólo del tamaño del problema, sino también de la instancia específica que se presente (caso de entrada). func BusquedaLineal(Valor,A,n) { i=1; n while(i<=n&&a[i]!=valor) { Caso a: 1 comparación (Valor = 49) } } return i; i=i+1; Caso b: 2 comparaciones (Valor = 11) Caso c: 3 comparaciones (Valor = 23) Caso x: n+1 comparaciones. (Valor = 8) 17
18 Sea: I(n)={I 1, I 2, I 3,, I k } el conjunto de instancias del problema de tamaño n. O(n)={O 1, O 2, O 3,, O k } el conjunto formado por el número de operaciones que un algoritmo realiza para resolver cada instancia. Entonces, O j es el número de operaciones ejecutadas para resolver la instancia I j, para 1 j k. Se distinguen tres casos en el valor de la función complejidad temporal Peor caso f t (n) = máx ( { O 1, O 2, O 3,, O k } ) Mejor caso f t (n) = min( { O 1, O 2, O 3,, O k } ) k Caso medio f t (n) = σ i=1 O i P(i) 18 P(i) es la probabilidad de que ocurra la instancia I i
19 El mejor caso se presenta cuando para un caso de entrada I 1 a un problema de tamaño n; el algoritmo ejecuta el mínimo número posible de operaciones. El peor caso se presenta cuando para un caso de entrada I 2 a un problema de tamaño n; el algoritmo ejecuta el máximo número de operaciones. El caso medio se consideran todos los casos posibles para calcular el promedio de las operaciones que se hacen tomando en cuenta la probabilidad de que ocurra cada instancia I 3. 19
20 Retomando el Ejemplo 1 (Búsqueda lineal) Algoritmo: Búsqueda lineal Problema: Búsqueda lineal de un valor en un arreglo de tamaño n: Tamaño del Problema: n = número de elementos en el arreglo. Operación básica: Comparación del valor con los elementos del arreglo. Mejor caso 1 comparación (Ejemplo Buscar: Valor = 49) Peor caso n+1 comparaciones. (Ejemplo Buscar: Valor = 8) n func BusquedaLineal(Valor,A,n) { i=1; while(i<=n&&a[i]!=valor) { i=i+1; } return i; } 20
21 Análisis Temporal Mejor caso: ocurre cuando el valor es el primer elemento del arreglo. f t (n)= 1 (1 Comparación) Peor caso: sucede cuando el valor no se encuentra en el arreglo. Caso medio: f t (n)=n + 1 (n+1 Comparaciónes) f t (n)=1p(1) + 2P(2) + 3P(3) + 4P(4) np(n) + (n+1)p(n + 1) Donde P(i) es la probabilidad de que el valor se encuentre en la localidad i; (1 i n) y P(n + 1) es la probabilidad de que no esté en el arreglo y el número que lo acompaña es la cantidad de operaciones básicas para cada uno de ellos n
22 Si se supone que todos los casos son igualmente probables: Caso médio: Número de operaciones básicas por caso P i = 1 n + 1 Observación f t (n)=1p(1) + 2P(2) + 3P(3) + 4P(4) np(n) + (n+1)p(n + 1) n i=1 n(n + 1) i = 2 f t n n+1 = 1 n + 1 i=1 i = 1 n + 1 (n + 1)(n + 2) 2 = (n + 1)(n + 2) 2(n + 1) = n n+2 2 Comparaciones si la probabilidad de todos los casos es la misma 22
23 Retomando el Ejemplo 2 (Productos Mayores) Algoritmo: Producto mayores. Problema: Dado un arreglo de valores, encontrar el producto de los dos números mayores. Tamaño del Problema: n =número de elementos en el arreglo. Operación básica: Comparación con los elementos del arreglo y las asignaciones a los elementos mayores. func Producto2Mayores(A,n) if(a[1] > A[2]) mayor1 = A[1]; mayor2 = A[2]; else mayor1 = A[2]; mayor2 = A[1]; i = 3; while(i<=n) if(a[i] > mayor1) mayor2 = mayor1; mayor1 = A[i]; else if (A[i] > mayor2) mayor2 = A[i]; i = i + 1; 23 return = mayor1 * mayor2;
24 func Producto2Mayores(A,n) if(a[1] > A[2]) mayor1 = A[1]; mayor2 = A[2]; else mayor1 = A[2]; mayor2 = A[1]; i = 3; Primer comparación Asignacion Asignacion Asignacion Asignacion while(i<=n) if(a[i] > mayor1) mayor2 = mayor1; mayor1 = A[i]; else if (A[i] > mayor2) mayor2 = A[i]; i = i + 1; n-2 Comparaciones Asignacion Asignacion *Si A[i] mayor2 Asignacion return = mayor1 * mayor2; 24
25 Análisis Temporal Mejor caso: ocurre cuando el arreglo está ordenado descendentemente (se realiza la primer comparación y dos asignaciones, posteriormente solo se compara n-2 veces el if y n-2 veces el else if). Comparaciones 1+(n-2)+(n-2) 2 Asignaciones n f t (n)=1+(n-2)+(n-2)+2=3+2(n-2)=2n-1 func Producto2Mayores(A,n) if(a[1] > A[2]) else i = 3; mayor1 = A[1]; mayor2 = A[2]; mayor1 = A[2]; mayor2 = A[1]; f t (2)=2(2)-1=3 f t (3)=2(3)-1=5 f t (5)=2(5)-1=9 while(i<=n) if(a[i] > mayor1) mayor2 = mayor1; mayor1 = A[i]; else if (A[i] > mayor2) mayor2 = A[i]; i = i + 1; f t (10)=2(10)-1=19 f t (20)=2(20)-1=39 25 return = mayor1 * mayor2;
26 Peor caso: el arreglo está ordenado de manera ascendente (se realiza la primer comparación y dos asignaciones, posteriormente solo se compara n-2 veces el if y siempre se cumplirá por lo que hará 2(n-2) asignaciones. f t (n)=1+(n-2)+2(n-2)+2=3+3(n-2)=3n-3 Comparaciones 1+(n-2) Asignaciones 2+2(n-2) n func Producto2Mayores(A,n) if(a[1] > A[2]) else i = 3; mayor1 = A[1]; mayor2 = A[2]; mayor1 = A[2]; mayor2 = A[1]; f t (2)=3(2)-3=3 f t (3)=3(3)-3=6 f t (5)=3(5)-3=12 while(i<=n) if(a[i] > mayor1) mayor2 = mayor1; mayor1 = A[i]; else if (A[i] > mayor2) mayor2 = A[i]; i = i + 1; f t (10)=3(10)-3=27 f t (20)=3(20)-3=57 26 return = mayor1 * mayor2;
27 Caso medio: en este problema se tienen U n! casos, donde U es el n conjunto del que se extraen los elementos del arreglo. U Determina el número de posibles conjuntos de n elementos del n conjunto U. n! Determina el número de maneras de acomodar los n elementos Para hacer el cálculo se deben de contar las operaciones que se harían en cada caso. (Laborioso y complicado) El algoritmo hace siempre una comparación al inicio y dos asignaciones y en el interior del ciclo puede ser que se realice una comparación con dos asignaciones, dos comparaciones con una asignación o dos comparaciones y ninguna asignación; obsérvese que para cada A[i] puede ser cierta una de tres aseveraciones: A[i] > mayor1: Se hace una comparación y dos asignaciones A[i] mayor1 && A[i]>mayor2: Se hacen dos comparaciones y una asignación A[i] mayor1 && A[i] mayor2 : Se hacen dos comparaciones 27
28 Caso medio Si cada caso tiene la misma probabilidad de ocurrencia en promedio se harán: Caso: A[i] > mayor n n 2 = 1 (3 + 3 n 2 ) = 1 (3n 3) Caso: A[i] mayor1 && A[i]>mayor n 2 + n 2 = 1 (3 + 3 n 2 ) = 1 (3n 3) Caso: A[i] mayor1 && A[i] mayor n 2 + n 2 = 1 (3 + 2 n 2 ) = 1 (2n 1) Caso medio: f t n = n 3 + (2n 1) = 1 3 8n 7 8n 7 f t n = 3 f t (2)=3 f t (3)=5.6 f t (5)=11 f t (10)=24.3 operaciones básicas 28 f t (20)=51
29 Es importante mencionar que no todos los algoritmos presentan casos que hacen variar la complejidad temporal para un tamaño de problema especifico, y resulta interesante tener una herramienta de análisis para detectar cuándo se particionará el análisis en casos; por el momento la única ayuda con la que se cuenta es la intuición y preguntarse: Se puede resolver el problema de manera trivial para alguna instancia específica?. Si la respuesta es afirmativa el algoritmo tendrá casos, por lo que el problema de detección se reduce a contestar esta simple pregunta. 29
Análisis de algoritmos
Tema 02: Complejidad de los algoritmos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom 1 Contenido Algoritmo Algoritmo vs. Proceso Computacional
Complejidad computacional. Algoritmos y Estructuras de Datos I. Complejidad computacional. Notación O grande
Complejidad computacional Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Algoritmos - clase 10 Introducción a la complejidad computacional y
Tema 10: Árbol binario de búsqueda
Tema 10: Árbol binario de búsqueda M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Árbol binario de
Análisis de algoritmos
Tema 05: no recursivos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom 1 Contenido no recursivos La notación de Landau O La notación O Principio
Algoritmos y Complejidad
Algoritmos y Complejidad Introducción Pablo R. Fillottrani Depto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Primer Cuatrimestre 2017 Introducción Algoritmos y Algoritmia Problemas
Decrementa y vencerás II
Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 21 de febrero de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás II 21 de febrero de 2018 1 / 22 1 Decrementa y vencerás II Dr. Eduardo
Introducción. Algoritmos y Complejidad. Algoritmos y Algoritmia. Introducción. Problemas e instancias. Pablo R. Fillottrani
Introducción Introducción Pablo R. Fillottrani Depto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Algoritmos y Algoritmia Problemas e instancias Primer Cuatrimestre 2014 Algoritmos
Notación Asintótica 2
Notación Asintótica 2 mat-151 1 Éxamen Rápido (6 minutos) Cada operación fundamental usa c milisegundos, cuánto tiempo toma contar hasta 1,000,000? Cuál es el valor de N? Cuál es el órden de complejidad
Análisis de algoritmos
Tema 08: Divide y vencerás (DyV) M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom 1 Contenido Introducción Divide y vencerás Observaciones
Tema 06: Recursividad
Tema 06: Recursividad M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Recursión Recursividad Programación
Ejercicios 01: Diagramas de flujo y pseudocódigo
Ejercicios 01: Diagramas de flujo y pseudocódigo M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A.
Ejercicios: Programación en C
M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Ejercicios: Programar en C Realizar el
Tema 05: Tablas hash. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom
Tema 05: Tablas hash M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Función
Análisis de algoritmos
M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom 1 1. Encuentre el orden O de complejidad temporal y espacial del algoritmo de ordenamiento
Multiplicación de matrices simétricas
Multiplicación de matrices simétricas La traspuesta de una matriz A n n es definida como una matriz A T n n tal que A T [i, j] =A[j, i] paracadai, j 2{1,...,n} Además, una matriz A es simétrica si A =
Tema 06: Estructuras y sentencias de control en C
Tema 06: Estructuras y sentencias de control en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A.
Diseño de algoritmos
Diseño de algoritmos Jesús Bermúdez de Andrés. UPV-EHU Guías para la solución de ejercicios: Análisis de algoritmos Curso 2008-09 1. Con un algoritmo de función de coste temporal f(n) = n 3 resolvemos
Tema 03: TAD Cola. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom
Tema 03: TAD Cola M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Descripción del TAD Cola Especificación
Introducción y Comportamiento Asintótico
Introducción y Comportamiento Asintótico M. Andrea Rodríguez-Tastets Ayudante: Erick Elejalde Universidad de Concepción,Chile www.inf.udec.cl\ andrea [email protected] I Semestre - 2014 1/64 Problemas and
Tema 07: Programación estructurada en C
Tema 07: Programación estructurada en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1
Análisis de algoritmos
Tema 10: Algoritmos de empate de cadenas M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom 1 Contenido Introducción Empate de cadenas Fuerza
Análisis matemático de algoritmos recursivos
Análisis matemático de algoritmos recursivos Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 24 de enero de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Análisis matemático de algoritmos 24 de enero de
IN34A - Optimización
IN34A - Optimización Complejidad Leonardo López H. [email protected] Primavera 2008 1 / 33 Contenidos Problemas y Procedimientos de solución Problemas de optimización v/s problemas de decisión Métodos,
Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos
Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos 1! 1. Algoritmos recursivos " 1.1 Algoritmos recursivos. Recursión simple " 1.2 Algoritmos con vuelta atrás y ejemplos! 2. Complejidad de
Tema 02: Algoritmia y pseudocódigo
M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Pseudocódigo Ejemplo 01 Ejemplo
Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos
Estructura de Datos y Algoritmos Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos 1. Algorimos de ordenación Discutiremos el problema de ordenar un array de elementos. A los efectos de simplificar
Algoritmos de Búsqueda y Ordenamiento
Departamento de Informática Universidad Técnica Federico Santa María Algoritmos de Búsqueda y Ordenamiento Programación de Computadores IWI--p Prof.: Teddy Alfaro Olave Algoritmos de Búsqueda Los procesos
Tema 3. Análisis de costes
Tema 3. Análisis de costes http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la información
NOTACIÓN O GRANDE. El análisis de algoritmos estima el consumo de recursos de un algoritmo.
NOTACIÓN O GRANDE El análisis de algoritmos estima el consumo de recursos de un algoritmo. Esto nos permite comparar los costos relativos de dos o más algoritmos para resolver el mismo problema. El análisis
Tema 20: La importancia de realizar pruebas
Departamento de Ciencias e Ingeniería de la Computación Academia de Ciencias de la Computación Tema 20: La importancia de realizar pruebas M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com
Análisis de algoritmos
Tema 11: Algoritmos de empate de cadenas M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom 1 Contenido Introducción Empate de cadenas Fuerza
Porque usar Arreglos?
Arreglos Porque usar Arreglos? Se tienen las calificaciones de 100 alumnos, como sacar cuantos alumnos tienen una calificación superior al promedio? Doble lectura: Un ciclo para leer y acumular las calificaciones,
Ordenamiento de un arreglo. Algoritmos y Estructuras de Datos I. Demostración. Cota inferior de complejidad tiempo para sorting
Ordenamiento de un arreglo Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Algoritmos - clase 12 Algoritmos de ordenamiento, segunda parte Tenemos
Métodos de Ordenamiento. Unidad VI: Estructura de datos
Métodos de Ordenamiento Unidad VI: Estructura de datos Concepto de ordenación La ordenación de los datos consiste en disponer o clasificar un conjunto de datos (o una estructura) en algún determinado orden
Análisis y Diseño de Algoritmos. Complejidad Computacional
Análisis y Diseño de Algoritmos Complejidad Computacional Multiplicación Método Tradicional Método Russé Método Particiones Complejidad Computacional Tan pronto como una máquina análitica exista, será
Divide-y-vencerás, backtracking y programación dinámica
Divide-y-vencerás, backtracking y programación dinámica Diseño y Análisis de Algoritmos Cátedra de Programación Carrera de Ingeniería de Sistemas Prof. Isabel Besembel Carrera Noviembre, 2012 Prof. Isabel
Tema 9. Recursividad
Tema 9. Recursividad http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, [email protected] Estructuras de datos y de la información Universitat
Introducción a la Algorítmica Transparencias correspondientes a las clases impartidas por los profesores: Lourdes Miró Amarante Ignacio García Vargas
Dpto. de ATC - Página 1 de 16 CONCEPTO DE ALGORITMO (1) Fundamentos de Informática E.U.P. Universidad de Sevilla Introducción a la Algorítmica Transparencias correspondientes a las clases impartidas por
Ordenamiento (Sorting)
Ordenamiento (Sorting) El problema del ordenamiento Ordenar: arreglo[α] arreglo[α], donde α es un tipo tal que está definida la relación < α Uno de los problemas más clásicos, útiles y estudiados de la
Arreglos. Algoritmos y Estructuras de Datos I. Arreglos en C++ Arreglos y listas
Arreglos Algoritmos y Estructuras de Datos I Primer cuatrimestre 2007 Teórica de imperativo 3 Algoritmos de búsqueda secuencias de una cantidad fija de variables del mismo tipo se declaran con un nombre,,
Conceptos Fundamentales del Análisis de Algoritmos
Conceptos Fundamentales del Análisis de Algoritmos Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 15 de enero de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis 15 de
Análisis de algoritmos
Practica 0 : Análisis temporal y notación de orden (Algoritmos de búsqueda) M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Practica 0 :
Metodología de la Programación II. Recursividad
Metodología de la Programación II Recursividad Objetivos Entender el concepto de recursividad. Conocer los fundamentos del diseño de algoritmos recursivos. Comprender la ejecución de algoritmos recursivos.
Tema 09: TAD Árbol binario
Tema 09: TAD Árbol binario M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Introducción El árbol binario
Estructura de datos y Algoritmos. Tema III Clasificación en memoria secundaria
Estructura de datos y Algoritmos Tema III Clasificación en memoria secundaria 3.1. Clasificación externa basada en mezcla 3.1.1. Mezcla directa. 3.1.2. Mezcla natural. 3.1.3. Mezcla balanceada múltiple.
Análisis de algoritmos
Tema 04: Notación asintótica M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom 1 Contenido Introducción Asíntota Dominio asintótico Ejemplo
Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera
Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera RECURSIÓN La recursión es una técnica fundamental en el diseño de algoritmos, que está basada en la solución de versiones más pequeñas del
Temario. Tipos de recursión. Eficiencia y recursión
RECURSION Temario Tipos de recursión Eficiencia y recursión Tipos de RECURSION Según desde donde se realice el llamado recursivo: Directa: la función se llama a sí misma. Indirecta: la función A llama
Tema 08: TAD Árbol. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom
Tema 08: TAD Árbol M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Descripción del TAD Árbol Especificación
Métodos de ordenamiento:
Métodos de ordenamiento: 0) Intercambio: a) Idea: El algoritmo de intercambio aunque es el más sencillo de implementar es uno de los más ineficientes en rendimiento. Se basa en la idea de buscar cada vez
Practica 04: Soluciones Recursivas
M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Problema Descripción Observaciones
Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero
Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 4: Ordenación Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Elección de un método Métodos directos
Algoritmos en Árbol y Grafo Computación Pipeline
Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Algoritmos en Árbol y Grafo Computación Pipeline Domingo Giménez (Universidad
Complejidad computacional y asintótica
Complejidad computacional y asintótica Complejidad computacional Indica el esfuerzo que hay que realizar para aplicar un algoritmo y lo costoso que éste resulta. La eficiencia suele medirse en términos
ESTIMACIÓN DE TIEMPO Y COSTO DE PRODUCTOS SOFTWARE
Análisis y costo de algoritmos Algoritmos Un algoritmo es un conjunto de pasos claramente definidos que a partir de un cierta entrada (input) produce una determinada salida (output) Algoritmos y programas
Algoritmos de fuerza bruta
Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 29 de enero de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 1 / 26 1 Algoritmos de fuerza bruta Introducción
Métodos de ordenamiento:
Métodos de ordenamiento: 0) Intercambio: a) Idea: El algoritmo de intercambio aunque es el más sencillo de implementar es uno de los más ineficientes en rendimiento. Se basa en la idea de buscar cada vez
Algorítmica y Lenguajes de Programación. Eficiencia y notación asintótica (i)
Algorítmica y Lenguajes de Programación Eficiencia y notación asintótica (i) Eficiencia y notación asintótica. Introducción Para resolver un problema pueden existir varios algoritmos. Por tanto, es lógico
Complejidad de Algoritmos
Complejidad de Algoritmos Tema 5 Introducción Un algoritmo es una secuencia de instrucciones que resuelve un problema Puede tener diferentes implementaciones Para comparar las diferentes formas (algoritmos)
Introducción al Análisis del Coste de Algoritmos
1/11 Introducción al Análisis del Coste de Algoritmos Josefina Sierra Santibáñez 7 de noviembre de 2017 2/11 Eficiencia de un Algoritmo Analizar un algoritmo significa, en el contexto de este curso, predecir
Análisis de algoritmos
Tema 13: Completitud NP M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom 1 Contenido Introducción P y NP La clase P (Polinómicamente acotado)
ANÁLISIS Y DISEÑO DE ALGORITMOS
ANÁLISIS Y DISEÑO DE ALGORITMOS CURSO 2005/2006 BOLETÍN DE PROBLEMAS: DIVIDE Y VENCERÁS Ejercicio 1 Dado un vector ordenado y rotado k veces: diseñar un algoritmo O(log n) que encuentre el elemento mayor
Análisis y Diseño de Algoritmos
Análisis y Diseño de Algoritmos Introducción: El Rol de los Algoritmos en Computación DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Temario 2 1. Introducción 2. Notación Asintótica 3. Recurrencias
259. El número de combinaciones de m objetos entre un conjunto de n, denotado por n, para n 1 y 0 m n, se puede definir recursivamente por: m
258. Aplicar el algoritmo de programación dinámica para el problema del cambio de monedas sobre el siguiente ejemplo: n = 3, P = 9, c = (1, 3, 4). Qué ocurre si multiplicamos P y c por un valor constante,
Generación de variables aleatorias discretas Método de la Transformada Inversa
Generación de variables aleatorias discretas Método de la Transformada Inversa Georgina Flesia FaMAF 9 de abril, 2013 Generación de v.a. discretas Existen diversos métodos para generar v.a. discretas:
Estructuras de Datos y Algoritmos
Estructuras de Datos y Algoritmos Práctico 2: Evaluación de Algoritmos (Finalización: 03/09) Ingeniería en Computación - Ingeniería en Informática Año 2015 Ejercicio 1: Dados los siguientes vectores, correspondientes
La Máquina de Acceso Aleatorio (Random Access Machine)
La Máquina de Acceso Aleatorio (Random Access Machine) Nuestro modelo de cómputo secuencial es la máquina de acceso aleatorio (RAM, Random Access Machine) mostrada en la Figura 2.1, y que consiste de:
Practica 03: Eliminación Gaussiana
M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Introducción Ecuaciones lineales
Estructuras de Control
Algorítmica y Lenguajes de Programación Estructuras de Control Estructuras de Control. Introducción Hasta ahora algoritmos han consistido en simples secuencias de instrucciones Existen tareas más complejas
Universidad Autónoma del Estado de México Facultad de Medicina
Universidad Autónoma del Estado de México Facultad de Medicina Licenciatura en Bioingeniería Médica Unidad de Aprendizaje: Algoritmos y programación básica Unidad 3: Estructuras de control de flujo en
Estructuras de Control Selección o Decisión
Estructuras de Control Selección o Decisión Corina Flores Villarroel UMSS 1 Introducción Al ser un algoritmo una secuencia de pasos ordenados, estos deben seguir una trayectoria para su ejecución desde
Estructura de Datos. Complejidad de Algoritmos. Algoritmo. Algoritmo. Mauricio Solar Lorna Figueroa
Estructura de Datos Complejidad de Algoritmos Mauricio Solar Lorna Figueroa 2010 1 Algoritmo Definición: Un algoritmo es un conjunto finito de instrucciones que sirven para resolver un problema si fueron
Análisis de algoritmos
Tema 09: Programación dinámica Solicitado: Ejercicios 06: Programación dinámica de Fibonacci y Coeficientes Binomiales M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom
5. ESTRUCTURAS DE REPETICIÓN
5. ESTRUCTURAS DE REPETICIÓN Las estructuras de repetición, permiten la ejecución de una lista o secuencia de instrucciones () en varias ocasiones. El número de veces que el bloque
Recursividad. Dept. Ciencias de la Computación e I.A. Universidad de Granada
TEMA Recursividad Dept. Ciencias de la Computación e I.A. Universidad de Granada Índice Introducción a la recursión Recursividad frente a iteración Eficiencia de los algoritmos recursivos Ejemplos y ejercicios
Programación Estructurada. Sesión 3:Estructras de control
Programación Estructurada Sesión 3:Estructras de control Contextualización En esta sesión comenzaremos con las Estructuras de control, las cuales brindan opciones de ejecución o decisión dentro de la elaboración
Tema 03: Programación estructurada
Tema 03: Programación estructurada M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido
Versión Iterativa de recuperar en un. Ejercicios Tema 11. Implementa una versión del método recuperar iterativa con la siguiente especificación:
Versión Iterativa de recuperar en un ABB Ejercicios Tema 11 Ejercicios Adaptados de Apuntes y Exámenes de EDA Germán Moltó Martínez [email protected] Estructuras de Datos y Algoritmos Escuela Técnica
Programación (PRG) PRÁCTICA 10. Algoritmos de búsqueda
Programación (PRG) Facultad de Informática Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia 1. Introducción El objetivo de esta práctica es estudiar el comportamiento
Análisis de algoritmos
Tema 10: Algoritmos ávidos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom 1 Contenido Introducción Algoritmos ávidos Forma general de un
Tema 08: Convertidor Digital Analógico
Tema 08: Convertidor Digital Analógico M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom 1 Contenido Introducción Tipos de señales Convertidor
Tema 7: Problemas clásicos de Programación Lineal
Tema 7: Problemas clásicos de Programación Lineal 1.- Características generales de un problema de transporte y asignación Surgen con frecuencia en diferentes contextos de la vida real. Requieren un número
Generación de variables aleatorias discretas Método de la Transformada Inversa
Generación de variables aleatorias discretas Método de la Transformada Inversa Patricia Kisbye FaMAF 30 de marzo, 2010 Generación de v.a. discretas Existen diversos métodos para generar v.a. discretas:
Análisis de Algoritmos
Análisis de Algoritmos Amalia Duch Barcelona, marzo de 2007 Índice 1. Costes en tiempo y en espacio 1 2. Coste en los casos mejor, promedio y peor 3 3. Notación asintótica 4 4. Coste de los algoritmos
RECURSIVIDAD. Prof. Ing. M.Sc. Fulbia Torres
ESTRUCTURAS DE DATOS 2006 Prof. UNIDAD II ESTRUCTURAS DE DATOS RECURSIVIDAD Definición. Estado base. Estado general. Ejemplos. Ejercicios. DEFINICIÓN Es una técnica de programación muy potente que permite
