Algoritmos de fuerza bruta Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 29 de enero de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 1 / 26
Algoritmos de fuerza bruta
Dr. Eduardo A. RODRÍGUEZ TELLO
CINVESTAV-Tamaulipas
29 de enero de 2018
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 1 / 26
1 Algoritmos de fuerza brutaIntroducciónOrdenamiento por selecciónBúsqueda de subcadenas (string matching)Intersección de segmentos de líneaCubierta convexaFortalezas y debilidades
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 2 / 26
Algoritmos de fuerza bruta Introducción
1 Algoritmos de fuerza brutaIntroducciónOrdenamiento por selecciónBúsqueda de subcadenas (string matching)Intersección de segmentos de líneaCubierta convexaFortalezas y debilidades
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 3 / 26
Algoritmos de fuerza bruta Introducción
Introducción
Es un enfoque de solución, usualmente basado en el enunciadodel problema y las definiciones de conceptos involucrados
Ejemplos:Calcular an (a > 0, n ∈ Z+)
Calcular n!
Multiplicar dos matrices
Buscar un valor dentro de una lista
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 4 / 26
Algoritmos de fuerza bruta Ordenamiento por selección
1 Algoritmos de fuerza brutaIntroducciónOrdenamiento por selecciónBúsqueda de subcadenas (string matching)Intersección de segmentos de líneaCubierta convexaFortalezas y debilidades
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 5 / 26
Algoritmos de fuerza bruta Ordenamiento por selección
Ordenamiento por selección
elementos ya ordenados︷ ︸︸ ︷A0 ≤ A1 ≤ . . . ≤ Ai−1 |
últimos n− 1 elementos︷ ︸︸ ︷Ai, . . . , Amin, . . . , An−1
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 6 / 26
Algoritmos de fuerza bruta Ordenamiento por selección
Ordenamiento por selección
Analicemos la eficiencia del algoritmo de ordenamiento por selecciónEl tamaño de la entrada es el tamaño del arreglo n
La operación básica es la comparación A[j] < A[min]
El número de veces que ésta es ejecutada depende sólo de n ypuede ser expresada con la siguiente sumatoria:
C(n) =
n−2∑i=0
n−1∑j=i+1
1 =n−2∑i=0
[(n−1)−(i+1)+1] =n−2∑i=0
(n−1−i) =n(n− 1)
2
Por lo tanto el ordenamiento por selección es un algoritmo Θ(n2)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 7 / 26
Algoritmos de fuerza bruta Búsqueda de subcadenas (string matching)
1 Algoritmos de fuerza brutaIntroducciónOrdenamiento por selecciónBúsqueda de subcadenas (string matching)Intersección de segmentos de líneaCubierta convexaFortalezas y debilidades
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 8 / 26
Algoritmos de fuerza bruta Búsqueda de subcadenas (string matching)
Búsqueda de subcadenas (string matching)
Problema de búsqueda de subcadenas (string matching)Dada una cadena de n caracteres, llamada texto, y una cadena de mcaracteres (m < n), llamada patrón, encontrar una subcadena deltexto que coincida con el patrón. De manera más formal, se requiereencontrar el índice i del carácter más a la izquierda de la primerasubcadena que coincida en el texto, tal que:
ti = p0, . . . , ti+j = pj , . . . , ti+m−1 = pm−1
Si se requieren todas las subcadenas coincidentes entonces se pudeseguir analizando todo el texto.
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 9 / 26
Algoritmos de fuerza bruta Búsqueda de subcadenas (string matching)
Búsqueda de subcadenas (string matching)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 10 / 26
Algoritmos de fuerza bruta Búsqueda de subcadenas (string matching)
Búsqueda de subcadenas (string matching)
¿Cuál es el peor caso?
El algoritmo puede tener que hacer m comparaciones antes deavanzar el patrón, y esto para cada uno de los n−m + 1 intentosm(n−m + 1) ∈ Θ(nm)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 11 / 26
Algoritmos de fuerza bruta Búsqueda de subcadenas (string matching)
Búsqueda de subcadenas (string matching)
¿Cuál es el peor caso?El algoritmo puede tener que hacer m comparaciones antes deavanzar el patrón, y esto para cada uno de los n−m + 1 intentosm(n−m + 1) ∈ Θ(nm)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 11 / 26
Algoritmos de fuerza bruta Intersección de segmentos de línea
1 Algoritmos de fuerza brutaIntroducciónOrdenamiento por selecciónBúsqueda de subcadenas (string matching)Intersección de segmentos de líneaCubierta convexaFortalezas y debilidades
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 12 / 26
Algoritmos de fuerza bruta Intersección de segmentos de línea
Intersección de segmentos de línea
Uno de los problemas más básicos en geometría computacionales el del cálculo de intersecciones
El cálculo de intersecciones en espacios 2 y 3 dimensionales esesencial para diversas áreas de aplicación
En modelado de sólidos las personas suelen crear formascomplejas mediante la aplicación de diversas operacionesbooleanas (intersección, unión, y diferencia) a simples formasprimitivas. El proceso es llamado geometría constructiva desólidos (CSG). Con el fin de realizar estas operaciones, el pasomás básico es determinar los puntos en los que los límites de dosobjetos se intersectan
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 13 / 26
Algoritmos de fuerza bruta Intersección de segmentos de línea
Intersección de segmentos de línea
En robótica y planificación del movimiento es importante sabercuando dos objetos se intersectan para detectar y evitar colisiones
En los sistemas de información geográfica es útil lasuperposición de dos subdivisiones (e.g., una red de carreteras ylos límites de un estado para determinar las responsabilidades demantenimiento de carreteras). Dado que estas redes se forman apartir de colecciones de segmentos de línea, esto genera elproblema de la determinación de las intersecciones de segmentosde línea
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 14 / 26
Algoritmos de fuerza bruta Intersección de segmentos de línea
Intersección de segmentos de línea
En gráficas computacionales, ray shooting es un importantemétodo para renderizar escenas. Computacionalmente la partemás intensiva de este método es determinar la intersección de losrayos con otros objetos.
La mayoría de los problemas de intersección complejos sedescomponen sucesivamente en subproblemas más simplescomo el de intersección de segmentos de línea que veremos acontinuación.
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 15 / 26
Algoritmos de fuerza bruta Intersección de segmentos de línea
Intersección de segmentos de línea
Problema de intersección de segmentos de línea
Dado un conjunto de n segmentos de línea en el plano, cada unorepresentado con las coordenadas de sus dos puntos extremos,encontrar todos los puntos donde un par de segmentos de línea seintersectan
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 16 / 26
Algoritmos de fuerza bruta Intersección de segmentos de línea
Intersección de segmentos de línea
¿Cuántos posibles puntos de intersección pueden existir?
Observemos que n segmentos de línea pueden tener un númerototal de puntos de intersección que va desde 0 hasta
(n2
)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 17 / 26
Algoritmos de fuerza bruta Intersección de segmentos de línea
Intersección de segmentos de línea
¿Cuántos posibles puntos de intersección pueden existir?
Observemos que n segmentos de línea pueden tener un númerototal de puntos de intersección que va desde 0 hasta
(n2
)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 17 / 26
Algoritmos de fuerza bruta Intersección de segmentos de línea
Intersección de segmentos de línea
Algoritmo SlowIntersectionPoints
Input: Un conjunto L de n segmentos de línea en el planoOutput: Un conjunto I de puntos de intesección encontrados
1 I ← ∅ for cada par ordenado a, b de segmentos de línea en L× L,donde a 6= b do
2 I ← VerificarIntersección(a, b)3 end
¿Qué complejidad tiene este algoritmo?
O(n2) por que el número total de puntos de intersección puedeser hasta
(n2
)= n!
2!(n−2)!
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 18 / 26
Algoritmos de fuerza bruta Intersección de segmentos de línea
Intersección de segmentos de línea
Algoritmo SlowIntersectionPoints
Input: Un conjunto L de n segmentos de línea en el planoOutput: Un conjunto I de puntos de intesección encontrados
1 I ← ∅ for cada par ordenado a, b de segmentos de línea en L× L,donde a 6= b do
2 I ← VerificarIntersección(a, b)3 end
¿Qué complejidad tiene este algoritmo?
O(n2) por que el número total de puntos de intersección puedeser hasta
(n2
)= n!
2!(n−2)!
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 18 / 26
Algoritmos de fuerza bruta Intersección de segmentos de línea
Intersección de segmentos de línea
Algoritmo SlowIntersectionPoints
Input: Un conjunto L de n segmentos de línea en el planoOutput: Un conjunto I de puntos de intesección encontrados
1 I ← ∅ for cada par ordenado a, b de segmentos de línea en L× L,donde a 6= b do
2 I ← VerificarIntersección(a, b)3 end
¿Qué complejidad tiene este algoritmo?
O(n2) por que el número total de puntos de intersección puedeser hasta
(n2
)= n!
2!(n−2)!
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 18 / 26
Algoritmos de fuerza bruta Cubierta convexa
1 Algoritmos de fuerza brutaIntroducciónOrdenamiento por selecciónBúsqueda de subcadenas (string matching)Intersección de segmentos de líneaCubierta convexaFortalezas y debilidades
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 19 / 26
Algoritmos de fuerza bruta Cubierta convexa
Cubierta convexa
Problema (planar) de la cubierta convexaDado un conjunto P de n puntos en el plano, calcular larepresentación del polígono convexo cerrado que representa lacubierta convexa de P
La representación más simple de una cubierta convexa es laenumeración en el sentido de las manecillas del reloj (�) de susvértices
Idealmente la cubierta convexa debe consistir sólo de los puntosextremos, en el sentido que si tres puntos caen en un vértice de lafrontera de la cubierta convexa, entonces el punto medio no debeser tomado en cuenta como parte de la cubierta
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 20 / 26
Algoritmos de fuerza bruta Cubierta convexa
Cubierta convexa
El problema puede ser abordado más fácilmente si asumimos quelos puntos están en la posición general, y en particular que no haytres colineales
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 21 / 26
Algoritmos de fuerza bruta Cubierta convexa
Cubierta convexa, Ejercicio
Plantee el pseudocódigo de un algoritmo de fuerza bruta pararesolver este problema
Determine la complejidad temporal del algoritmo
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 22 / 26
Algoritmos de fuerza bruta Cubierta convexa
Cubierta convexa
Se verifican n2 − n pares de puntos. Cada par se compara conotros n− 2 puntos, lo que toma O(n3). El paso final toma O(n2)
El tiempo total de ejecución es O(n3), ¿Podrá hacerse máseficientemente?
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 23 / 26
Algoritmos de fuerza bruta Cubierta convexa
Cubierta convexa
Orient(p, q, r) > 0 Orient(p, q, r) < 0 Orient(p, q, r) = 0
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 24 / 26
Algoritmos de fuerza bruta Fortalezas y debilidades
1 Algoritmos de fuerza brutaIntroducciónOrdenamiento por selecciónBúsqueda de subcadenas (string matching)Intersección de segmentos de líneaCubierta convexaFortalezas y debilidades
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 25 / 26
Algoritmos de fuerza bruta Fortalezas y debilidades
Fortalezas y debilidades
FortalezasAmplia aplicabilidad
Simplicidad
Lleva a diseñar algoritmos que permiten resolver razonablementealgunos problemas importantes (e.g., multiplicación de matrices,ordenamiento, búsqueda de subcadenas, etc.)
Pueden ser punto de referencia para desarrollar algoritmos másefectivos
DebilidadesRaramente llevan a desarrollar algoritmos altamente eficientes
Algunos algoritmos de fuerza bruta son extremadamente lentos(inaceptables)
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 26 / 26