Análisis de Algoritmos: Teoría y Aplicaciones

Documentos relacionados
Complejidad computacional (Análisis de Algoritmos)

La eficiencia de los programas

INTRODUCCIÓN AL ANÁLISIS DE DATOS ORIENTACIONES (TEMA Nº 7)

Unidad 1: Espacio de Probabilidad

F U N D A D O POR DON 0SE B A T l L E Y O R D O Ñ E Z EL > 6 DE J U N I O DE « '»eriarclóo 0 E O O A4 I N C O A LLAMENOS CHURRASOUERA

Análisis y Diseño de Algoritmos

Pruebas de Acceso a las Universidades de Castilla y León

T E X T O D E L M A N U A L D E H T M L, W E B M A E S T R O, P O R F R A N C I S C O A R O C E N A

1. Ecuaciones de recurrencia

Bachillerato Internacional. Matemáticas Nivel Medio. Programa para el curso 1º ( )

CONTENIDOS MÍNIMOS MATEMÁTICAS 2º Y 4º E.S.O.

Unidad Temática 3: Probabilidad y Variables Aleatorias

TEMARIO DE PROFESORES DE ENSEÑANZA SECUNDARIA MATEMÁTICAS

1 Método de la bisección. 1.1 Teorema de Bolzano Teorema 1.1 (Bolzano) Contenido

1. Los números reales. 2. Representación. 3. Densidad de los números racionales. 4. Propiedades de los números reales

10. Series de potencias

Derivadas Parciales (parte 2)

Notas de NdeCColaboración

Así tenemos el siguiente teorema: Sea f una función analítica en un disco Entonces f admite la representación de potencias:

Clase. 1. Resolución de sistemas de ecuaciones lineales: preliminares

Contenidos IB-Test Matemática NM 2014.

Nº Hermanos 30 Alumnos X i f i P(X i ) 0 8 0, , , , , ,00

Dom(R 1 ) = {1;2} Rang(R 1 ) = {1;2}

ANOVA. Análisis de la Varianza. Univariante Efectos fijos Muestras independientes

Órdenes de la convergencia de sucesiones. Condiciones de la convergencia lineal y cuadrática del método de iteración simple

Espacios topológicos. 3.1 Espacio topológico

Tema 3. Análisis de costes

Fundamentos de la Teoría de la Probabilidad. Ing. Eduardo Cruz Romero

Ecuaciones Diofánticas

Tema 8: Aplicaciones. Ecuaciones en. diferencias: modelos en tiempo discreto. 1 Modelo de crecimiento exponencial. 2 Sucesión de Fibonacci

Tema 13: Distribuciones de probabilidad. Estadística

Econometría II Grado en finanzas y contabilidad

CUARTO DE ESO. MATEMÁTICAS A

Métodos Numéricos: Ejercicios resueltos

Algoritmos genéticos

Clase 10: Extremos condicionados y multiplicadores de Lagrange

Análisis de Algoritmos

Aplicaciones del análisis combinatorio

OBJETIVOS DE MATEMÁTICAS B 4º DE ESO

Expresión decimal. Aproximación y estimación. Notación científica. Polinomios. Divisibilidad de polinomios. Regla de Ruffini.

Cálculo y EstadísTICa. Primer Semestre.

Cap. 5 : Distribuciones muestrales

18 Experimentos aleatorios. Sucesos y espacio muestral. Frecuencia y probabilidad de un suceso.

Análisis y Diseño de Algoritmos

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Capítulo 3: Técnicas de Conteo Clase 2: Permutaciones y Combinaciones, Coeficientes Binomiales y Aplicaciones a Probabilidad Discreta

PROBABILIDAD Y ESTADÍSTICA

viii CAPÍTULO 2 Métodos de muestreo CAPÍTULO 3 Análisis exploratorio de datos

La desviación típica y otras medidas de dispersión

6. PROGRAMACIÓN DEL CURSO 4º A DE E. S. O.

Introducción. Flujo Eléctrico.

PLAN DE CURSO PC-01 FO-TESE-DA-09 DIRECCIÓN ACADÉMICA DIVISIÓN DE INGENIERÍA ELECTRÓNICA. Según Corresponda CALCULO INTEGRAL TURNO: 1201/1 251

GUÍA DE LA UNIDAD FUNCIONES : DERIVADAS

Distribuciones de Probabilidad

1. Los números racionales. 2. Operaciones con racionales. 3. Clasificación de los decimales. 4. Irracionales. (representación, orden).

CÁLCULO DE PROBABILIDADES

Límites y Continuidad

CURSO CERO DE MATEMATICAS. Apuntes elaborados por Domingo Pestana Galván. y José Manuel Rodríguez García

Tablas de dispersión (hash tables)

Calendario Lenguaje Matemática Inglés Hist. Cs.Soc Cs.Nat (1º -8º Básico) 17 de Junio 23 de Junio 28 de Junio 30 de Junio 4 de Julio

JUNIO Opción A

INTERVALOS DE CONFIANZA Julián de la Horra Departamento de Matemáticas U.A.M.

PLANES CURRICULARES GRADO9º/ 01 PERIODO

Práctica IV: Métodos de Newton-Raphson y de la secante, para encontrar las raíces de una función.

HOJA DE TRABAJO UNIDAD 3

Unidad II: Fundamentos de la teoría de probabilidad

UNIDAD DIDÁCTICA 9: Límites y continuidad

Pruebas de Acceso a las Universidades de Castilla y León

Fórmula integral de Cauchy

APUNTES DOCENTES ASIGNATURA: ANALISIS NUMERICO ASIGNATURA: ANALISIS NUMERICO UNIDADES TECNOLÓGICAS DE SANTANDER

El Teorema de Recurrencia de Poincaré

Cálculo de una y varias variables (con prácticas en wxmaxima) M.ª Victoria Sebastián Guerrero M.ª Antonia Navascués Sanagustín

LÍMITES Y CONTINUIDAD

Simulación I. Investigación Operativa, Grado en Estadística y Empresa, 2011/12

