Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta...

30
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

Transcript of Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta...

Page 1: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 2: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificació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 2 / 26

Page 3: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 4: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 5: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 6: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 7: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 8: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 9: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 10: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 11: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 12: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 13: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 14: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 15: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 16: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 17: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 18: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 19: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 20: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 21: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 22: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 23: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 24: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 25: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 26: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 27: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 28: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 29: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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

Page 30: Algoritmos de fuerza brutaertello/algorithms/sesion06.pdf · Algoritmos de fuerza bruta Intersección de segmentos de línea Intersección de segmentos de línea En robótica y planificación

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