Análisis de Algoritmos
|
|
|
- Ana Poblete Sáez
- hace 9 años
- Vistas:
Transcripción
1 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 iterativos 6 5. Coste de los algoritmos recursivos, teoremas maestros 6 1. Costes en tiempo y en espacio La característica básica que debe tener un algoritmo es que sea correcto, es decir, que produzca el resultado deseado en tiempo finito. Adicionalmente puede interesarnos que sea claro, que esté bien estructurado, que sea fácil de usar, que sea fácil de implementar y que sea eficiente. Entendemos por eficiencia de un algoritmo la cantidad de recursos de cómputo que requiere; es decir, cuál es su tiempo de ejecución y qué cantidad de memoria utiliza. A la cantidad de tiempo que requiere la ejecución de un cierto algoritmo se le suele llamar coste en tiempo mientras que a la cantidad de memoria que requiere se le suele llamar coste en espacio. Es evidente que conviene buscar algoritmos correctos que mantengan tan bajo como sea posible el consumo de recursos que hacen del sistema, es decir, que sean lo más eficientes posible. Cabe hacer notar que el concepto de eficiencia de un algoritmo es un concepto relativo, esto quiere decir que ante dos algoritmos correctos que resuelven el mismo problema, uno es más eficiente que otro si consume menos recursos. Por tanto, podemos observar que el concepto de eficiencia y en consecuencia el concepto de coste nos permitirá comparar distintos algoritmos entre ellos. Si consideramos los algoritmos elementales de ordenación por selección y por inserción cómo podríamos elegir cuál de ellos utilizar en una aplicación dada? 1
2 Veremos más adelante que para efectos prácticos ambos algoritmos son similares y que son eficientes sólo para ordenar secuencias con un número pequeño de elementos. Sin embargo hay varias comparaciones que se pueden hacer entre ellos. Tamaño del vector Num. Comparaciones Num. Intercambios Selección n n(n 1)/2 0 (min.) n 1 (max.) n 1 (min.) 0 (min.) Inserción n prop. n 2 /4 (prom.) prop. n 2 /4 (prom.) prop. n 2 /2 (max.) prop. n 2 /2 De la tabla anterior podemos inferir que para ordenar secuencias cuyos elementos sean difíciles de comparar (las comparaciones son caras) es más conveniente utilizar el método de ordenación por inserción, y que este método es más eficiente mientras más ordenada esté la secuencia de entrada. Si por el contrario queremos ordenar secuencias de elementos que son fáciles de comparar (o que tienen claves asociadas fáciles de comparar) y en cambio los intercambios son caros sería más conveniente utilizar el algoritmo de ordenación por selección. En general, cómo podemos elegir entre un algoritmo y otro si ambos resuelven el mismo problema? Una posibilidad es hacerlo mediante pruebas empíricas. En este caso habría que traducir ambos algoritmos a un lenguaje de programación, realizar medidas del tiempo de ejecución de los programas cuando se aplican a un conjunto de muestras de entrada y a partir de estas medidas intentar inferir el rendimiento de los programas. Pero este método tiene varios inconvenientes ya que los resultados dependen: del subconjunto de pruebas escogidas del ordenador en el que se realicen las pruebas del lenguaje de programación utilizado o del compilador, entre otros factores. Además, no siempre es fácil implementar un algoritmo (algunos pueden ser muy largos o complicados), por tanto, en muchas ocasiones puede ser muy útil poder predecir cómo va a comportarse un algoritmo sin tenerlo que implementar. Para ello es conveniente analizar un algoritmo matemáticamente. Ejemplo. Análisis de la función pos min, que encuentra la posición del elemento mínimo en un vector de enteros. El coste en tiempo de un algoritmo depende del tipo de operaciones que realiza y del coste especiífico de estas operaciones. Este coste suele calcularse 2
3 únicamente en función del tamaño de las entradas para que sea independiente del tipo de máquina, lenguaje de programación, compilador, etc. en que se implementa el algoritmo. Definición 1.1 Dado un algoritmo A cuyo conjunto de entradas es A, su eficiencia o coste (en tiempo, en espacio, en número de operaciones de entrada/salida, etc.) es una función T tal que: T : A R + α T (α) 2. Coste en los casos mejor, promedio y peor Utilizando la definición anterior caracterizar a la función T puede ser complicado. Por ello se definen tres funciones que dependen exclusivamente del tamaño de las entradas y describen resumidamente las características de la función T. Definición 2.1 Sea A n el conjunto de las entradas de tamaño n y T n : A n R la función T restringida a A n. Los costes en caso mejor, promedio y peor se definen como sigue: Coste en caso mejor : T mejor (n) = mín{t n (α) α A n } Coste en caso promedio : T prom (n) = α A n P r(α).t n (α), donde P r(α) es la probabilidad de ocurrencia de la entrada α. Coste en caso peor : T peor (n) = máx{t n (α) α A n } Por lo general en este curso estudiaremos el coste en caso peor de los algoritmos por dos razones: 1. Proporciona garantías sobre el coste del algoritmo ya que en ningún caso excederá el coste en caso peor. 2. Es más fácil de calcular que el coste en el caso promedio. Una característica esencial del coste de un algoritmo en cualquiera de los casos descritos anteriormente es su tasa de crecimiento o dicho de otra manera su orden de magnitud. La tasa de crecimiento de una función marca una diferencia importante con las funciones que tengan un tasa de crecimiento distinta. Ejemplos. Tablas y curvas de diversas funciones que aparecen frecuentemente en el análisis de algoritmos. A partir de los ejemplos anteriores puede observarse la conveniencia de omitir los factores constantes, ya que son poco relevantes para comparar tasas de crecimiento (una función cuadrática superará a una lineal más tarde o más temprano). Por este motivo se introduce la notación asintótica. 3
4 3. Notación asintótica En este curso veremos tres clases diferentes de funciones que son: O, Ω y Θ. Definición 3.1 Dada una función f : N R + la clase O (f) (que se lee o grande de f) se define por: O (f) = {g : N R + c R +, n 0 N : n n 0, g(n) cf(n)} Intuitivamente, la definición anterior refleja el hecho de que el crecimiento asintótico de las funciones g es como mucho proporcional al de la función f. Informalmente puede decirse que la tasa de crecimiento de la función f es una cota superior para las tasas de crecimiento de las funciones g. Ejemplos y ejercicios. Abuso de notación. Aunque O (f) es una clase de funciones por tradición se escribe g = O (f) en vez de g O (f). Cabe observar que escribir O (f) = g no tiene sentido. Propiedades básicas de la notación O g(n) 1. Si lím n f(n) < entonces g = O (f). 2. f : N R +, f = O (f) (reflexividad). 3. Si f = O (g) y g = O (h) entonces f = O (h) (transitividad). 4. c > 0, O (f) = O (cf). La úlltima propiedad justifica la preferencia por omitir factores constantes. En el caso de la función log se omite la base porque log c (x) = log b (x) log b (c). Definición 3.2 Dada una función f : N R + la clase Ω(f) (que se lee omega de f) se define por: Ω(f) = {g : N R + c R +, n 0 N : n n 0, g(n) cf(n)} Intuitivamente, la definición anterior refleja el hecho de que el crecimiento asintótico de las funciones g es más rápido que el de la función f. Informalmente la tasa de crecimiento de la función f puede verse en este caso como una cota inferior para las tasas de crecimiento de las funciones g. Ejemplos y ejercicios. 4
5 Propiedades básicas de la notación Ω g(n) 1. Si lím n f(n) > 0 entonces g = Ω(f). 2. f : N R +, f = Ω(f) (reflexividad). 3. Si f = Ω(g) y g = Ω(h) entonces f = Ω(h) (transitividad). 4. Si f = O (g) entonces g = Ω(f) y viceversa. Definición 3.3 Dada una función f : N R + la clase Θ(f) = O (f) Ω(f) (esta clase se lee zita de f). Intuitivamente, la definición anterior refleja el hecho de que el crecimiento asintótico de las funciones g es similar al de la función f. Ejemplos y ejercicios. Propiedades básicas de la notación Θ 1. f : N R +, f = Θ(f) (reflexividad). 2. Si f = Θ(g) y g = Θ(h) entonces f = Θ(h) (transitividad). 3. f = Θ(g) g = Θ(f) (simetría). g(n) 4. Si lim n f(n) = c, 0 < c <, entonces g = Θ(f). Otras propiedades de las notaciones asintóticas 1. Para cualesquiera constantes positivas α < β, si f es una función creciente entonces O (f α ) O (f β ). 2. Para cualesquiera constantes a y b mayores que cero, si f es una función creciente entonces O (log f a ) O (f b ). 3. Para cualquier constante c > 0, si f es una función creciente, O (f) O (c f ). Reglas útiles Regla de las sumas: Regla del producto:: Θ(f) + Θ(g) = Θ(f + g) = Θ(máx{f, g}). Θ(f)Θ(g) = Θ(f g). 5
6 4. Coste de los algoritmos iterativos Las siguientes reglas facilitan el cálculo o el análisis del coste de los algoritmos iterativos en el caso peor. 1. El coste de una operación elemental es Θ(1). 2. Si el coste de un fragmento F 1 es f 1 y el de un fragmento F 2 es f 2 entonces el coste en caso peor del fragmento: F 1 ; F 2 es: f 1 + f 2 3. Si el coste de F 1 es f 1 y el de F 2 es f 2 y el de evaluar B es g entonces el coste en caso peor del fragmento: if(b) F 1 ; else F 2 es: g + máx{f 1, f 2 } 4. Si el coste de F durante la i-ésima iteración es f i y el coste de evaluar B es g i y el número de iteraciones es h, entonces el coste en le caso peor del fragmento: es: while (B) F ; h(n) T (n) = f i (n) + g i (n) i=0 Si f = máx{f i + g i } entonces T = O (hf). 5. Coste de los algoritmos recursivos, teoremas maestros El coste T (n) (en caso peor, medio o mejor) de un algoritmo recursivo, satisface una ecuación recurrente. Esto quiere decir que T (n) dependerá del valor de T para valores más pequeños de n. Con frecuencia la recurrencia adopta una de las formas siguientes: 1. T (n) = at (n c) + g(n), con a y c constantes tales que a > 0 y c > 1. 6
7 2. T (n) = at (n/b) + g(n), con a y b constantes tales que a > 0 y b > 1. La primera recurrencia (llamada recurrencia sustractora) corresponde a algoritmos que tienen una parte no recursiva con coste g(n) y hacen a llamadas recursivas con problemas de tamaño n c. La segunda (llamada recurrencia divisora) corresponde a algoritmos que tienen una parte no recursiva con coste g(n) y hacen a llamadas recursivas con subproblemas de tamaño aproximado n/b. Los siguientes teoremas (llamados teoremas maestros) proporcionan un mecanismo para calcular el coste de algoritmos recursivos que se expresen mediante recurrencias sustractoras o divisoras respectivamente. Teorema 5.1 Sea T (n) el coste (en el caso peor, medio o mejor) de un algoritmo recursivo que satisface la recurrencia: { f(n) si 0 n < n0 T (n) = at (n c) + g(n) si n n 0 donde n 0 es un número natural, c 1 es una constante, f(n) es una función arbitraria y g(n) = Θ(n k ) para una constante k 0, entonces: Θ(n k ) si a < 1 T (n) = Θ(n k+1 ) si a = 1 Θ(a n/c ) si a > 1 Teorema 5.2 Sea T (n) el coste (en el caso peor, medio o mejor) de un algoritmo recursivo que satisface la recurrencia: { f(n) si 0 n < n0 T (n) = at (n/b) + g(n) si n n 0 donde n 0 es un número natural, b > 1 es una constante, f(n) es una función arbitraria y g(n) = Θ(n k ) para una constante k 0. Sea α = log b (a). Entonces: Θ(n k ) si α < k T (n) = Θ(n k log n) si α = k Θ(n α ) si α > k 7
Análisis y Diseño de Algoritmos
Análisis y Diseño de Algoritmos Notación Asintótica DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Introducción Por qué el análisis de algoritmos? Determinar tiempos de respuesta (runtime)
La eficiencia de los programas
La eficiencia de los programas Jordi Linares Pellicer EPSA-DSIC Índice General 1 Introducción... 2 2 El coste temporal y espacial de los programas... 2 2.1 El coste temporal medido en función de tiempos
Esquema de Dividir y Vencer
Esquema de Dividir y Vencer Amalia Duch Barcelona, marzo de 2006 Índice 1. Esquema general 1 2. Búsqueda binaria (binary search) 2 3. Ordenación por fusión (merge sort) 2 4. Ordenación rápida (quick sort)
Tema 01: Fundamentos del Análisis Asintótico de Algoritmos
Tema 01: Fundamentos del Análisis Asintótico de Algoritmos Noviembre, 2003 CS0218: Algoritmos y Programación II Introducción En Ciencias de la Computación se presenta con frecuencia la situación de analizar
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
Tiempo de Ejecución. Midiendo el Tiempo de Ejecución
Tiempo de Ejecución Arturo Díaz Pérez Sección de Computación Departamento de Ingeniería Eléctrica CINVESTAV-IPN Av. Instituto Politécnico Nacional No. 2508 Col. San Pedro Zacatenco México, D. F. CP 07300
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á
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
Análisis de algoritmos.
Análisis de algoritmos. - Introducción. - Notaciones asintóticas. - Ecuaciones de recurrencia. - Ejemplos. 1 Introducción Algoritmo: Conjunto de reglas para resolver un problema. Su ejecución requiere
Introducción al análisis de algoritmos
Estructura de Datos y Algoritmos Introducción al análisis de algoritmos 1. Eficiencia en tiempo de Ejecución Cuando resolvemos un problema nos vemos frecuentemente enfrentando una elección de programas,
1. Introducción al análisis de algoritmos
1. Introducción al análisis de algoritmos 1. Introducción al concepto de algoritmia 2. Eficiencia de un algoritmo 3. Notación asintótica 4. Reglas generales Bibliografía Brassard y Bratley, 97; capítulos
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
Análisis de la Complejidad de Algoritmos
Análisis de la Complejidad de Algoritmos Gráficas estadística y minería de datos con python Miguel Cárdenas Montes Centro de Investigaciones Energéticas Medioambientales y Tecnológicas, Madrid, Spain [email protected]
Notación Asintótica. Programación Avanzada
Notación Asintótica Programación Avanzada Orden de crecimiento asintótico Ayuda a: Identificar el comportamiento de un algoritmo en el peor, el mejor o el caso promedio. Tener una idea del comportamiento
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
Diseño y Análisis de Algoritmos
1. Recursividad 2. "Dividir para Reinar" 3. Recursividad y Tabulación (Programación Dinámica) 4. Métodos Matemáticos Funciones discretas Notación O Ecuaciones de recurrencia 5. Casos de Estudio Breve descripción
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
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
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
Capítulo 1 LA COMPLEJIDAD DE LOS ALGORITMOS
Capítulo 1 LA COMPLEJIDAD DE LOS ALGORITMOS 1.1 INTRODUCCIÓN En un sentido amplio, dado un problema y un dispositivo donde resolverlo, es necesario proporcionar un método preciso que lo resuelva, adecuado
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
Algoritmos: Análisis de Algoritmos
Ordenación por Inserción y Ordenación por Selección Reglas para calcular O Dept. de Computación, Universidade da Coruña [email protected] Ordenación por Inserción (1) procedimiento Ordenación
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
Complejidad de algoritmos recursivos
Tema 3. Complejidad de algoritmos recursivos 1. INTRODUCCIÓN... 1 CLASIFICACIÓN DE FUNCIONES RECURSIVAS... 1 DISEÑO DE FUNCIONES RECURSIVAS... 2 2. VENTAJAS E INCONVENIENTES DE LA RECURSIVIDAD... 4 3.
DEPARTAMENTO DE MATEMATICAS Y FISICA Matemáticas Discreta
DEPARTAMENTO DE MATEMATICAS Y FISICA Matemáticas Discreta SUCESIONES Y RELACIONES DE RECURRENCIA Esta última sección la dedicamos a presentar el concepto de recurrencia, que esta muy ligado al axioma de
Complejidad de los Algoritmos
Que es un Algoritmo? Complejidad de los Algoritmos Webster: cualquier método especial para resolver cierta clase de problemas. Horowitz: método preciso utilizable en una computadora para la solución de
Algoritmos Secuenciales y Recursivos
Algoritmos Secuenciales y Recursivos M. Andrea Rodríguez-Tastets Ayudante: Erick Elejalde Universidad de Concepción,Chile www.inf.udec.cl\ andrea [email protected] I Semestre - 2014 1/45 Análisis secuencial
UNIDAD 7 Recursividad Concepto. Algoritmos recursivos. Seguimiento de la recursión. Algunos métodos recursivos de búsqueda y ordenación: M-Sort y
Recursividad Concepto. Algoritmos recursivos. Seguimiento de la recursión. Algunos métodos recursivos de búsqueda y ordenación: M-Sort y Q-Sort. Comparación de eficiencia en métodos Iterativos vs recursivos
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
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
Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1
Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos
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
BORRADOR. Sucesiones y series numéricas Sucesiones. es un conjunto ordenado de números
Capítulo 4 Sucesiones y series numéricas 4.1. Sucesiones Una sucesión {s n } es un conjunto ordenado de números {s 1,s 2,s 3,...,s n,...}. Técnicamente, una sucesión puede considerarse como una aplicación
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 =
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,
EJERCICIO COMPUTACIONAL N o 4. MÉTODOS ITERATIVOS
EJERCICIO COMPUTACIONAL N o 4. MÉTODOS ITERATIVOS Ángel Durán Departamento de Matemática Aplicada Universidad de Valladolid 23 de abril de 2011 Contenidos 1 Métodos iterativos para sistemas lineales Técnicas
Muchas de las ecuaciones de recurrencia que vamos a usar en este curso tienen la siguiente forma: ( c n =0 T (n) = a T (b n b.
El Teorema Maestro Muchas de las ecuaciones de recurrencia que vamos a usar en este curso tienen la siguiente forma: ( c n =0 T (n) = a T (b n b c)+f (n) n 1 donde a, b y c son constantes, y f (n) es una
Complejidad computacional (Análisis de Algoritmos)
Definición. Complejidad computacional (Análisis de Algoritmos) Es la rama de las ciencias de la computación que estudia, de manera teórica, la optimización de los recursos requeridos durante la ejecución
OPTIMIZACIÓN VECTORIAL
OPTIMIZACIÓN VECTORIAL Métodos de Búsqueda Directa Utilizan sólo valores de la función Métodos del Gradiente Métodos de Segundo Orden Requieren valores aproimados de la primera derivada de f) Además de
Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2
Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2 Diseño de algoritmos recursivos 1. Dado un vector de enteros de longitud N,
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
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
TEMARIOS EXAMEN DE ADMISIÓN 2017 EDUCACIÓN BÁSICA Y MEDIA: MATEMÁTICA. Contenido
TEMARIOS EXAMEN DE ADMISIÓN 2017 1 Básico 1.- Reconocimiento izquierda derecha 2.- Figuras geométricas 3.- Cuerpos geométricos 4.- Establecer patrones 5.- Secuencias temporales 6.- ordinales 7.- Reconocimiento
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
Algoritmos de Ordenación
Algoritmos de Ordenación Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria [email protected] Algoritmos comunes - Ordenación Ordenación o clasificación es
Apuntes sobre el cálculo de la eficiencia de los algoritmos. Dept. Llenguatges i Sistemes Informàtics
Apuntes sobre el cálculo de la eficiencia de los algoritmos José L. Balcázar Dept. Llenguatges i Sistemes Informàtics Las magnitudes se representan algebraicamente por letras, los hombres por hombres de
Práctica 2 - Ejercicio 2.8
Algoritmos y Estructura de Datos III Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires 27 de Marzo de 2013 2.8 - Euclides 2.8. a. Escribir el algoritmo de Euclides para calcular el
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
Formulación del problema de la ruta más corta en programación lineal
Formulación del problema de la ruta más corta en programación lineal En esta sección se describen dos formulaciones de programación lineal para el problema de la ruta más corta. Las formulaciones son generales,
Sucesiones y series numéricas
Capítulo 4 Sucesiones y series numéricas 4.. Sucesiones Una sucesión {s n } es un conjunto ordenado de números {s,s 2,s 3,...,s n,...}. Técnicamente, una sucesión puede considerarse como una aplicación
Algebra lineal y conjuntos convexos
Apéndice A Algebra lineal y conjuntos convexos El método simplex que se describirá en el Tema 2 es de naturaleza algebraica y consiste en calcular soluciones de sistemas de ecuaciones lineales y determinar
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
CAPÍTULO 6 PROGRAMACIÓN DINÁMICA. Programación Dinámica
CAPÍTULO 6 PROGRAMACIÓN DINÁMICA Programación Dinámica Programación Dinámica En muchos casos las decisiones del pasado afectan los escenarios del futuro. En estos casos se pueden tomar 2 opciones: asumir
TEMARIOS EXAMEN DE ADMISIÓN 2016 EDUCACIÓN BÁSICA Y MEDIA: MATEMÁTICA
TEMARIOS EXAMEN DE ADMISIÓN 2016 1 Básico y operaciones Ámbito 0 al 10 Emplear los números para identificar, contar, clasificar, sumar, restar, informarse y ordenar elementos de la realidad. Representar
Resolución de Ecuaciones no lineales. Juan Manuel Rodríguez Prieto
Resolución de Ecuaciones no lineales Juan Manuel Rodríguez Prieto Resolución de Ecuaciones no lineales Objetivos Aprender a resolver ecuaciones de la forma: f () = 0 Donde f es una función no-lineal de
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:
COMPLEJIDAD Y EFICIENCIA DE ALGORITMOS
UNIVERSIDAD NACIONAL DE SANTIAGO DEL ESTERO Facultad de Ciencias Exactas y Tecnologías Licenciatura en Sistemas de Información 2009 COMPLEJIDAD Y EFICIENCIA DE ALGORITMOS 1 TEORÍA DE LA COMPLEJIDAD Dado
Recursividad Definición
Recursividad Definición Un procedimiento o función se dice recursivo si durante su ejecución se invoca directa o indirectamente a sí mismo. Esta invocación depende al menos de una condición que actúa como
4.6. Interpolación mediante splines (polinomios a trozos) Figura 4.1: Datos de interpolación
Capítulo 4 INTERPOLACIÓN 46 Interpolación mediante splines polinomios a trozos En las figuras siguientes se puede observar alguno de los problemas que la interpolación clásica con polinomios puede plantear
METODO DE LA BISECCIÓN Si f : a, b es continua con f a f b 0,el procedimiento de la
METODO DE LA BISECCIÓN Si f : a, b es continua con f a f b,el procedimiento de la bisección genera una sucesión (s n ) n convergente siendo s n a n b n ytal 2 que si lim s n s se cumple que f s y n s n
TEMARIOS EXAMEN DE ADMISIÓN 2018 ASIGNATURA MATEMÁTICA. Emplear los números para: Identificar Contar Clasificar Sumar y restar Resolución de problemas
TEMARIOS EXAMEN DE ADMISIÓN 2018 ASIGNATURA MATEMÁTICA 1 Básico Números y operaciones Ámbito 0 al 10 /Habilidad Emplear los números para: Identificar Contar Clasificar Sumar y restar Resolución de problemas
Propiedades de números enteros (lista de problemas para examen)
Propiedades de números enteros (lista de problemas para examen) Denotamos por Z al conjunto de los números enteros y por N al conjunto de los números enteros positivos: N = 1, 2, 3,...}. Valor absoluto
Estructuras de Datos y Algoritmos
Estructuras de Datos y Algoritmos Tema 2. Análisis de la eficiencia Prof. Dr. P. Javier Herrera Contenido Introducción a la eficiencia computacional Cálculo básico de complejidades 2 Una leyenda ajedrecística
7.1 Consideraciones. Considere la búsqueda de un libro en una biblioteca. Considere la búsqueda de un nombre en el directorio telefónico.
86 Capítulo 7. ORDENAMIENTO. 7.1 Consideraciones. Considere la búsqueda de un libro en una biblioteca. Considere la búsqueda de un nombre en el directorio telefónico. Si los elementos a ordenar son compuestos
Figura 1: Esquema de las tablas simplex de inicio y general.
RELACIONES PRIMAL-DUAL Los cambios que se hacen en el modelo original de programación lineal afectan a los elementos de la tabla óptima actual el que se tenga en el momento, que a su vez puede afectar
Algoritmos y Complejidad
IN47B, Ingeniería de Operaciones Contenidos 1 Introducción 2 Analizando Algoritmos 3 Complejidad 4 N P-completitud Qué es un Algoritmo? Qué es un Algoritmo? Definición Un algoritmo es un conjunto de pasos
Práctica IV: Métodos de Newton-Raphson y de la secante, para encontrar las raíces de una función.
Práctica IV: Métodos de Newton-Raphson y de la secante, para encontrar las raíces de una función. Se suele llamar método de Newton-Raphson al método de Newton cuando se utiliza para calcular los ceros
Dada f : [a, b] R R, continua, se plantea el problema de encontrar ceros de f, es decir raíces de la ecuación
Tema 8 Ceros de funciones Versión: 23 de abril de 2009 8.1 Introducción Dada f : [a, b] R R, continua, se plantea el problema de encontrar ceros de f, es decir raíces de la ecuación f(x) = 0. (8.1) La
Derivadas de orden superior
Tema 6 Derivadas de orden superior 6 Polinomios de Taylor Nuestro objetivo es aproimar una función dada mediante funciones polinómicas Resulta conveniente estudiar las funciones polinómicas con más detenimiento
ALGORITMICA III Capitulo I ANALISIS DE ALGORITMOS
Universidad Nacional de San Antonio Abad del Cusco Departamento Académico de Informática ALGORITMICA III Capitulo I ANALISIS DE ALGORITMOS Iván Medrano Valencia ANALISIS DE ALGORITMOS Un algoritmo es un
MANUAL DE PRÁCTICAS DEL TALLER DE PROGRAMACIÒN PRACTICA NO.6
MANUAL DE PRÁCTICAS DEL TALLER DE PROGRAMACIÒN PRACTICA NO.6 NOMBRE DE LA PRÁCTICA. Estructuras secuénciales 6.1 OBJETIVO GENERAL El alumno desarrollará la habilidad para diseñar algoritmos secuenciales,
Métodos de gradiente. Métodos de Krylov
Métodos de gradiente. Métodos de Krylov Damián Ginestar Peiró Departamento de Matemática Aplicada Universidad Politécnica de Valencia Curso 2012-2013 (UPV) Métodos de gradiente. Métodos de Krylov Curso
ESTRUCTURAS DE CONTROL
ESTRUCTURAS DE CONTROL En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa. Con las estructuras de control se puede: De
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
Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo
TEMA 2: CONCEPTOS BÁSICOS DE ALGORÍTMICA 1. Definición de Algoritmo 1.1. Propiedades de los Algoritmos 2. Qué es un Programa? 2.1. Cómo se construye un Programa 3. Definición y uso de herramientas para
Programación Dinámica
Programación Dinámica Es aplicada típicamente a problemas de optimización, donde puede haber muchas soluciones, cada una tiene un valor asociado y prentendemos obtener la solución con valor óptimo. Al
Preliminares Interpolación INTERPOLACIÓN Y APROXIMACIÓN POLINOMIAL
INTERPOLACIÓN Y APROXIMACIÓN POLINOMIAL Contenido Preliminares 1 Preliminares Teorema 2 Contenido Preliminares Teorema 1 Preliminares Teorema 2 Teorema Preliminares Teorema Teorema: Serie de Taylor Supongamos
2. Obtener, por ensayo y error, una aproximación del entero más grande. Sugerencia: leer n y escribir n y n+1. (Puede ser muy largo el ensayo).
En los ejercicios, cuando se hable de un entero (un número entero), se trata de un entero del lenguaje C. Por ejemplo, 10 20 es un número entero en el sentido matemático, pero muy posiblemente este entero
C a l ses P P y y NP C a l se P C a l se N P N P [No N n o -De D te t rmin i i n s i ti t c i Polynomial-tim i e]
Análisis y Diseño de Algoritmos Introducción Análisis y Diseño de Algoritmos Concepto de algoritmo Resolución de problemas Clasificación de problemas Algorítmica Análisis de la eficiencia de los algoritmos
1 Método de la bisección. 1.1 Teorema de Bolzano Teorema 1.1 (Bolzano) Contenido
E.T.S. Minas: Métodos Matemáticos Resumen y ejemplos Tema 3: Solución aproximada de ecuaciones Francisco Palacios Escuela Politécnica Superior de Ingeniería de Manresa Universidad Politécnica de Cataluña
(2) X(3I + A) = B 2I (3) X(3I + A)(3I + A) 1 = (B 2I)(3I + A) 1 (5) X = (B 2I)(3I + A) 1
Pruebas de Acceso a Enseñanzas Universitarias Oficiales de Grado PAEG) Matemáticas aplicadas a las Ciencias Sociales II - Septiembre 2012 - Propuesta B 1. a) Despeja la matriz X en la siguiente ecuación
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)
Algorítmica y Lenguajes de Programación. Ordenación (ii) En la lección anterior se vieron dos métodos de ordenación:
Algorítmica y Lenguajes de Programación Ordenación (ii) Ordenación. Introducción En la lección anterior se vieron dos métodos de ordenación: Método de la burbuja. Método de la burbuja con señal. El primero
Algoritmos glotones. mat-151
Algoritmos glotones (greedy) mat-151 Alonso Ramirez Manzanares Computación y Algoritmos 04.06.2009 Algoritmos glotones Algoritmos utilizados en problemas de optimización. Estos algoritmos siguen típicamente
Introducción a la Programación Dinámica. El Problema de la Mochila
Tema 1 Introducción a la Programación Dinámica. El Problema de la Mochila La programación dinámica no es un algoritmo. Es más bien un principio general aplicable a diversos problemas de optimización que
Algoritmos y Estructuras de Datos
1 / 36 Universidad Icesi Facultad de Ingeniería 2017-2 2 / 36 Agenda del día 1 3 / 36 Por qué usamos recurrencias en análisis de algoritmos? 3 / 36 Por qué usamos recurrencias en análisis de algoritmos?
Tema: Programación Dinámica.
Programación IV. Guía No. 12 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Programación Dinámica. Objetivos Específicos Definir el concepto de programación dinámica. Interpretar
84 Tema 3. Dualidad. todas las restricciones son del tipo, todas las variables son no negativas.
Tema 3 Dualidad En el desarrollo de la programación lineal la teoria de la dualidad es importante, tanto desde el punto de vista teórico como desde el punto de vista práctico. Para cada modelo lineal se