Bloque 1. Contenidos comunes. (Total: 3 sesiones)

PARTE COMÚN MATERIA: FUNDAMENTOS DE MATEMÁTICAS

Ejemplo: El problema de la mochila. Algoritmos golosos. Algoritmos y Estructuras de Datos III. Segundo cuatrimestre 2013

Procesos estocásticos Cadenas de Márkov

Unidad V. 5.1 Recta tangente y recta normal a una curva en un punto. Curvas ortogonales.

Teoría de números. Herbert Kanarek Universidad de Guanajuato Enero Junio Eugenio Daniel Flores Alatorre

Muestreo de variables aleatorias

El Algoritmo E-M. José Antonio Camarena Ibarrola

Algoritmos de Ordenamiento

7.- Teorema integral de Fourier. Transformada de Fourier

SEPTIEMBRE Opción A

Preliminares Interpolación INTERPOLACIÓN Y APROXIMACIÓN POLINOMIAL

Tema Contenido Contenidos Mínimos

13. Series de Laurent.

ÁÒ Ò Ö Ð ½ º Ä Â Ù ½ ½ ½ º½ºÂ Ù ¹ Ð ÀÓÑ Ö º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½ ½ º¾ºÄ Ê Ð ÓÒ Â Ù º º º º º º º

Programa de: CALCULO I Clave MAT-1500 Créditos: 03. Cátedra: Análisis I (A C) Horas/Semana Preparado por: Pablo C. Smester, Carlos Feliz

LÍMITES DE FUNCIONES

Tema 7: Derivada de una función

Generación de variables aleatorias continuas Método de la transformada inversa

I.E.S. DE INGENIO Avda. de los Artesanos, INGENIO POC-PC EVALUACIÓN CONTENIDOS MÍNIMOS CURSO CURSO: 1º BACH.

Tema 6: Trigonometría.

Análisis Numérico para Ingeniería. Clase Nro. 3

MATEMÁTICAS 2º BACHILLERATO

OPTIMIZACIÓN Y SIMULACIÓN PARA LA EMPRESA. Tema 4 Optimización no Lineal

DESIGUALDADES. AXIOMA 1.- Tricotomía de los números reales. Si a y b son números reales entonces se cumple una y solo una de las relaciones

Transcripción:

Análisis de Algoritmos: Teoría y Aplicaciones Conrado Martínez Univ. Politècnica de Catalunya Universidad de Zaragoza Junio 2008

1 Introducción 2 Ejemplos 3 Técnicas

Introducción El Análisis de Algoritmos tiene como objetivo describir de manera muy precisa y detallada la eficiencia de algoritmos, en particular, en situaciones típicas. Los escenarios de caso peor pueden ser muy infrecuentes µ el análisis de caso peor pierde relevancia y capacidad predictiva La notación asintótica oculta demasiados detalles µ perdemos capacidad comparativa entre algoritmos asintóticamente equivalentes o muy próximos Queremos conocer la eficiencia en casos típicos o mejor aún la distribución probabilística Para algoritmos aleatorizados, el análisis probabilístico es la herramienta adecuada

Introducción El Análisis de Algoritmos tiene como objetivo describir de manera muy precisa y detallada la eficiencia de algoritmos, en particular, en situaciones típicas. Los escenarios de caso peor pueden ser muy infrecuentes µ el análisis de caso peor pierde relevancia y capacidad predictiva La notación asintótica oculta demasiados detalles µ perdemos capacidad comparativa entre algoritmos asintóticamente equivalentes o muy próximos Queremos conocer la eficiencia en casos típicos o mejor aún la distribución probabilística Para algoritmos aleatorizados, el análisis probabilístico es la herramienta adecuada

Introducción El Análisis de Algoritmos tiene como objetivo describir de manera muy precisa y detallada la eficiencia de algoritmos, en particular, en situaciones típicas. Los escenarios de caso peor pueden ser muy infrecuentes µ el análisis de caso peor pierde relevancia y capacidad predictiva La notación asintótica oculta demasiados detalles µ perdemos capacidad comparativa entre algoritmos asintóticamente equivalentes o muy próximos Queremos conocer la eficiencia en casos típicos o mejor aún la distribución probabilística Para algoritmos aleatorizados, el análisis probabilístico es la herramienta adecuada

Introducción El Análisis de Algoritmos tiene como objetivo describir de manera muy precisa y detallada la eficiencia de algoritmos, en particular, en situaciones típicas. Los escenarios de caso peor pueden ser muy infrecuentes µ el análisis de caso peor pierde relevancia y capacidad predictiva La notación asintótica oculta demasiados detalles µ perdemos capacidad comparativa entre algoritmos asintóticamente equivalentes o muy próximos Queremos conocer la eficiencia en casos típicos o mejor aún la distribución probabilística Para algoritmos aleatorizados, el análisis probabilístico es la herramienta adecuada

Introducción Unos cuantos ejemplos Quicksort Find (también conocido como Quickselect) Hashing Simplex Estructuras de datos aleatorizadas (skip lists, árboles de búsqueda aleatorizados)

Introducción Unos cuantos ejemplos Quicksort Find (también conocido como Quickselect) Hashing Simplex Estructuras de datos aleatorizadas (skip lists, árboles de búsqueda aleatorizados)

Introducción Unos cuantos ejemplos Quicksort Find (también conocido como Quickselect) Hashing Simplex Estructuras de datos aleatorizadas (skip lists, árboles de búsqueda aleatorizados)

Introducción Unos cuantos ejemplos Quicksort Find (también conocido como Quickselect) Hashing Simplex Estructuras de datos aleatorizadas (skip lists, árboles de búsqueda aleatorizados)

Introducción Unos cuantos ejemplos Quicksort Find (también conocido como Quickselect) Hashing Simplex Estructuras de datos aleatorizadas (skip lists, árboles de búsqueda aleatorizados)

1 Introducción 2 Ejemplos Ejemplo #1: Ordenación parcial Ejemplo #2: Fallos de predicción Ejemplo #3: El problema de la contratación 3 Técnicas

