Diseño de algoritmos
|
|
|
- María Carmen Botella Campos
- hace 7 años
- Vistas:
Transcripción
1 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 Con un algoritmo de función de coste temporal f(n) = n 3 resolvemos problemas de tamaño K en una hora. Hasta qué tamaño podremos resolver, en el mismo tiempo, con una máquina 1000 veces más rápida? Y si la función de coste fuese f(n) = 2 n? Supongamos que f(n) representa el número de operaciones elementales que hace el algoritmo para entradas de tamaño n. Si consideramos que cada operación elemental necesita tiempo t para realizarse, tenemos que f(k)t es una hora. La máquina 1000 veces más rápida tarda tiempo t/1000 en realizar cada operación elemental. Así que, la solución la encontramos resolviendo la ecuación que iguala el tiempo utilizado por ambas máquinas: f(k)t = f(x)t/1000. Cuando f(n) = n 3 la respuesta es x = 10 K. Cuando f(n) = 2 n la respuesta es x = K + lg Disponemos de dos algoritmos A y B para resolver el mismo problema, con implementaciones que realizan 8n 2 y 64n lg n operaciones elementales, para entradas de tamaño n, respectivamente. Determine para qué tamaños de la entrada, el algoritmo A es más rápido que B. Para tamaños n > 1 y menores o iguales que el mayor número entero que satisface la inecuación 8n 2 < 64n lg n. 3. Determine para qué tamaños de entrada, en la misma máquina, es más rápido un algoritmo con función de coste 100n 2 que otro con función de coste 2 n. Hay que encontrar los valores naturales que satisfacen la inecuación 100n 2 < 2 n. Es decir n Analice el siguiente algoritmo, definiendo la función de coste pertinente y especificando claramente qué es lo que se está considerando como tamaño de la entrada. 1
2 UPV-EHU. Diseño de algoritmos 2 func Es Equilibrado (V, inicio, fin) return integer for i in inicio.. fin loop izq 0; for k in inicio.. i 1 loop izq izq+v (k); ; der 0; for k in i.. fin loop der der+v (k); ; if izq = der then return i; ; return 0; Determinamos como tamaño de la entrada el número de elementos de V comprendidos entre los índices inicio y fin. Es decir n = fin inicio + 1. Entonces la función de coste en tiempo queda definida por la siguiente suma: i 1 f(n) = (Θ(1) + Θ(1) + Θ(1)) k=1 k=i = (Θ(1) + nθ(1)) = Θ(n) + Θ(n 2 ) Concluimos que Es Equilibrado es Θ(n 2 ). 5. El siguiente algoritmo busca la primera aparición de un string B(1..k) en el string A(1..n); devuelve true y el índice de A donde comienza B, si lo encuentra; y false en caso contrario. El valor n k + 1 es la posición más a la derecha en A donde podría comenzar B. func StringSearch (A, B: String) return (boolean, natural) N A.length; K B.length; Inicio A.firstIndex; Encontrado f alse; Limite N-K+1; while not Encontrado and Inicio Limite loop I Inicio; J B.firstIndex; while J K+1 and then (A(i) = B(j)) loop I I+1; J J+1; ; Encontrado (J=K+1); if not Encontrado then Inicio Inicio+1; ; return (Encontrado, Inicio)
3 UPV-EHU. Diseño de algoritmos 3 Cuántas veces se ejecuta la comparación A(i) = B(j) en el peor caso? Qué entradas dan lugar al peor caso? Obsérvese que el operador booleano and then hace que la comprobación sólo se realice cuando sea verdadera la condición J K+1. El string B(1..k) puede comenzar en A en n k + 1 posiciones distintas, ocurriendo el caso peor cuando B se compara, a partir de cada una de ellas, completamente (es decir, los k caracteres de B(1..k)). Esto requerirá (n k+1)k comparaciones entre caracteres de A y de B. Las entradas que dan lugar al peor caso son las que satisfacen el siguiente predicado: i, j(1 i, j n A(i) = A(j)) i, j(1 i k 1 1 j n B(i) = A(j) B(k) A(1)) Por ejemplo, A(1... 7) = aaaaaaa y B(1... 3) = aab 6. El siguiente algoritmo realiza una búsqueda secuencial de un número X en una tabla T(I..F). Determine cuántas comparaciones, del número X con un elemento de la tabla T, se realizan en el caso peor y en el caso medio. func Busqueda Secuencial (T : Tabla; I, F : integer; X: integer) return boolean Actual I while Actual F and then T (Actual) X loop Actual Actual+1 if Actual > F then return false else return true El caso peor ocurre cuando X = T (F ) o bien cuando X / T (I..F ). En ambos casos el número de comparaciones T (Actual) X es f(n) = n, siendo n = F I + 1. Para el análisis en el caso medio, vamos a suponer que todos los elementos de la tabla son distintos. Primero analizaremos el algoritmo suponiendo que X T (I..F ); numeramos los índices I..F con 1..n, respectivamente, y suponemos que la probabilidad de que X se encuentre en cada una de las posiciones i : 1..n es la misma. Obsérvese que para cada posición i : 1..n, el número de comparaciones que se realizan es precisamente i. De manera que la función de coste, en este caso medio es: M(n) = 1 n i = 1 n i = n + 1 2
4 UPV-EHU. Diseño de algoritmos 4 Ahora estudiemos el caso de que pueda ocurrir X / T (1..n). Entonces tenemos n + 1 casos posibles: Representaremos con I i (1 i n) los casos en que X está en la posición i; y con I n+1 el caso en que X / T (1..n). Sea q la probabilidad de que X T (1..n) y supongamos que cada posición es igualmente probable. Entonces la probabilidad de cada caso es p(i i ) = q 1 n y p(i n+1 ) = 1 q. En los casos I i el número de comparaciones es i, y en el caso I n+1 es n. Por lo tanto, la función de coste en este caso medio es: M(n) = ( q n i) + (1 q)n = q n (1 q)n Obsérvese que si sabemos que X T (1..n), es decir q = 1, obtenemos el resultado anterior. Concluimos que Busqueda Secuencial es Θ(n), siendo n el número de elementos en la tabla de búsqueda, tanto en el caso peor como en promedio. 7. Un número natural n 1 es triangular si es la suma de una sucesión ascendente no nula de naturales consecutivos que comienza en 1. Por tanto, los cinco primeros números triangulares son 1, 3 = 1+2, 6 = 1+2+3, 10 = y 15 = a) Escriba un algoritmo que, dado un entero positivo n 1, decida si éste es un número triangular. b) Analice su algoritmo. Un algoritmo trivial para comprobar que un número natural positivo n es triangular consiste en calcular sucesivamente los números triangulares y compararlos con n. En cada iteración, generaremos el siguiente número triangular NT. Si NT = n, habremos acabado con exito; si NT > n, habremos terminado con fracaso. func EsTriangular (n: positivo) return boolean NT 1 Ultimo Sumando 1 while NT < n loop Ultimo Sumando Ultimo Sumando + 1 NT NT + Ultimo Sumando return (NT = n) Las operaciones del bucle requieren tiempo constante y las iteraciones se realizan hasta que NT es igual o mayor que n. Esto es, el número de veces que se realiza este bucle es igual al número de sumandos que tiene la sucesión
5 UPV-EHU. Diseño de algoritmos 5 ascendente no nula de naturales consecutivos que comienza en 1 y cuya suma es k n = i = (1 + k)k 2 Obsérvese que si se ha salido del bucle porque NT > n, eso significa que en la iteración anterior, NT aún era menor que n y tras realizar una suma más ha sucedido NT > n; pero el orden del algoritmo sigue siendo el mismo. Así pues, si despejamos k de la ecuación k 2 + k 2n = 0, obtenemos el orden del número de veces que se ejecuta el bucle: Θ( n), tanto si consideramos que hemos salido del bucle con éxito como con fracaso. Concluimos que EsTriangular (n) es Θ( n). El espacio de memoria extra empleado es O(1), puesto que tan solo se han empleado dos variables locales. 8. Calcule la función de coste temporal de los siguientes algoritmos: a) func Serie (n, m: natural) return natural if n 1 then return m else return m + Serie(n 1, 2 m) b) func Total (n: natural) return natural if n 1 then return 1 else return Total(n 1) + 2 Parcial(n 1) siendo func Parcial (k: natural) return natural if k 1 then return 1 else return 2 Parcial(k 1) a) Obsérvese que el tamaño del parámetro m no es relevante, si consideramos elemental la operación 2 m. Así que sólo aparece una llamada recursiva con el tamaño de la entrada disminuido en 1. Por lo tanto la función de coste s(n) responde a la ecuación siguiente: Θ(1) si n 1 s(n) = s(n 1) + Θ(1) si n > 1 Que resolviendo resulta s(n) = Θ(n).
6 UPV-EHU. Diseño de algoritmos 6 b) Analicemos primero Parcial (k). Observamos que se produce una sola llamada recursiva con Parcial (k 1) y el resto son operaciones elementales. Así que la función de coste temporal p(k) responde a la ecuación siguiente: Θ(1) si k 1 p(k) = p(k 1) + Θ(1) si k > 1 Que resolviendo resulta p(k) = Θ(k). Analicemos ahora Total (n). Se produce una sola llamada recursiva con Total(n 1). Una llamada al algoritmo Parcial(n 1), que resulta de Θ(n), según el análisis anterior. El resto son operaciones elementales. Así que la función de coste t(n) responde a la ecuación siguiente: Θ(1) si n 1 t(n) = t(n 1) + Θ(n) si n > 1 Que resolviendo resulta t(n) = Θ(n 2 ) 9. Dado el algoritmo siguiente, que determina si una cadena C es palíndromo: func Pal (C, i, j) return booleano if i j then return verdadero elsif C(i) C(j) then return falso else return Pal(C, i + 1, j 1) Analice la evaluación de Pal(C, 1, n) en el caso peor y en el caso medio, suponiendo equiprobabilidad de todas las entradas y siendo a, b} el alfabeto que forma las cadenas. Consideremos n = j i + 1 el tamaño de la entrada. Estudiaremos, como operación característica, el número de comparaciones C(i) C(j). Es fácil ver que, en el caso peor, ese número viene dado por la función siguiente: 0 si n 1 f(n) = f(n 2) + 1 si n > 1 Que resolviendo resulta f(n) = n 2 = Θ(n) En el caso medio, la equiprobabilidad de las entradas hace que la probabilidad de que los valores en los extremos sean distintos es 1 2, ya que el alfabeto es a,b}; y en ese caso el número de comparaciones que se realizan es 1. En caso de que los extremos sean iguales cuya probabilidad es 1 2 el número de comparaciones es 1 más el número promedio de comparaciones para una cadena de tamaño n 2. Es decir, que la función de coste en el caso medio responde a la ecuación siguiente: 0 si n 1 g(n) = (1 + g(n 2)) si n > 1
7 UPV-EHU. Diseño de algoritmos 7 Que resolviendo por expansión: g(n) = g(n 2) =... = 1 i 1 2 i g(n 2i) k =... k=0 que cuando i = n 2 resulta g(n) = n = O(1). Concluimos que Pal es Θ(n) en el caso peor, pero O(1) en el caso medio. 10. Imagine un robot situado sobre unos raíles sin fin, que tiene la posibilidad de moverse un paso a la derecha o a la izquierda al ejecutarse la operación posición posición +1. La dirección del movimiento depende del valor del parámetro sentido. La operación cambiar(sentido) modifica el valor de sentido de derecha a izquierda y viceversa; y esos son los únicos valores del parámetro sentido. Además, el robot tiene la posibilidad de advertir la presencia de un determinado objeto (frente a la posición determinada por el parámetro posición) al ejecutarse la operación booleana detecto en(posición). El siguiente algoritmo mueve pendularmente al robot en busca del objeto citado, partiendo de un origen que marcamos con el valor 0. límite 1 sentido derecha loop posición 0 while posición < límite loop posición posición +1 if detecto en(posición) then return (posición, sentido) sentido cambiar(sentido) for i in 1..límite loop posición posición +1 límite 2 límite Asumiendo que el objeto será encontrado, analice el número de veces que se realizará la operación posición posición +1 en función de la distancia inicial del objeto al origen. Representemos con n la distancia inicial del objeto al origen (ese es el tamaño de la entrada). Los bucles while y for son, respectivamente, de ida hasta límite y vuelta. En cada viaje de ida y vuelta, se realiza 2 límite veces la operación posición posición +1. En cada iteración del bucle externo loop, se duplica el valor de límite. Obsérvese que debe existir un natural k 0 tal que el valor n satisfaga 2 k 1 < n 2 k. Puesto que el valor inicial de límite es 1, en el peor caso n = 2 k y
8 UPV-EHU. Diseño de algoritmos 8 el número de veces que se realiza la operación posición posición +1 es el siguiente: 2 + (2 2) + (2 2 2 ) (2 2 k 1 ) + 2 k = 2 (2 k 1) + 2 k = 3 2 k 2 Concluimos que el número de veces que se realiza la operación posición posición +1 es O(n). 11. Cuando los números tienen muchos dígitos, hay que cuestionarse si las operaciones aritméticas pueden considerarse operaciones elementales. a) Consideremos los algoritmos de suma y multiplicación, realizados con lápiz y papel, aprendidos en la escuela. Denominamos elemental a la multiplicación, respectivamente suma, de dos dígitos decimales. Justifique que el algoritmo típico que usa para multiplicar, con lápiz y papel, dos números enteros A y B realiza Θ(mn) multiplicaciones elementales y Θ(mn) sumas elementales, siendo m y n el número de dígitos de A y B respectivamente. b) Las operaciones A 10, B/10 y B mod 10 pueden considerarse de O(1) (consisten, respectivamente, en añadir, eliminar y seleccionar una cifra decimal; por lo tanto, para realizarlas no necesitamos multiplicaciones ni sumas). Analice el número de multiplicaciones elementales, y separadamente el número de sumas elementales, que se realizan con el siguiente algoritmo de multiplicación. Los símbolos y representan, respectivamente, las operaciones de suma y multiplicación de números naturales realizadas con el algoritmo típico considerado en el apartado anterior. Fíjese que las operaciones A 10, y Multiplicar se realizan con algoritmos diferentes. func Multiplicar (A,B: natural) return natural if B=0 then return 0 else return A (B mod 10) Multiplicar(A 10, B/10 ) a) En el algoritmo típico de multiplicación, cada dígito de A se multiplica con cada dígito de B; por lo tanto se realizan Θ(mn) multiplicaciones elementales. Al disponer los resultados de las multiplicaciones elementales se forma una tabla que tiene Θ(m+n) columnas, y supongamos que n filas (asumiendo que m n y que disponemos la multiplicación para que así sea). Así pués el número de sumas elementales es de Θ(n(m + n)) = Θ(mn + n 2 ), que con la hipótesis de m n es igual a Θ(mn).
9 UPV-EHU. Diseño de algoritmos 9 b) Primero analizamos el número de multiplicaciones, resolviendo la recurrencia siguiente: f(m, n) = número de multiplicaciones elementales realizadas por Multiplicar(A, B) cuando A tiene m dígitos y B tiene n. f(m, 1) = m f(m, n) = m + f(m + 1, n 1) si n > 1 Resolviendo por expansión: f(m, n) = m + f(m + 1, n 1) = m + (m + 1) + f(m + 2, n 2) =... = m + (m + 1) (m + (n 2)) + f(m + n 1, 1) = m + (m + 1) (m + (n 2)) + (m + (n 1)) = mn + ( n 1) = mn + Θ(n 2 ) = Θ(mn) (asumiendo m n) Ahora analizamos el número de sumas elementales. Obsérvese que si A tiene m dígitos y B tiene n > 1, podemos decir que Multiplicar(A 10, B/10 ) tiene Θ(m + n) dígitos, pero A (B mod 10) sólo tiene Θ(m); así que al sumarlos se realizan Θ(m) sumas elementales. Por otro lado, si n = 1 podemos decir que el número de sumas elementales es 1. Por lo tanto, el orden de la función g(m, n) = número de sumas elementales realizadas por Multiplicar(A, B) cuando A tiene m dígitos y B tiene n. es el de la recurrencia g(m, 1) = 1 g(m, n) = Θ(m) + g(m + 1, n 1) si n > 1 que se resuelve igual que la antes.
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: Vuelta atrás Curso 2008-09 1. Escriba un algoritmo de vuelta atrás para determinar el mínimo número de monedas
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: Programación Dinámica Curso 2008-09 1. Sea A una tabla de n números enteros con n > 0, y sea la función func
Análisis de algoritmos
Tema 03: Análisis temporal M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom 1 Contenido Caso de entrada Ejemplo 1 (Búsqueda lineal) Operación
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,
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
Análisis de Algoritmos
Análisis de Algoritmos IIC1253 IIC1253 Análisis de Algoritmos 1 / 36 Complejidad de un algoritmo Un algoritmo A puede ser pensado como una función A : {0,1} {0,1} Qué tan general es esta representación?
Diseño de algoritmos
Diseño de algoritmos Algoritmos de Vuelta Atrás Jesús Bermúdez de Andrés Universidad del País Vasco/Euskal Herriko Unibertsitatea (UPV/EHU) Curso 2008-09 1 Algoritmos de vuelta atrás El coloreado de mapas
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
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,
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
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
Algoritmos y Estructuras de Datos Curso 06/07. Ejercicios
6.1.(Clase) Un programa que utiliza la técnica divide y vencerás, divide un problema de tamaño n en a subproblemas de tamaño n/b. El tiempo g(n) de la resolución directa (caso base) se considerará constante.
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 =
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.
Algorítmica y Complejidad. Tema 5 Divide y Vencerás.
Algorítmica y Complejidad Tema Divide y Vencerás. . Método.. Un ejemplo sencillo.. Complejidad del método.. Ejemplo: El máximo subarray.. Ejemplo: Multiplicación de enteros. . Método.. Un ejemplo sencillo..
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
Programación II. Mario Aldea Rivas Programación II 04/04/11 1. Mario Aldea Rivas Programación II 04/04/11 2
Programación II Bloque temático 1. Lenguajes de programación Bloque temático 2. Metodología de programación Bloque temático 3. Esquemas algorítmicos Tema 5. Algoritmos voraces, heurísticos y aproximados
ELO320 Estructuras de Datos y Algoritmos. Complejidad. Tomás Arredondo Vidal
ELO320 Estructuras de Datos y Algoritmos Complejidad Tomás Arredondo Vidal Este material está basado en: Robert Sedgewick, "Algorithms in C", (third edition), Addison-Wesley, 2001 Thomas Cormen et al,
OCW-V.Muto Sistemas de numeración Cap. III CAPITULO III. SISTEMAS DE NUMERACION 1. REPRESENTACION DE LA INFORMACION
CAPITULO III. SISTEMAS DE NUMERACION 1. REPRESENTACION DE LA INFORMACION El sistema de numeración usado habitualmente es el decimal, de base 10, que no es adecuado para ser manejado por el ordenador, fundamentalmente
Diseño de algoritmos
Diseño de algoritmos Programación Dinámica Jesús Bermúdez de Andrés Universidad del País Vasco/Euskal Herriko Unibertsitatea (UPV/EHU) Curso 2008-09 1 Programación Dinámica Definición de la técnica Funciones
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
Notación Asintótica. Temas. Introducción Notación O Notación Omega Notación Theta. Análisis de Algoritmos
Notación Asintótica Análisis de Algoritmos Temas Introducción Notación O Notación Omega Notación Theta 1 Introducción Por qué el análisis de algoritmos? Determinar tiempos de respuesta (runtime) Determinar
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
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
Programación en Gambas
1.- ALGORITMOS Y PROGRAMAS. Programación en Gambas Se puede definir un algoritmo con lo sucesión de pasos que se deben realizar desde que se plantea un problema hasta que éste queda totalmente resuelto.
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
Tema 3.2: Eficiencia de algoritmos recursivos. Diseño y Análisis de Algoritmos
Diseño y Análisis de Algoritmos Contenidos Contenidos 1 Introducción 2 3 Método general para resolución de relaciones de recurrencia URJC DAA 2 / 37 Introducción Análisis de algoritmos recursivos La matemática
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
Prerrequisitos de la asignatura Álgebra Lineal Numérica
Prerrequisitos de la asignatura Álgebra Lineal Numérica El propósito de Álgebra Lineal Numérica es analizar algoritmos típicos de álgebra lineal, optimizando la rapidez y la precisión. Para analizar la
Una matriz es un arreglo rectangular de números. Los números en el arreglo se llaman elementos de la matriz. ) ( + ( ) ( )
MATRICES Una matriz es un arreglo rectangular de números. Los números en el arreglo se llaman elementos de la matriz. Ejemplo 1. Algunos ejemplos de matrices ( + ( ) ( + ( ) El tamaño o el orden de una
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
4.2. 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
4.1. 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,
ANÁLISIS Y DISEÑO DE ALGORITMOS. PRACTICAS
ANÁLISIS Y DISEÑO DE ALGORITMOS. PRACTICAS 2004-2005 PRACTICA 1: MEDICIÓN DEL TIEMPO. ALGORITMOS DE ORDENACIÓN Crear un conjunto de funciones que permitan la medición del tiempo de ejecución de los programas,
Ejercicios sobre recursividad
Ejercicios sobre recursividad 11 de febrero de 2003 1. Implementa una función recursiva que devuelva la suma de los dígitos de un número natural, que se le pasa por parámetro. 2. Implementa una función
Definición: Dos matrices A y B son iguales si tienen el mismo orden y coinciden los elementos que ocupan el mismo lugar.
UNIDAD 03: MATRICES Y DETERMINANTES. 3.1 Conceptos de Matrices. 3.1.1 Definición de matriz. Definición: Se lama matriz de orden m x n a un arreglo rectangular de números dispuestos en m renglones y n columnas.
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á
Ecuaciones matriciales AX = B y XA = B. Cálculo de la matriz inversa
Ecuaciones matriciales AX = B y XA = B Cálculo de la matriz inversa Objetivos Aprender a resolver ecuaciones matriciales de la forma AX = B y XA = B Aprender a calcular la matriz inversa con la eliminación
C U R S O : MATEMÁTICA
C U R S O : MATEMÁTICA GUÍA TEÓRICO PRÁCTICA Nº 2 UNIDAD: NÚMEROS Y PROPORCIONALIDAD NÚMEROS ENTEROS VALOR ABSOLUTO Es la distancia que existe entre un número y el 0-3 -2-1 0 1 2 3 Z -3 = 3, 3 = 3 DEFINICIÓN:
Tema 15: Preprocesamiento. Algoritmos Numéricos. Evaluación de Polinomios Multiplicación de Matrices Resolución de Ecuaciones Lineales
Tema 15: Preprocesamiento. Algoritmos Numéricos Evaluación de Polinomios Multiplicación de Matrices Resolución de Ecuaciones Lineales Eficiencia de Algoritmos Numericos Los programas numericos suelen hacer
Algoritmos en teoría de números
Algoritmos en teoría de números IIC2283 IIC2283 Algoritmos en teoría de números 1 / 92 Para recordar: aritmética modular Dados dos números a, b Z, si b > 0 entonces existen α, β Z tales que 0 β < b y a
ÁLGEBRA LINEAL I NOTAS DE CLASE UNIDAD 2
ÁLGEBRA LINEAL I NOTAS DE CLASE UNIDAD 2 Abstract Estas notas conciernen al álgebra de matrices y serán actualizadas conforme el material se cubre Las notas no son substituto de la clase pues solo contienen
1. Algoritmo, programa y pseudocódigo. Introducción al estudio de algoritmos. Ejemplos
Introducción al estudio de algoritmos 1. Algoritmo, programa y pseudocódigo 2. Eficiencia y el principio de invarianza 3. Operaciones elementales 4. Casos mejor, peor y medio 5. Notación asintótica 6.
OCW-V.Muto Eliminación Gaussiana y sustitución hacia atrás Cap. XIV CAPITULO XIV. ELIMINACION GAUSSIANA Y SUSTITUCION HACIA ATRAS
CAPITULO XIV ELIMINACION GAUSSIANA Y SUSTITUCION HACIA ATRAS 1 INTRODUCCION Y METODO El procedimiento general de eliminación Gaussiana aplicado al sistema E 1 : a 11 x 1 + a 1 x + + a 1n x n = b 1 E :
Algoritmos y Estructuras de Datos II, Segundo del Grado de Ingeniería Informática, Test de Programación Dinámica, 4 de mayo 2017
Algoritmos y Estructuras de Datos II, Segundo del Grado de Ingeniería Informática, Test de Programación Dinámica, 4 de mayo 2017 Para cada uno de los dos problemas siguientes, hay que explicar cómo se
Introducción a la Programación
0,25 puntos cada pregunta 1. Observa el siguiente esquema de código. Cuándo se ejecuta Instrucción4? IF Condición1 THEN Instrucción1 ELSE IF Condición2 THEN Instrucción2 ELSE IF Condición3 THEN Instrucción3;
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,,
Tema 1: MATRICES. OPERACIONES CON MATRICES
Tema 1: MATRICES. OPERACIONES CON MATRICES 1. DEFINICIÓN Y TIPO DE MATRICES DEFINICIÓN. Una matriz es un conjunto de números reales dispuestos en filas y columnas. Si en ese conjunto hay m n números escritos
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
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
Recurrencias. Si a 0, a 1, a 2, es una progresión geométrica, entonces a 1 /a 0 = a 2 /a 1 = = a n+1 /a n = r, la razón común.
Recurrencias Def. Progresión geométrica. Es una sucesión infinita de números, como: 5, 45, 135, donde el cociente de cualquier término entre su predecesor es una constante, llamada razón común. (Para nuestro
66 problemas resueltos de Análisis y Diseño de Algoritmos
66 problemas resueltos de Análisis y Diseño de Algoritmos Rosa Arruabarrena Jesús Bermúdez Informe interno: UPV/EHU /LSI / TR 8-99 REVISADO 15 de Octubre del 2000 PARTE I: Problemas 1. Supuesto que n n
Aritmética en Haskell
Aritmética en Haskell Taller de Álgebra I Primer cuatrimestre de 2014 Algoritmo de división Para obtener el cociente y resto entre dos números enteros, tenemos las funciones div y mod, respectivamente.
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,
ÁLGEBRA LINEAL I Algunas soluciones a la Práctica 3
ÁLGEBRA LINEAL I Algunas soluciones a la Práctica 3 Matrices y determinantes (Curso 2011 2012) 2. Sea A una matriz diagonal n n y supongamos que todos los elementos de su diagonal son distintos entre sí.
Cuál es el significado de t(n) en este caso? Dependen O(t(n)) y Ω(t(n)) de este significado? Y o(t(n))? Justifica las respuestas.
159. (Clase) Obtener el tiempo de ejecución t(n), O(t(n)), Ω(t(n)) y o(t(n)) para el siguiente algoritmo de multiplicación de matrices: for i= 1 to n for j= 1 to n suma= 0 for k= 1 to n suma= suma + a[i,
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
Trabajo Práctico Nº 4 Iteración
Trabajo Práctico Nº 4 Iteración Ejercicio 1: Realice una traza y muestre la salida de cada secuencia de instrucciones. for i:= 0 to 0 do for i:= 1 to -1 do for i:= 1 downto 0 do Ejercicio 2: Escriba un
Sistemas de ecuaciones lineales
Sistemas de ecuaciones lineales Sistemas de ecuaciones lineales Generalidades Definición [Sistema de ecuaciones lineales] Un sistema de m ecuaciones lineales con n incógnitas, es un conjunto de m igualdades
Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo
Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten
Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN
Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN - Introducción - Sintaxis - Semántica básica - Tipos de datos - Expresiones y enunciados - Procedimientos y ambientes - Tipos abstractos de datos y módulos
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
Para las ecuaciones diferenciales ordinarias no lineales no existen métodos generales.
Unidad IV: Sistemas continuos (continuación) Objetivo específico: Entender ampliamente el fenómeno del comportamiento de los modelos matemáticos para la resolución de problemas enfocados a las ecuaciones
Divide y vencerás. Dr. Eduardo A. RODRÍGUEZ TELLO. 7 de marzo de CINVESTAV-Tamaulipas
Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 7 de marzo de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Divide y vencerás 7 de marzo de 2018 1 / 50 1 Divide y vencerás Dr. Eduardo RODRÍGUEZ T. (CINVESTAV)
Sistemas de Ecuaciones Lineales y Matrices
Capítulo 4 Sistemas de Ecuaciones Lineales y Matrices El problema central del Álgebra Lineal es la resolución de ecuaciones lineales simultáneas Una ecuación lineal con n-incógnitas x 1, x 2,, x n es una
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
Técnicas y Herramientas. Algoritmos y Complejidad. Técnicas de Demostración. Técnicas y Herramientas. Herramientas Matemáticas Básicas
Técnicas y Herramientas Técnicas y Herramientas Pablo R. Fillottrani Depto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Primer Cuatrimestre 2014 Técnicas de Demostración Herramientas
Programación 1 Tema 5. Instrucciones simples y estructuradas
Programación 1 Tema 5 Instrucciones simples y estructuradas Índice Instrucciones simples Instrucciones estructuradas 2 Instrucción ::= 3 Instrucciones.
Algoritmos y Complejidad
Algoritmos y Complejidad Técnicas y Herramientas Pablo R. Fillottrani Depto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Primer Cuatrimestre 2014 Técnicas y Herramientas Técnicas
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)
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
Introducción a C++ Algoritmos y Estructuras de datos II Dra. Carmen Mezura Godoy. Febrero 2009
Introducción a C++ Algoritmos y Estructuras de datos II Dra. Carmen Mezura Godoy Febrero 2009 Índice Elementos básicos Ejecución de un programa Estructuras de control Ciclos Ejercicios 2 Elementos Básicos
Operaciones aritméticas
Operaciones aritméticas Operador aritmético Operación Ejemplo Resultado Potencia 4 3 64 Multiplicación 8.25 7 57.75 / División 15 / 4 3.75 Suma 125.78 62.50 188.28 Resta 65.30 32.33 32.97 mod Módulo (residuo)
Programación I. Ingeniería Técnica Informática. Ejercicios de los Temas 4, 5, 6 y 7
Estructuras selectivas Programación I Ingeniería Técnica Informática Ejercicios de los Temas 4, 5, 6 y 7 24.- Elabore un programa para determinar si una hora leída en la forma horas, minutos y segundos
Ejemplo: El problema de la mochila. Algoritmos golosos. Algoritmos y Estructuras de Datos III. Segundo cuatrimestre 2013
Técnicas de diseño de algoritmos Algoritmos y Estructuras de Datos III Segundo cuatrimestre 2013 Técnicas de diseño de algoritmos Algoritmos golosos Backtracking (búsqueda con retroceso) Divide and conquer
Expresión C. numérico Factor literal 9abc 9 abc
GUÍA DE REFUERZO DE ÁLGEBRA Un término algebraico es el producto de una o más variables (llamado factor literal) y una constante literal o numérica (llamada coeficiente). Ejemplos: 3xy ; 45 ; m Signo -
