Dr. Eduardo A. RODRÍGUEZ Tertello/algorithms/sesion13.pdf · Eliminación Gaussiana Resolución de...
Transcript of Dr. Eduardo A. RODRÍGUEZ Tertello/algorithms/sesion13.pdf · Eliminación Gaussiana Resolución de...
Transforma y vencerás
Dr. Eduardo A. RODRÍGUEZ TELLO
CINVESTAV-Tamaulipas
12 de marzo de 2018
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 1 / 73
1 Transforma y vencerásSimplificación de la instancia, pre-ordenamientoCambio de representaciónReducción del problema
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 2 / 73
Transforma y vencerás
Transforma y vencerás
Este grupo de técnicas resuelven un problema mediante unatransformación:
1 Simplificación de la instancia: una instancia más simple(conveniente) del mismo problema
2 Cambio de representación: se emplea una representacióndiferente de la misma instancia
3 Reducción del problema: Se transforma el problema a otrodiferente para el cuál existe un algoritmo eficiente conocido
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 3 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
1 Transforma y vencerásSimplificación de la instancia, pre-ordenamientoCambio de representaciónReducción del problema
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 4 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Simplificación de la instancia, pre-ordenamiento
Se resuelve la instancia del problema al transformarla en otra mássimple o fácil de resolver
Pre-ordenamiento:BúsquedaProblema de selección (cálculo de la media)Unicidad de elementos (verificar que todos los elementos sondistintos)
Además:El ordenamiento topológico ayuda a resolver algunos problemaspara DAGs (grafos dirigidos acíclicos)El pre-ordenamiento se emplea en muchos problemasgeométricos
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 5 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Búsqueda con pre-ordenamiento
Problema:Buscar un valor K en un arreglo A[0..n− 1]
Algoritmo basado en pre-ordenamiento:1 Ordenar el arreglo con un algoritmo eficiente, Θ(n log n)
2 Aplicar búsqueda binaria, O(log n)
Eficiencia: Θ(n log n) + O(log n) = Θ(n log n)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 6 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Unicidad de elementos
Problema:
Verificar que todos los elementos de un arreglo A[0..n− 1] sondistintos
Fuerza bruta:
Comparar todo los pares de elementos
Eficiencia: O(n2)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 7 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Unicidad de elementos con pre-ordenamiento
Análisis de la complejidad1 Ordenar el arreglo con un algoritmo eficiente, Θ(n log n)
2 Recorrer el arreglo verificando pares de elementos adyacentes,Θ(n)
Eficiencia: Θ(n log n) + Θ(n) = Θ(n log n)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 8 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Cálculo de la moda estadística
Problema:
Encontrar el valor que ocurre con mayor frecuencia en un arregloA[0..n− 1]
Fuerza bruta:
1 Recorre la lista calculando las frecuencias de todos los elementosdistintos
2 Encuentra el valor con la máxima frecuencia
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 9 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Cálculo de la moda estadística
El algoritmo de fuerza bruta se implementa con una lista auxiliarB que almacena los valores encontrados y su frecuenciaEn cada iteración el i-ésimo elemento de A se compara con losvalores encontrados (al recorrer B)Si se encuentra el elemento en B se incrementa su frecuencia,sino el elemento se agrega a B con frecuencia 1El peor caso de este algoritmo se da cuando la lista no tienevalores repetidos:
En cada iteración el i-ésimo elemento de A se compara con i− 1elementos en B antes de agregarse con frecuencia 1n∑
i=1
(i− 1) = 0 + 1 + . . . + (n− 1) =n(n− 1)
2∈ Θ(n2)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 10 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Cálculo de la moda estadística con pre-ordenamiento
Una alternativa es simplificar la instancia usandopre-ordenamientoEntonces todos los valores iguales en A estarán adyacentesPor lo tanto para calcular la moda estadística bastaría conencontrar el número mayor de elementos adyacentes iguales en A
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 11 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Cálculo de la moda estadística con pre-ordenamiento
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 12 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Cálculo de la moda estadística
Análisis de la complejidad
1 Ordenar el arreglo con un algoritmo eficiente, Θ(n log n)
2 Recorrer el arreglo verificando el número máximo de elementosadyacentes iguales, Θ(n)
Eficiencia: Θ(n log n) + Θ(n) = Θ(n log n)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 13 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Eliminación Gaussiana
Problema:
Resolver un sistema de n ecuaciones lineales con n incógnitas conuna matriz arbitraria de coeficientes (n es un número grande)
a11x1 + a12x2 + . . . + a1nxn = b1a21x1 + a22x2 + . . . + a2nxn = b2
......
an1x1 + an2x2 + . . . + annxn = bn
En notación matricialAx = b
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 14 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Eliminación Gaussiana
Simplificación de la instancia:
Se transforma en un sistema de n ecuaciones lineales con nincógnitas con una matriz de coeficientes en forma triangular superior
a′11x1 + a′12x2 + . . . + a′1nxn = b′1a′22x2 + . . . + a′2nxn = b′2
......
a′nnxn = b′n
En notación matricial
Ax = b =⇒ A′x = b′
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 15 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Eliminación Gaussiana
Resolución de la instancia:
La ventaja de tener un sistema de ecuaciones con una matriz decoeficientes en forma triangular superior es que este sistema seresuelve fácilmente haciendo substituciones hacia atrás:
Se inicia encontrando el valor de xn a partir de la última ecuación
Se substituye el valor xn encontrado en la penúltima ecuación paraencontrar xn−1
Y así sucesivamente hasta substituir los valores conocidos de lasúltimas (n− 1) variables en la primera ecuación para encontrar elvalor de x1
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 16 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Eliminación Gaussiana
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 17 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Eliminación Gaussiana
Eficiencia:
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 18 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Árboles de búsqueda balanceados
Los árboles binarios de búsqueda permiten aumentar la eficienciatemporal de las operaciones de búsqueda, inserción y borrado enel caso promedio: Θ(log n)
Sin embargo, en el peor caso estas operaciones tienencomplejidad Θ(n) porque el árbol puede degenerar en unocompletamente desbalanceado con altura n− 1
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 19 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Árboles de búsqueda balanceados
Existen diversos esfuerzos reportados en la literatura para crearestructuras de datos que permitan:
Preservar la eficiencia logarítmica de las operaciones básicas(búsqueda, inserción y borrado) en árboles binarios
Conservar los elementos ordenados
Evitar el peor caso
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 20 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Árboles de búsqueda balanceados
Entre ellos se distinguen dos enfoques principales:Mediante simplificación de la instancia: Un árbol binariodesbalanceado se reestructura mediante operaciones detransformación especiales (rotaciones) para balancearlo.
Mediante cambio de la representación: Se permite la existenciade más de un elemento en los nodos del árbol de búsqueda.
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 21 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Árboles de búsqueda balanceados
Mediante simplificación de la instancia:Árboles AVL
Árboles rojos-negros
Árboles biselados (splay)
Mediante cambio de la representación:Árboles multivía 2-3
Árboles multivía 2-3-4
Árboles B
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 22 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Árboles AVL
Definición
Un árbol AVL es un árbol binario de búsqueda en el cual el factorde balance de cada nodo, definido como la diferencia entre lasalturas de los subárboles izquierdo y derecho de un nodo, es iguala 0, 1 o -1. Un árbol vacío tiene altura -1.
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 23 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Árboles AVL
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 24 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Árboles AVL
Si una inserción o borrado de un nodo provoca que el árbol AVLse quede desbalanceado, éste debe ser reestructurado medianteuna operación de rotación para balancearlo
Existen cuatro tipos de rotaciones:Simple a la derecha (rotación R)Simple a la izquierda (rotación L)Doble izquierda derecha (rotación LR)Doble derecha izquierda (rotación RL)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 25 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Árboles AVL, rotaciones
Rotación L
Rotación R
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 26 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Árboles AVL, rotaciones
Rotación R
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 27 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Árboles AVL, rotaciones
Rotación LR
Rotación RL
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 28 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Árboles AVL, rotaciones
Rotación LR
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 29 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Árboles AVL, eficiencia
Su eficiencia está ligada a la altura h del árbolEspecíficamente la altura h de un árbol AVL con n nodossatisface:
blog2 nc ≤ h < 1.4405 log2(n + 2)− 1.3277
Esto implica que las operaciones de búsqueda e inserción sonΘ(log n) en el peor casoEn el caso promedio buscar en un árbol AVL requiereaproximadamente el mismo número de comparaciones que si serealiza la búsqueda binaria en un arreglo ordenadoLa operación de borrado pertenece también a la clase Θ(log n)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 30 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Árboles 2-3
Inventados por John Hopcroft en 1970
Poseen dos tipos de nodos: 2-nodo y 3-nodo
Todas sus hojas deben estar en el mismo nivel (perfectamentebalanceado en altura)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 31 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Árboles 2-3, ejemplo
Ejemplo: 9, 5, 8, 3, 2, 4, 7
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 32 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Árboles 2-3, eficiencia
Su eficiencia está ligada a la altura h del árbol. Encontremos lacota superior de h
Un árbol 2-3 de altura h con el menor número de valores (llaves)es un árbol completo de 2-nodos. Por lo tanto se tiene la siguienteinecuación:
n ≥ 1 + 2 + . . . + 2h = 2h+1 − 1,
por lo tantoh ≤ log2(n + 1)− 1
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 33 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Árboles 2-3, eficiencia
Por otra parte, un árbol 2-3 de altura h con el mayor número devalores (llaves) es un árbol completo de 3-nodos (cada uno condos valores y 3 hijos):
n ≥ 2(1) + 2(3) + . . . + 2(3h) = 2(1 + 3 + . . . + 3h) = 3h+1 − 1,
por lo tantoh ≥ log3(n + 1)− 1,
entonceslog3(n + 1)− 1 ≤ h ≤ log2(n + 1)− 1
Esto implica que las operaciones de búsqueda, inserción yborrado están todas en laclase Θ(log n) en el peor caso y en el caso promedio
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 34 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Ordenamiento por montículos (heaps)
Montículo (heap)Un montículo (max-heap) es un árbol binario con un valor (llave)en cada uno de sus nodos tal que cumple con las siguientespropiedades:
Forma: Es esencialmente completo, i.e., todos sus niveles estáncompletos excepto posiblemente el último, donde sólo los valoresmás a la derecha pueden faltarDominancia parental: El valor en cada nodo es mayor o igual quelos valores en sus hijos
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 35 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Ordenamiento por montículos (heaps)
Propiedades importantes de los montículos (heaps)Dado n, existe un único árbol binario con n nodos que esesencialmente completo, con h = blog2 nc
La raíz contiene siempre el valor más grande (max-heap), por elloson útiles para implementar colas de prioridad
El subárbol enraizado en cualquier nodo de un montículo estambién un montículo
Un montículo, por ser un árbol completo, puede ser implementadomediante un arreglo lo que simplifica su codificación
La eficiencia de las operaciones en los montículos es crucial endiversos algoritmos (Prim, Dijkstra, Código Huffman, B&B)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 36 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Montículos representados como arreglos
Los nodos padre están en las primeras bn/2c posiciones, lashojas en las dn/2e restantes
El hijo izquierdo del nodo en la posición j está en 2j con1 ≤ j ≤ bn/2c
El hijo derecho del nodo en la posición j está en 2j + 1
El padre del nodo en la posición j está en bj/2c para 2 ≤ j ≤ n
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 37 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Construcción del montículo (bottom-up)
Construcción bottom-up de un montículo1 Inicializar la estructura de un árbol binario completo con los n
valores en el orden dado
2 Iniciando con el último valor de los padres (i.e., el más a laderecha), fijar la raíz del montículo con este valor. Si no satisfacela condición del montículo (dominancia), continuar intercambiandoese valor con el de su hijo más grande hasta lograr que estacondición sea válida
3 Repetir el paso 2 para cada uno de los nodos padre predecesores
4 El algoritmo se detiene cuando el paso 2 se realizó para la raízdel árbol
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 38 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Construcción del montículo (bottom-up)
Ejemplo: 2, 9, 7, 6, 5, 8
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 39 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Construcción del montículo (bottom-up)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 40 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Construcción del montículo (bottom-up), eficiencia
Asumamos por simplicidad que tenemos un montículo completon = 2k − 1 y h = blog2 nc = dlog2 ne − 1 = k − 1
Cada llave en el nivel i del árbol viajará en el peor caso al nivel hde una hoja en el algoritmo de construcción
Dado que moverse al nivel inferior requiere dos comparaciones(una para encontrar el hijo más grande y otra para determinar sise requiere un intercambio) el número de comparaciones queinvolucran una llave en el nivel i sera 2(h− i)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 41 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Construcción del montículo (bottom-up), eficiencia
Entonces el número total de comparaciones en el peor caso delalgoritmo HeapBottomUp será:
Cworst(n) =
h−1∑i=0
∑llaves en
nivel i
2(h− i) =
h−1∑i=0
2(h− i)2i = 2(n− log2(n+1))
Por lo tanto usando este algoritmo se puede construir unmontículo de tamaño n con menos de 2n comparaciones
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 42 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Simplificación de la instancia, pre-ordenamiento
Ordenamiento por montículo (heapsort)1 Construir un montículo para una lista dada de n valores
2 Repetir la operación de remoción de la raíz n− 1 veces:Intercambia el valor de la raíz y el nodo en la hoja más a la derecha
Decrementa el tamaño del montículo en 1
Si es necesario, intercambia el valor de la nueva raíz con el de suhijo más grande hasta lograr que la condición del montículo(dominancia) sea válida
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 43 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Construcción del montículo (bottom-up)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 44 / 73
Transforma y vencerás Simplificación de la instancia, pre-ordenamiento
Construcción del montículo (bottom-up), eficienciaPeor caso:1. Construir un montículo para una lista dada de n valores
C(n) =
h−1∑i=0
2(h− i)2i = 2[n− log2(n + 1)] ∈ Θ(n)
donde 2i es el número de nodos en el nivel i
2. Repetir la operación de remoción de la raíz n− 1 veces (reparar montículo)
C(n) =
n−1∑i=1
2 log2 i ∈ Θ(n logn)
La complejidad de ambos pasos es entonces: Θ(n) + Θ(n logn) = Θ(n logn)Además, el caso promedio también es Θ(n logn) (misma clase que elmergesort)Eficiencia espacial: in-situ (in-place), i.e., no requiere espacio dealmacenamiento extraEs no estable, i.e., cambia el orden relativo de elementos con igual llave
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 45 / 73
Transforma y vencerás Cambio de representación
1 Transforma y vencerásSimplificación de la instancia, pre-ordenamientoCambio de representaciónReducción del problema
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 46 / 73
Transforma y vencerás Cambio de representación
Evaluación de polinomios
Problema de evaluación de polinomiosDado un polinomio de grado n
p(x) = anxn + an−1x
n−1 + . . . + a1x + a0
y un valor específico de x, encontrar el valor de p en ese punto.
Los polinomios constituyen una de las clases más importantes defunciones porque:
Poseen una gran cantidad de propiedades interesantesPueden ser usados en cálculo y análisis matemático paraaproximar cualquier otra función derivableTienen aplicaciones prácticas variadas en física, química,economía y las ciencias sociales
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 47 / 73
Transforma y vencerás Cambio de representación
Evaluación de polinomios
El problema de manipularlos eficientemente ha sido estudiadodesde hace varios siglos
La Regla de Horner es un algoritmo elegante y eficiente paraevaluar un polinomio (siglo XIX)
Es un buen ejemplo del uso de la técnica del cambio derepresentación al expresar p(x) en una nueva fórmula
p(x) = (. . . (anx + an−1)x + . . .)x + a0
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 48 / 73
Transforma y vencerás Cambio de representación
Regla de Horner
Ejemplo
p(x) = 2x4 − x3 + 3x2 + x− 5= x(2x3 − x2 + 3x + 1)− 5= x(x(2x2 − x + 3) + 1)− 5= x(x(x(2x− 1) + 3) + 1)− 5
Coef. 2 −1 3 1 −5
x = 3 2 3(2)− 1 = 5 3(5) + 3 = 18 3(18) + 1 = 55 3(55)− 5 = 160
2x− 1 x(2x− 1) + 3 x(x(2x− 1) + 3) x(x(x(2x− 1) + 3) + 1)− 5
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 49 / 73
Transforma y vencerás Cambio de representación
Regla de Horner, algoritmo
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 50 / 73
Transforma y vencerás Cambio de representación
Regla de Horner, eficiencia
El número de multiplicaciones M(n) y de adiciones A(n) estádado por la siguiente expresión:
M(n) = A(n) =
n−1∑i=0
1 = n
La eficiencia de la regla de Horner puede apreciarse más sitomamos en cuenta que evaluar por fuerza bruta el término degrado n del polinomio anx
n se requieren n multiplicaciones.
Mientras que el algoritmo de Horner usando n multiplicacionesevalúa además de este término los otros n− 1 del polinomio
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 51 / 73
Transforma y vencerás Cambio de representación
Exponenciación binaria
El excelente desempeño del algoritmo de Horner se diluye si seaplica el método al cálculo de an, el cual es el valor de xn parax = a
De hecho degenera en la complejidad del algoritmo de fuerzabruta que multiplica a por si mismo y realiza sumas innecesariasde ceros
Debido a que el cálculo de an (de hecho an mod m) es unaoperación esencial en diversos métodos de chequeo deprimalidad y de encriptación, veremos ahora un algoritmo basadoen la idea de cambio de representación
Este explota la representación binaria del exponenten = bI . . . bi . . . b0
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 52 / 73
Transforma y vencerás Cambio de representación
Exponenciación binaria
Esto significa que el valor de n puede calcularse como el valor delpolinomio siguiente en x = 2
p(x) = bIxI + . . . + bix
i + . . . + b0
Por ejemplo si n = 13 entonces su representación binaria es 1101y 13 = 1 · 23 + 1 · 22 + 0 · 21 + 1 · 20
Calculemos el valor de este polinomio con la regla de Horner yveamos lo que implica para el cálculo de la potencia
an = ap(2) = abIxI+...+bix
i+...+b0
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 53 / 73
Transforma y vencerás Cambio de representación
Exponenciación binaria
Regla de Horner para p(2)
p← 1for i← I − 1 downto 0 do
p← 2p + bi
Implicaciones para ap(2)
ap ← a1
for i← I − 1 downto 0 doap ← a2p+bi
Observemos que
a2p+bi = (ap)2 · abi =
{(ap)2 si bi = 0(ap)2 · a si bi = 1
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 54 / 73
Transforma y vencerás Cambio de representación
Exponenciación binaria
Ejemplo: calcular a13, entonces n = 13 = 11012
dígitos binarios de n 1 1 0 1
acumulador a a2 · a = a3 (a3)2 = a6 (a6)2 · a = a13
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 55 / 73
Transforma y vencerás Cambio de representación
Exponenciación binaria, eficiencia
Como el algoritmo realiza una o dos multiplicaciones en cadaiteración el número total de multiplicaciones M(n) para calcularan es
(b− 1) ≤M(n) ≤ 2(b− 1)
donde b es la longitud de la cadena de bits que representa elexponente n
Considerando que b− 1 = blog2 nc podemos concluir que laeficiencia del algoritmo de exponenciación binaria que acabamosde presentar es logarítmica
Esta es entonces mejor que la del algoritmo de fuerza bruta deexponenciación que resulta siempre en n− 1 multiplicaciones
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 56 / 73
Transforma y vencerás Reducción del problema
1 Transforma y vencerásSimplificación de la instancia, pre-ordenamientoCambio de representaciónReducción del problema
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 57 / 73
Transforma y vencerás Reducción del problema
Reducción del problema
Esta variante de la técnica transforma y vencerás resuelve unproblema al transformarlo en otro problema diferente para el cualexiste un algoritmo eficiente conocido.
Para que sea de utilidad práctica, el tiempo combinado de latransformación y la solución del otro problema debe ser máspequeño que cuando se resuelve el problema original con otroalgoritmo.
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 58 / 73
Transforma y vencerás Reducción del problema
Reducción del problema, ejemplos
Calcular el lcm(m,n) mediante el cálculo del gdc(m,n)
Calcular el número de caminos de longitud k en un grafo al elevarla matriz de adyacencia a la k potencia
Transformar un problema de maximización en uno deminimización y viceversa
Programación lineal
Reducción de problemas a grafos (e.g., resolver rompecabezasvía grafos estado-espacio)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 59 / 73
Transforma y vencerás Reducción del problema
Cálculo del mínimo común múltiplo
El mínimo común múltiplo de dos enteros m y n, denotadolcm(m,n), se define como el entero más pequeño que es divisiblepor ambos enteros m y n
Por ejemplo lcm(24, 60) = 120
Una forma de calcularlo es descomponer en factores primos m yn. Después se multiplican los factores comunes a m y n por losfactores primos que sólo aparecen en m por los factores primosque sólo aparecen en n:
24 = 2 · 2 · 2 · 360 = 2 · 2 · 3 · 5lcm(24, 60) = (2 · 2 · 3) · 2 · 5 = 120
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 60 / 73
Transforma y vencerás Reducción del problema
Cálculo del mínimo común múltiplo
Este procedimiento que acabamos de revisar es ineficiente
Una mejor opción se logra al efectuar una reducción del problemay aprovechar que existe un algoritmo eficiente para calcular elmáximo común divisor (algoritmo de Euclides), el cual es elproducto de todos los factores primos de m y n
Debido a que el producto del lcm(m,n) y gcd(m,n) incluye cadafactor de m y n exactamente una vez y en consecuencia es iguala el producto de m y n
Esta observación nos permite deducir la fórmula siguiente:
lcm(m,n) =m · n
gcd(m,n)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 61 / 73
Transforma y vencerás Reducción del problema
Conteo de caminos en un grafo
Nuestro siguiente problema es el de conteo de caminos delongitud k en un grafo
Una opción para resolverlo consiste en efectuar una reducción delproblema y aprovechar que el número de caminos de longitudk > 0 entre el vértice i y el vértice j de un grafo (dirigido o nodirigido) es igual al elemento (i, j) de la matriz de adyacencia Adel grafo elevada a k-ésima potencia (i.e., Ak)
Por lo tanto el problema de conteo de caminos de un grafo puedeser resuelto calculando potencia adecuada de su matriz deadyacencia
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 62 / 73
Transforma y vencerás Reducción del problema
Conteo de caminos en un grafo
A =
0 1 1 11 0 0 01 0 0 11 0 1 0
A2 =
3 0 1 10 1 1 11 1 2 11 1 1 2
Hay tres caminos de longitud dos que inician y terminan en a:a→ b→ a, a→ c→ a, y a→ d→ a
Pero sólo uno de longitud dos entre a y c: a→ d→ c
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 63 / 73
Transforma y vencerás Reducción del problema
Programación lineal
Muchos problemas de toma de decisiones pueden ser reducidosa una instancia de un problema de Programación Lineal (PL)
El término PL define una clase particular de problemas donde sebusca optimizar una función lineal (función objetivo) de variasvariables sujeta a restricciones expresadas en forma deecuaciones (o inecuaciones) lineales
Las técnicas de PL son ampliamente utilizadas para resolver unadiversidad de problemas militares, económicos, industriales ysociales
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 64 / 73
Transforma y vencerás Reducción del problema
Programación lineal, ejemplo problema de producción
Una fabrica de hilos y tejidos requiere fabricar dos tejidos decalidad diferente T1 y T2
Se dispone de 500 Kg de hilo a, 300 Kg de hilo b y 108 Kg de hilo c
Para obtener un metro de T1 diariamente se necesitan 120 gr dehilo a, 150 gr de b y 72 gr de c
Para producir un metro de T2 por día se necesitan 200 gr de a,100 gr de b y 27 gr de c
El tejido T1 se vende a $4,000 el metro y el T2 a $5,000 el metro
Si se debe obtener la máxima ganancia, ¿cuántos metros de T1 yT2 se deben fabricar?
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 65 / 73
Transforma y vencerás Reducción del problema
Programación lineal, ejemplo problema de producción
Paso 1. Identificar las variables de decisión
Las variables de decisión en este problema son xT1 y xT2
Estas representan el número de metros diarios a fabricar de lostejidos T1 y T2
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 66 / 73
Transforma y vencerás Reducción del problema
Programación lineal, ejemplo problema de producción
Paso 2. Expresar restricciones como ecuaciones linealesDado que:
1 m de T1 requiere 120 gr de hilo a, 150 gr de b y 72 gr de c1 m de T2 requiere 200 gr de hilo a, 100 gr de b y 27 gr de cSe dispone de un máximo de kilogramos de cada hilo (a, b, c): 500,300 y 108
Podemos escribir las siguientes restricciones:
0.120xT1 + 0.200xT2 ≤ 500 hilo a0.150xT1 + 0.100xT2 ≤ 300 hilo b0.072xT1 + 0.027xT2 ≤ 108 hilo c
Las restricciones de no negatividad no son necesarias pues setrata de un problema de maximización (se recomienda incluirlasen minimización)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 67 / 73
Transforma y vencerás Reducción del problema
Programación lineal, ejemplo problema de producción
Paso 3. Escribir función objetivo (lineal)
Las ganancias de la compañía son de dos tipos: (1) El tejido T1 sevende a $4,000 el metro y (2) el T2 a $5,000 el metro
Por lo tanto la función objetivo a maximizar es:
Z = 4000xT1 + 5000xT2
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 68 / 73
Transforma y vencerás Reducción del problema
Programación lineal, ejemplo problema de producción
La formulación completa del problema de PL es la siguiente:
Maximizar: Z = 4000xT1 + 5000xT2
Sujeto a: 0.120xT1 + 0.200xT2 ≤ 500
0.150xT1 + 0.100xT2 ≤ 300
0.072xT1 + 0.027xT2 ≤ 108
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 69 / 73
Transforma y vencerás Reducción del problema
Programación lineal, en forma canónica
La forma estándar de un problema de PL con m restricciones y nvariables puede ser representado así:
Minimizar: Z = c1x1 + c2x2 + . . . + cnxnSujeto a: a11x1 + a12x2 + . . . + a1nxn ≤ b1
a21x1 + a22x2 + . . . + a2nxn ≤ b2...
am1x1 + am2x2 + . . . + amnxn ≤ bmx1, x2, . . . , xn ≥ 0
b1, b2, . . . , bn ≥ 0
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 70 / 73
Transforma y vencerás Reducción del problema
Programación lineal, en forma canónica
Una función lineal como 2x1 − 3x2 + 8x3 puede escribirse como elproducto punto de dos vectores:
c =
2−3
8
y x =
x1x2x3
Esto puede expresarse como:
c · x o cTx
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 71 / 73
Transforma y vencerás Reducción del problema
Programación lineal, en forma canónica
De igual forma las restricciones lineales pueden representarse enforma matriz-vector
x1 ≤ 200
x2 ≤ 300
x1 + x2 ≤ 400
=⇒
1 0
0 1
1 1
︸ ︷︷ ︸
(x1
x2
)≤
200
300
400
︸ ︷︷ ︸
A x ≤ b
Cada fila de la matriz A corresponde a una restricción
ai · x ≤ bi para toda i = 1, 2, . . . ,m
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 72 / 73
Transforma y vencerás Reducción del problema
Programación lineal, en forma canónica
Usando esta conveniente notación podemos expresar unproblema de PL en forma canónica como:
Minimizar: cTx
Sujeto a: Ax ≤ b
x ≥ 0
A es la matriz de coeficientes, x el vector de decisión, b el vectorde requerimientos, y c el vector de costo (ganancia)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Transforma y vencerás 12 de marzo de 2018 73 / 73