Ordenación parcial Ordenación parcial: dado un vector de Ò elementos y un valor ½ Ñ Ò, reorganizar de tal manera que sus Ñ primeras posiciones contengan los Ñ menores elementos de en orden creciente Si Ñ Òµ entonces OK ordenar el vector; sino, demasiado trabajo... much work

Ordenación parcial Ordenación parcial: dado un vector de Ò elementos y un valor ½ Ñ Ò, reorganizar de tal manera que sus Ñ primeras posiciones contengan los Ñ menores elementos de en orden creciente Si Ñ Òµ entonces OK ordenar el vector; sino, demasiado trabajo... much work

Soluciones usuales Idea #1: Heapsort parcial Construir un heap con los Ò elementos y hacer Ñ extracciones del mínimo del heap El coste en caso peor es Ò Ñ ÐÓ Òµ Esta es la forma tradicional de implementar Ô ÖØ Ð ÓÖØ en la STL de C++

Soluciones usuales Idea #1: Heapsort parcial Construir un heap con los Ò elementos y hacer Ñ extracciones del mínimo del heap El coste en caso peor es Ò Ñ ÐÓ Òµ Esta es la forma tradicional de implementar Ô ÖØ Ð ÓÖØ en la STL de C++

Soluciones usuales Idea #1: Heapsort parcial Construir un heap con los Ò elementos y hacer Ñ extracciones del mínimo del heap El coste en caso peor es Ò Ñ ÐÓ Òµ Esta es la forma tradicional de implementar Ô ÖØ Ð ÓÖØ en la STL de C++

Soluciones usuales Idea #2: Selección on line Construir un heap con los Ñ primeros elementos, luego recorrer los restantes Ò Ñ elementos actualizando el heap adecuadamente; finalmente extraer los Ñ elementos del heap El coste en caso peor es Ò ÐÓ Ñµ No es una solución interesante a menos que Ñ sea muy pequeña o que los Ò elementos no estén disponibles desde el principio y nos vayan llegando on line

Soluciones usuales Idea #2: Selección on line Construir un heap con los Ñ primeros elementos, luego recorrer los restantes Ò Ñ elementos actualizando el heap adecuadamente; finalmente extraer los Ñ elementos del heap El coste en caso peor es Ò ÐÓ Ñµ No es una solución interesante a menos que Ñ sea muy pequeña o que los Ò elementos no estén disponibles desde el principio y nos vayan llegando on line

Soluciones usuales Idea #2: Selección on line Construir un heap con los Ñ primeros elementos, luego recorrer los restantes Ò Ñ elementos actualizando el heap adecuadamente; finalmente extraer los Ñ elementos del heap El coste en caso peor es Ò ÐÓ Ñµ No es una solución interesante a menos que Ñ sea muy pequeña o que los Ò elementos no estén disponibles desde el principio y nos vayan llegando on line

Soluciones usuales Idea #3: Quickselsort Hallar el Ñ ésimo menor elemento usando quickselect, y luego hacer quicksort sobre los Ñ ½ elementos que lo preceden El coste promedio es Ò Ñ ÐÓ Ñµ Usa dos algoritmos básicos ampliamente disponibles y bien optimizados en las bibliotecas estándar

Soluciones usuales Idea #3: Quickselsort Hallar el Ñ ésimo menor elemento usando quickselect, y luego hacer quicksort sobre los Ñ ½ elementos que lo preceden El coste promedio es Ò Ñ ÐÓ Ñµ Usa dos algoritmos básicos ampliamente disponibles y bien optimizados en las bibliotecas estándar

Soluciones usuales Idea #3: Quickselsort Hallar el Ñ ésimo menor elemento usando quickselect, y luego hacer quicksort sobre los Ñ ½ elementos que lo preceden El coste promedio es Ò Ñ ÐÓ Ñµ Usa dos algoritmos básicos ampliamente disponibles y bien optimizados en las bibliotecas estándar

Partial quicksort ÚÓ Ô ÖØ Ð ÕÙ ÓÖØ Ú ØÓÖ Ð Ñ ² ÒØ ÒØ ÒØ Ñµ ß µ ß ÒØ Ô Ø Ô ÚÓØ µ Û Ô Ô Ð µ ÒØ Ô ÖØ Ø ÓÒ µ Ô ÖØ Ð ÕÙ ÓÖØ ¹ ½ Ñ µ Ñ ¹ ½µ Ô ÖØ Ð ÕÙ ÓÖØ ½ Ñ µ Ð Ð

Análisis de Partial Quicksort Probabilidad de que el pivote elegido sea el ésimo de entre los Ò elementos: Ò Número medio de comparaciones È Ò Ñ para ordenar los Ñ menores elementos de entre Ò: È Ò Ñ Ò ½ Ò Ñ ½ Ò È ½ Ñ Ñ ½ Ò È ½ ½ È Ò Ñ µ

Análisis de Partial Quicksort Probabilidad de que el pivote elegido sea el ésimo de entre los Ò elementos: Ò Número medio de comparaciones È Ò Ñ para ordenar los Ñ menores elementos de entre Ò: È Ò Ñ Ò ½ Ò Ñ ½ Ò È ½ Ñ Ñ ½ Ò È ½ ½ È Ò Ñ µ

Análisis de Partial Quicksort Si Ñ Ò, partial quicksort quicksort; sea Õ Ò el número medio de comparaciones que hace quicksort La recurrencia queda así È Ò Ñ Ò ½ Ò Ñ ½ Ñ ½ Ò Õ ½ Ò È ½ Ñ Ñ ½ Ò È Ò Ñ µ

Análisis de Partial Quicksort Si Ñ Ò, partial quicksort quicksort; sea Õ Ò el número medio de comparaciones que hace quicksort La recurrencia queda así È Ò Ñ Ò ½ Ò Ñ ½ Ñ ½ Ò Õ ½ Ò È ½ Ñ Ñ ½ Ò È Ò Ñ µ

Qué es un fallo de predicción? En el hardware moderno se ejecutan varias instrucciones simultáneamente usando un arquitectura en pipeline: p.e., mientras se decodifica la instrucción, se están obtienendo de la memoria los datos de la instrucción ½, operando los de la ¾ y almacenando el resultado de la El problema serio lo constituyen las instrucciones de salto, pues dependiendo del resultado el flujo de instrucciones seguirá por un lado o por otro.

Qué es un fallo de predicción? En el hardware moderno se ejecutan varias instrucciones simultáneamente usando un arquitectura en pipeline: p.e., mientras se decodifica la instrucción, se están obtienendo de la memoria los datos de la instrucción ½, operando los de la ¾ y almacenando el resultado de la El problema serio lo constituyen las instrucciones de salto, pues dependiendo del resultado el flujo de instrucciones seguirá por un lado o por otro.

Qué es un fallo de predicción? Para aprovechar al máximo el paralelismo, muchos procesadores modernos utilizan algún mecanismo para predecir cúal será el resultado de una instrucción de salto. Si hay un fallo en la predicción (branch misprediction) hay que tomar medidas para desandar todo lo incorrectamente realizado... Cada fallo de predicción tiene un coste alto y un alto impacto en la eficiencia del algoritmo ejecutado.

Qué es un fallo de predicción? Para aprovechar al máximo el paralelismo, muchos procesadores modernos utilizan algún mecanismo para predecir cúal será el resultado de una instrucción de salto. Si hay un fallo en la predicción (branch misprediction) hay que tomar medidas para desandar todo lo incorrectamente realizado... Cada fallo de predicción tiene un coste alto y un alto impacto en la eficiencia del algoritmo ejecutado.

Fallos de predicción en quicksort La implementación típica de quicksort particiona en cada etapa recursiva el array dado mediante dos bucles internos uno recorre el array de izquierda a derecha haciendo crecer la zona de elementos menores que el pivote el otro recorre el array de derecha a izquierda haciendo crecer la zona de elementos mayores que el pivote. Aquí estudiaremos un predictor sencillo: se predice que cada rama condicional tendrá el mismo resultado que la vez anterior (1 bit predictor).

Fallos de predicción en quicksort Tenemos una permutación aleatoria de ½ Ò que recorremos de izquierda a derecha. Supongamos que ½. Para ¾, diremos que hay un fallo de predicción (FP) a la izquierda siempre que ½ y, o ½ y. Para Ò, hay un fallo de predicción a la derecha si ½ y, o ½ y. Además, hay un FP a la izquierda si ¾ y un FP a la derecha si Ò.

Fallos de predicción en quicksort Tenemos una permutación aleatoria de ½ Ò que recorremos de izquierda a derecha. Supongamos que ½. Para ¾, diremos que hay un fallo de predicción (FP) a la izquierda siempre que ½ y, o ½ y. Para Ò, hay un fallo de predicción a la derecha si ½ y, o ½ y. Además, hay un FP a la izquierda si ¾ y un FP a la derecha si Ò.

Fallos de predicción en quicksort Tenemos una permutación aleatoria de ½ Ò que recorremos de izquierda a derecha. Supongamos que ½. Para ¾, diremos que hay un fallo de predicción (FP) a la izquierda siempre que ½ y, o ½ y. Para Ò, hay un fallo de predicción a la derecha si ½ y, o ½ y. Además, hay un FP a la izquierda si ¾ y un FP a la derecha si Ò.

Simplificando el modelo Para analizar el número medio de FPs, necesitaremos averiguar el número medio de FPs condicionado a que el pivote elegido sea el ésimo elemento del array. Transformamos el problema original en uno de conteo de strings de bits. Dado un string Ü de longitud que comienza con un 0 y contiene en total Ø ½ 0 s, el número de FPs izquierdos es el número de veces que hay un 0 seguido de 1 o un 1 seguido de un 0 en Ü. A una permutación le corresponde un string Ü con Ü ¼ si ½, y Ü ½ en otro caso.

Simplificando el modelo Para analizar el número medio de FPs, necesitaremos averiguar el número medio de FPs condicionado a que el pivote elegido sea el ésimo elemento del array. Transformamos el problema original en uno de conteo de strings de bits. Dado un string Ü de longitud que comienza con un 0 y contiene en total Ø ½ 0 s, el número de FPs izquierdos es el número de veces que hay un 0 seguido de 1 o un 1 seguido de un 0 en Ü. A una permutación le corresponde un string Ü con Ü ¼ si ½, y Ü ½ en otro caso.

Simplificando el modelo Para analizar el número medio de FPs, necesitaremos averiguar el número medio de FPs condicionado a que el pivote elegido sea el ésimo elemento del array. Transformamos el problema original en uno de conteo de strings de bits. Dado un string Ü de longitud que comienza con un 0 y contiene en total Ø ½ 0 s, el número de FPs izquierdos es el número de veces que hay un 0 seguido de 1 o un 1 seguido de un 0 en Ü. A una permutación le corresponde un string Ü con Ü ¼ si ½, y Ü ½ en otro caso.

Simplificando el modelo 0 A 1 1 B 0 En términos de este autómata querremos saber cuántos strings Ü de longitud con Ø ½ 0 s saltan Ö veces de un estado a otro: las flechas entre los estados A y B corresponden a FPs!

El problema de la contratación Originalmente propuesto por Broder et al. (SODA 2008) Una secuencia (potencialmente infinita) de variables aleatorias i.i.d. É, distribuídas uniformemente en ¼ ½ En el paso, se contrata o se descarta al candidato basándose en su puntuación É Las decisiones tomadas son irrevocables; no se conoce el futuro. Objetivo: contratar candidatos a un ritmo razonable para garantizar un crecimiento suficiente de la compañía, manteniendo un buen estándar de calidad (de hecho mejorándolo progresivamente) en la plantilla

El problema de la contratación Originalmente propuesto por Broder et al. (SODA 2008) Una secuencia (potencialmente infinita) de variables aleatorias i.i.d. É, distribuídas uniformemente en ¼ ½ En el paso, se contrata o se descarta al candidato basándose en su puntuación É Las decisiones tomadas son irrevocables; no se conoce el futuro. Objetivo: contratar candidatos a un ritmo razonable para garantizar un crecimiento suficiente de la compañía, manteniendo un buen estándar de calidad (de hecho mejorándolo progresivamente) en la plantilla

El problema de la contratación Originalmente propuesto por Broder et al. (SODA 2008) Una secuencia (potencialmente infinita) de variables aleatorias i.i.d. É, distribuídas uniformemente en ¼ ½ En el paso, se contrata o se descarta al candidato basándose en su puntuación É Las decisiones tomadas son irrevocables; no se conoce el futuro. Objetivo: contratar candidatos a un ritmo razonable para garantizar un crecimiento suficiente de la compañía, manteniendo un buen estándar de calidad (de hecho mejorándolo progresivamente) en la plantilla

El problema de la contratación Originalmente propuesto por Broder et al. (SODA 2008) Una secuencia (potencialmente infinita) de variables aleatorias i.i.d. É, distribuídas uniformemente en ¼ ½ En el paso, se contrata o se descarta al candidato basándose en su puntuación É Las decisiones tomadas son irrevocables; no se conoce el futuro. Objetivo: contratar candidatos a un ritmo razonable para garantizar un crecimiento suficiente de la compañía, manteniendo un buen estándar de calidad (de hecho mejorándolo progresivamente) en la plantilla

El problema de la contratación Originalmente propuesto por Broder et al. (SODA 2008) Una secuencia (potencialmente infinita) de variables aleatorias i.i.d. É, distribuídas uniformemente en ¼ ½ En el paso, se contrata o se descarta al candidato basándose en su puntuación É Las decisiones tomadas son irrevocables; no se conoce el futuro. Objetivo: contratar candidatos a un ritmo razonable para garantizar un crecimiento suficiente de la compañía, manteniendo un buen estándar de calidad (de hecho mejorándolo progresivamente) en la plantilla

El problema de la contratación Modelizamos el problema mediante una permutación de longitud Ò; el candidato tiene puntuación µ, de manera que 1 es la peor puntuación y Ò la mejor Este modelo es equivalente al anterior tras hacer un normalización apropiada y el paso al límite, pero tiene la ventaja de que podemos aplicar técnicas de combinatoria analítica Nos interesa analizar parámetros tales como la puntuación media del último candidato contratado o el tamaño medio de la plantilla, en función del número de entrevistas Ò (= longitud de la permutación)

El problema de la contratación Modelizamos el problema mediante una permutación de longitud Ò; el candidato tiene puntuación µ, de manera que 1 es la peor puntuación y Ò la mejor Este modelo es equivalente al anterior tras hacer un normalización apropiada y el paso al límite, pero tiene la ventaja de que podemos aplicar técnicas de combinatoria analítica Nos interesa analizar parámetros tales como la puntuación media del último candidato contratado o el tamaño medio de la plantilla, en función del número de entrevistas Ò (= longitud de la permutación)

El problema de la contratación Modelizamos el problema mediante una permutación de longitud Ò; el candidato tiene puntuación µ, de manera que 1 es la peor puntuación y Ò la mejor Este modelo es equivalente al anterior tras hacer un normalización apropiada y el paso al límite, pero tiene la ventaja de que podemos aplicar técnicas de combinatoria analítica Nos interesa analizar parámetros tales como la puntuación media del último candidato contratado o el tamaño medio de la plantilla, en función del número de entrevistas Ò (= longitud de la permutación)

El problema de la contratación Algunas de las estrategias analizadas: Por encima de un umbral Por encima del mejor Por encima del Ñ ésimo mejor (contratación por la élite) Por encima de la media Por encima de la mediana

1 Introducción 2 Ejemplos 3 Técnicas

Preliminares La eficiencia de un algoritmo con entradas del conjunto Á ( Á Æ) depende de cada instancia particular Necesitamos una noción de tamaño de la entrada: Á Æ Podemos asumir que cada Á Ò Ü ¾ Á Ü Ò es finito Caso peor [worst] Òµ Ñ Ü Üµ Ü ¾ Á Ò

Preliminares La eficiencia de un algoritmo con entradas del conjunto Á ( Á Æ) depende de cada instancia particular Necesitamos una noción de tamaño de la entrada: Á Æ Podemos asumir que cada Á Ò Ü ¾ Á Ü Ò es finito Caso peor [worst] Òµ Ñ Ü Üµ Ü ¾ Á Ò

Preliminares La eficiencia de un algoritmo con entradas del conjunto Á ( Á Æ) depende de cada instancia particular Necesitamos una noción de tamaño de la entrada: Á Æ Podemos asumir que cada Á Ò Ü ¾ Á Ü Ò es finito Caso peor [worst] Òµ Ñ Ü Üµ Ü ¾ Á Ò

Preliminares La eficiencia de un algoritmo con entradas del conjunto Á ( Á Æ) depende de cada instancia particular Necesitamos una noción de tamaño de la entrada: Á Æ Podemos asumir que cada Á Ò Ü ¾ Á Ü Ò es finito Caso peor [worst] Òµ Ñ Ü Üµ Ü ¾ Á Ò

Preliminares Para el análisis probabilístico necesitamos definir una distribución de probabilidad sobre las entradas y/o las decisiones aleatorias que toma el propio algoritmo La eficiencia vendrá entonces dada como una familia de variables aleatorias Ò Ò ¼ ; Ò Á Ò Æ Caso promedio: [avg] Òµ Ò ¼ È Ò

Preliminares Para el análisis probabilístico necesitamos definir una distribución de probabilidad sobre las entradas y/o las decisiones aleatorias que toma el propio algoritmo La eficiencia vendrá entonces dada como una familia de variables aleatorias Ò Ò ¼ ; Ò Á Ò Æ Caso promedio: [avg] Òµ Ò ¼ È Ò

Preliminares Para el análisis probabilístico necesitamos definir una distribución de probabilidad sobre las entradas y/o las decisiones aleatorias que toma el propio algoritmo La eficiencia vendrá entonces dada como una familia de variables aleatorias Ò Ò ¼ ; Ò Á Ò Æ Caso promedio: [avg] Òµ Ò ¼ È Ò

Preliminares Si suponemos que todas las entradas de tamaño Ò posibles tienen la misma probabilidad (distribución uniforme) entonces È Ü ½ Á Ò para todo Ü ¾ Á Ò y nuestro problema es en definitiva de conteo: È Ü¾ÁÒ Ò Üµ Á Ò

Funciones generatrices Entre las herramientas fundamentales del análisis de algoritmos están las funciones generatrices. Para una secuencia dada Ò Ò ¼ su función generatriz es: Þµ Ò Þ Ò Ò ¼ Esto es puramente formal. Por ejemplo, si Ò ¾ Ò entonces Þµ ½ ¾Þ Þ ¾ Þ ½ Þ ½ ½ ¾Þ. Un caso importante es una función generatriz de valores esperados, esto es Ò Ò.

Funciones generatrices Las funciones generatrices son muy útiles para resolver recurrencias. Por ejemplo, tomemos los números de Fibonacci. ¼ ½ ½ Ò Ò ½ Ò ¾ si Ò ½

Funciones generatrices Þµ Ò ¼ Ò Þ Ò ¼ ½ Þ ½ Þ Ò ¾ Ò ¾ Ò Þ Ò Ò ½ Ò ¾ µþ Ò ½ Þ Þ Ò ½ Þ Ò ½ Þ ¾ Ò ¾ Þ Ò ¾ Ò ¾ Ò ¾ ½ Þ Þ Þµ ½µ Þ ¾ Þµ ½ Þ Þµ Þ ¾ ½ Þµ ½ Þ Þ ¾

Funciones generatrices Þµ ½ Þ µ Þ ¼ µ Ô ½ ½ ½ Þ ¼ Þ Ô ½ ½ Þ ¼ ¼ ½ Þ donde Ô ½µ ¾ ¼ ½, ¼ ½ Ô ½µ ¾ ½ ½. Nos interesa Ò Þ Ò Þµ.

Funciones generatrices Þ Ò Þµ Ô ½ Þ Ò ½ ½ Þ ¼ ¼ Þ Ò ½ ½ Þ ½ Ô ¼ µ Ò ¼ Ò µ ½ Ô µ Ò ¼ ¼ Ò µ Ô ½ ½ Ô ¾ Ò ½ Esto es, Ò ½ ½ Ò µ.

Funciones generatrices Otro tipo importante de FGs son las funciones generatrices exponenciales: Þµ Ò ¼ Ò Þ Ò Ò Se usan cuando los Ò s crecen superexponencialmente. También se usan a menudo funciones generatrices bivariadas: para Ò Ñ Ò Ñ ¼ definimos Þ Ùµ Ò ¼ Ñ ¼ Ò Ñ Þ Ò Ù Ñ

El método simbólico El método simbólico traduce ciertas construcciones combinatorias usuales a las correspondientes ecuaciones funcionales sobre FGs. Ejemplo: Consideremos la FG de conteo de una clase combinatoria : Þµ Ò ¼ Ò Þ Ò Þ ««¾ donde Ò Ò Ü ¾ Ü Ò.

El método simbólico Si entonces Þµ Þ «Þ «¾ µ¾ Þµ Þµ ¼ ¾ ½ Þ ¼ ¾ Þ ½

El método simbólico Si Ë Õ µ entonces Por tanto ßÞ Ð veces Þµ ½ ¾ ½ ½ Þµ

El método simbólico Un diccionario de construcciones combinatorias y las FGs correspondientes Ë Õ µ ½ Þ ½ ½ Ë Ø µ ÜÔ µ ÝÐ µ ÐÓ ½ ½

El método simbólico Un ejemplo sencillo: un árebol binario es o bien vacío (una hoja) o bien consiste en una raíz y dos subárboles binarios: La FG de conteo de los árboles binarios es: Þµ ½ Þ ¾ Þµ

El método simbólico Si resolvemos la ecuación cuadrática para Þµ y teniendo en cuenta que ¼µ ¼ ½, Þµ Ô ½ ½ Þ ¾Þ ½ Þ ¼ Þ ¼ Si se extrae el coeficiente de Þ Ò en Þµ usando el teorema del binomio de Newton obtenemos ¾Ò Þ Ò Ò Þµ Ò ½ los famosos números de Catalan.

El método simbólico Otro ejemplo son los derangements, permutaciones sin puntos fijos. El problema suele aparecer de la siguiente manera: en un teatro Ò personas dejan sus sombreros y a la salida se devuelven al azar; cuál es la probabilidad de que al menos uno persona recupere su propio sombrero? Empecemos con las permutaciones. Una permutación cualquiera consiste en una secuencia de átomos etiquetados. Sea È el conjunto de todas las permutaciones. Entonces È Þµ ¾È Þ Ò ¼ Ò ÞÒ Ò lo que corresponde a que È Ë Õ µ. ½ ½ Þ

El método simbólico Pero una permutación también se puede caracterizar como un conjunto de ciclos. È Ë Ø µ ÝÐ µ La función generatriz de los ciclos etiquetados es ÐÒ ½ ½ Þ y por tanto la de las permutaciones es ½ È ÜÔ µ ÜÔ ÐÒ ½ ½ Þ ½ Þ

El método simbólico Una permutación consiste en un derangement y un conjunto de ciclos de un sólo elemento cada uno. Podemos escribir È donde es la clase de los derangements y es la clase de los conjuntos de ciclos unitarios. Un ciclo unitario es lo mismo que un átomo, así Þµ ÜÔ Þµ. Por tanto È Þµ ½ ½ Þ Þ Þµ ÜÔ Þµ µ Þµ ½ Þ

El método simbólico y funciones bivariadas Supongamos que queremos analizar un algoritmo donde el coste que nos interesa es la variable aleatoria Ò. Definimos Þ Ùµ Ò ¼ ¼ È Ò Þ Ò Ù Para la distribución uniforme tendremos È Þ Ò Ù Þ Ùµ ÞÒ Ù Ò ¼ È ¼ È Ò Þ Ò Ù Þ Ò Ò ¼ ÒÞ Ò ÞÒ Ù Þ Ùµ Þ Ò Þ ½µ donde Ò Ü ¾ Á Ü Ò Üµ, y Ò Á Ò

El método simbólico y funciones bivariadas Simbólicamente podemos escribir Þ Ùµ Þ Ü Ù Üµ ܾÁ El coeciente entre el coeficiente Þ Ò Þ Ùµ y Þ Ò Þ ½µ es la función generatriz de probabilidad de Ò Ô Ò Ùµ Ù Ò ¼ È Ò Ù ÞÒ Þ Ùµ Þ Ò Þ ½µ

El método simbólico y funciones bivariadas Si tomamos derivadas respecto a Ù y hacemos Ù ½ podemos extraer los sucesivos momentos: valor esperado, segundo momento factorial, etc. Öµ Þµ Ö Þ Ùµ Ù Ö Ò ¼ Ù ½ Ò Ö Þ Ò Por ejemplo, Î Ò Ò ¾ Ò ¾ Þ Ò ¾µ Þµ Þ Ò Þµµ ¾

Ejemplo: Partial quicksort Definimos estas FGs È Þ Ùµ Ì Þ Ùµ Ò ¼ ½ Ñ Ò Ò ¼ ½ Ñ Ò È Ò Ñ Þ Ò Ù Ñ Ø Ò Ñ Þ Ò Ù Ñ donde Ø Ò Ñ es el coste no recursivo. La recurrencia delos È Ò Ñ s se traduce en È Þ È Þ Ùµ ½ Þ Ù È Þ Ùµ ½ ÙÞ Ì Þ µ

Ejemplo: Partial quicksort Definimos estas FGs È Þ Ùµ Ì Þ Ùµ Ò ¼ ½ Ñ Ò Ò ¼ ½ Ñ Ò È Ò Ñ Þ Ò Ù Ñ Ø Ò Ñ Þ Ò Ù Ñ donde Ø Ò Ñ es el coste no recursivo. La recurrencia delos È Ò Ñ s se traduce en È Þ È Þ Ùµ ½ Þ Ù È Þ Ùµ ½ ÙÞ Ì Þ µ

Ejemplo: Partial quicksort Se resuelve la ecuación diferencial (*) y se extraen coeficientes y obtenemos finalmente È Ò Ñ ¾Ò ¾ Ò ½µÀ Ò ¾ Ò ÑµÀ Ò ½ Ñ Ñ Si comparamos partial quicksort con quickselect+quicksort se hacen ¾Ñ À Ñ ¾ comparaciones en promedio menos. Se puede calcular de manera similar el ahorro en intercambios, etc.

Ejemplo: Fallos de predicción 0 A 1 1 B 0 Û Ù Þµ Û Ù Þµ ܾ ܾ Ù FP ܵ Û zeros ܵ Þ Ü Ù FP ܵ Û zeros ܵ Þ Ü

Ejemplo: Fallos de predicción 0 A 1 1 B 0 ½ ÛÞ ÛÙÞ Þ ÞÙ ½ Þ ÙÞ ÛÙ ½ Þµ ½ ÙÝ ¾ Þ ¾ ½ Þ

Ejemplo: El problema de la contratación A una estrategia de contratación la llamamos basada en el rango si y sólo si las decisiones se toman en función del rango relativo del candidato en curso y no en función de su puntuación en términos absolutos. À µ = el conjunto de los candidatos contratados en la permutación ; µ À µ

Ejemplo: El problema de la contratación A una estrategia de contratación la llamamos basada en el rango si y sólo si las decisiones se toman en función del rango relativo del candidato en curso y no en función de su puntuación en términos absolutos. À µ = el conjunto de los candidatos contratados en la permutación ; µ À µ

Ejemplo: El problema de la contratación Sea Æ la permutación que obtenemos tras reetiquetar, ½,..., Ò como ½, ¾,..., Ò ½ y añadir por el final. Ejemplo: ¾ ½ Æ ¾ ½ Sea µ ½ si un candidato con puntuación es contratado tras y µ ¼ sino. Æ µ µ µ

Ejemplo: El problema de la contratación Sea µ el número de s tales que µ ½. Sea Entonces Þ À Þ Ùµ Ù µ ¾È ½ Þµ Þ À Þ Ùµ À Þ Ùµ Ù ½µ ¾È µ Þ Ù µ

Ejemplo: Contratación por encima del mejor El candidato es contratado si y sólo si su puntuación es superior a la del mejor candidato contratado hasta el momento. µ ½ À µ es un máximo de izquierda a derecha en Ò Þ Ò À Ù ÐÒ Ò Ç ½µ Ù ½ La varianza también es ÐÒ Ò Ç ½µ y tras la normalización apropiada Ò Ò Ò µ Ô Î Ò converge a Æ ¼ ½µ

Ejemplo: Contratación por encima del mejor El candidato es contratado si y sólo si su puntuación es superior a la del mejor candidato contratado hasta el momento. µ ½ À µ es un máximo de izquierda a derecha en Ò Þ Ò À Ù ÐÒ Ò Ç ½µ Ù ½ La varianza también es ÐÒ Ò Ç ½µ y tras la normalización apropiada Ò Ò Ò µ Ô Î Ò converge a Æ ¼ ½µ

Ejemplo: Contratación por encima del mejor El candidato es contratado si y sólo si su puntuación es superior a la del mejor candidato contratado hasta el momento. µ ½ À µ es un máximo de izquierda a derecha en Ò Þ Ò À Ù ÐÒ Ò Ç ½µ Ù ½ La varianza también es ÐÒ Ò Ç ½µ y tras la normalización apropiada Ò Ò Ò µ Ô Î Ò converge a Æ ¼ ½µ

Ejemplo: Contratación por encima del mejor El candidato es contratado si y sólo si su puntuación es superior a la del mejor candidato contratado hasta el momento. µ ½ À µ es un máximo de izquierda a derecha en Ò Þ Ò À Ù ÐÒ Ò Ç ½µ Ù ½ La varianza también es ÐÒ Ò Ç ½µ y tras la normalización apropiada Ò Ò Ò µ Ô Î Ò converge a Æ ¼ ½µ

Ejemplo: Contratación por encima de la mediana El candidato es contratado si y sólo si su puntuación está por encima de la mediana de las puntuaciones de los candidatos contratados. µ µ ½µ ¾ Õ Ò Õ ½ Ç Ò ½ µµ Ò Ò ½ Ç Ò ½ µµ El resultado se obtiene al resolver las ecuaciones diferenciales que salen del Teorema anterior, usando Ä µ µ ½µ ¾ and Í µ µ µ ¾ como cota inferior y superior, respectivamente.

Ejemplo: Contratación por encima de la mediana El candidato es contratado si y sólo si su puntuación está por encima de la mediana de las puntuaciones de los candidatos contratados. µ µ ½µ ¾ Õ Ò Õ ½ Ç Ò ½ µµ Ò Ò ½ Ç Ò ½ µµ El resultado se obtiene al resolver las ecuaciones diferenciales que salen del Teorema anterior, usando Ä µ µ ½µ ¾ and Í µ µ µ ¾ como cota inferior y superior, respectivamente.

Ejemplo: Contratación por encima de la mediana El candidato es contratado si y sólo si su puntuación está por encima de la mediana de las puntuaciones de los candidatos contratados. µ µ ½µ ¾ Õ Ò Õ ½ Ç Ò ½ µµ Ò Ò ½ Ç Ò ½ µµ El resultado se obtiene al resolver las ecuaciones diferenciales que salen del Teorema anterior, usando Ä µ µ ½µ ¾ and Í µ µ µ ¾ como cota inferior y superior, respectivamente.

Combinatoria analítica: una breve incursión Los últimos resultados y otros muchos se puden obtener aplicando las técnicas de la combinatoria analítica; son técnicas basadas en la teoría de variable compleja. En esencia, lo que hacemos es ver el objeto formal Þµ como una función de variable compleja.

Combinatoria analítica: una breve incursión Una función generatriz es analítica en una cierta región del plano complejo; es decir, la serie de potencias converge para todo Þ dentro del llamado disco de convergencia de radio Ê. Un resultado importante es que si Ê ½ entonces Þ Ò Þµ ½ Ê µò y ½ Ê µò Ò para todo ¼; es decir, el radio de convergencia nos da inmediatamente el ritmo de crecimiento exponencial (si Ê ½).

Combinatoria analítica: una breve incursión En muchos casos una función cesa de ser analítica porque no está definida en un cierto punto o alguna de sus derivadas no lo está. Muchas funciones importantes con radio de convergencia finito, tienen solo un conjunto finito de puntos donde la función no es analítica, se denominan singularidades. La distancia al origen de la singularidad más cercana al origen (llamada dominante) no da el radio de convergencia µ el ritmo de crecimiento exponencial.

Combinatoria analítica: una breve incursión El resultado esencial a partir del cual se han obtenido otros muchos es el teorema de Cauchy: si Þµ es analítica en una región Ê que contiene a Þ ¼ y es una curva cerrada simple dentro de Ê con Þ ¼ en su interior Þ Ò Þµ ½ Þµ ¾ i Þ Ò ½ Se usa un contorno fácil de integrar en la zona alejada de las singularidades y cerca de la singularidad se usa una expansión local de Þµ

Combinatoria analítica: una breve incursión La naturaleza de la singularidad nos da factores polinómicos, logarítmicos, etc.. En condiciones bastante generales se pueden aplicar resultados del tipo Þµ Þ Þµ µ Ò Ò donde Þ es la singularidad dominante de Þµ, y la función Þµ es una de la que sabemos extraer fácilmente los coeficientes, p.e., Þ Ò «Þ ½ Ò Ò«½ Ç ½ Òµµ «µ siendo «½ ¾

Combinatoria analítica: una breve incursión Por ejemplo, la función generatriz de conteo de los árboles binarios es Þ ½ ¾ ¾ ½ por lo tanto Þµ ½ Ô ½ Þ ¾Þ Þ ½ ½ Ò ¾ Ò Ò ¾ ¾µ ½ Ç ½ Òµµ ½ Ò Ò Ô ½ Ç ½ Òµµ Ò

Combinatoria analítica: una breve incursión Otro ejemplo son los derangements. por lo tanto Þµ Þ ½ Þ Þ ½ ½ ½ Þ Ò ½ Ò ½ Ç ½ Òµµ Y la respuesta al problema original es que la probabilidad de que nadie recupere su sombrero es Ò Ò ½ ¼

Combinatoria analítica: una breve incursión A menudo un FG satisface una ecuación funcional más o menos compleja, pero podemos utilizar técnicas del análisis complejo (ej: teorema de la función implícita) para saber su radio de convergencia y computar una expasión local cerca de la singularidad dominante, y de ahí sacar los Ò sin necesidad de resolver explícitamente la ecuación satisfecha por Þµ Existen otros muchos métodos útiles como los de punto de silla (saddle point methods) y otros que no recurrenc al análisis de variable compleja (p.e. los teoremas Tauberianos). Y además tenemos otras técnicas como los teoremas de resolución de recurrencias divide y vencerás.

Esto se acaba... y no he hecho más que arañar la superfície; serían necesarias dos horas más para empezar a ver con un poco más de detalle el territorio que sólo hemos sobrevolado...

GRACIAS!!

Reconocimientos Kanela Kaligosi, Peter Sanders: Branch mispredictions in Quicksort Margaret Archibald: The hiring problem