¿Qué es la búsqueda de fuerza bruta?

Una búsqueda de fuerza bruta es una técnica de resolución de problemas, en la que primero genera un posible candidato y luego prueba su validez. Eso significa que recorre todos los posibles candidatos y verifica si ese candidato en particular satisface la condición requerida.

Algunos ejemplos incluyen:

  • Supongamos que un sitio web usa una contraseña de longitud 8. Solo permiten letras minúsculas (az). Ahora, si desea piratear la cuenta de administrador, una posible cosa que podría hacer es generar todas las contraseñas posibles que sigan este criterio y probarlas una por una. Tenga en cuenta que hay 26 ^ 8 contraseñas totales posibles en este sistema.
  • Otro ejemplo interesante es el rompecabezas de las ocho reinas. El rompecabezas de las ocho reinas es el problema de colocar ocho reinas de ajedrez en un tablero de ajedrez de 8 × 8 para que no haya dos reinas que se amenacen entre sí. Una posible solución para generar todas las combinaciones posibles en las que se pueden poner las reinas y verificar si pueden atacarse entre sí en esa formación.

  • Supongamos que está buscando una palabra en un diccionario. Una posible forma de encontrar eso es comenzar desde la primera página, pasar por cada una de las palabras, luego la siguiente página y así sucesivamente, hasta encontrar la palabra. Por supuesto, esta es una elección ineficiente.
  • Dada una colección de enteros, debes averiguar si el número 7 es parte de la colección. Puede recorrer en iteración todos los enteros y verificar si es igual a 7.
  • Otro ejemplo es el problema de la caída del huevo. En este problema, tienes un edificio de nueve pisos. El huevo tiene un factor de resistencia k definido como, si cae de la historia x <= k del edificio, no se romperá. Tienes que encontrar k. Puede comenzar desde el primer piso, y luego ir al segundo piso, y así sucesivamente, hasta que se rompa el huevo. De esta manera, puedes encontrar k.

La búsqueda de fuerza bruta significa que está comprobando cada elemento de una colección hasta que encuentre el que está buscando. Si la entrada deseada no está en la colección, debe verificar cada entrada. Si la entrada se encuentra en el otro extremo de la colección desde donde comienza su búsqueda, todavía terminará revisando cada entrada.

Para una sola búsqueda de una colección desordenada, esto es tan bueno como se pone. Si va a realizar múltiples búsquedas en la colección para varias entradas, llegará un punto en el que vale la pena tomarse el tiempo para ordenar la colección y cambiar a un algoritmo más eficiente como la búsqueda binaria.

More Interesting

Cómo escribir una matriz para un libro de calificaciones que acepte 10 entradas y no requiera usarlas todas

¿Debo aprender C ++ ahora que sé cómo implementar algoritmos básicos de ML en Python, o debería seguir con scikit-learn?

¿Existe una estructura de datos con complejidad espacial exponencial?

Cómo superar y comprender el algoritmo / código de otras personas

Cómo definir una función para encontrar el producto de dígitos en Python usando recursividad

¿Qué algoritmo de extracción de características es adecuado para el reconocimiento facial basado en video?

¿Cuál es la forma más eficiente de restar una lista de otra?

¿Cómo se escribe un programa que verifica todas las permutaciones de una cadena determinada y determina si es un palíndromo?

Cómo aprender fácilmente el pseudocódigo del algoritmo

Me acabo de unir a TopCoder porque quiero aprender las estructuras de datos y cómo codificarlas en C, pero no tengo idea de dónde comenzar en TopCoder ya que puedo ver 3 categorías en el sitio, pero no pude encontrar la forma correcta. ¿Qué debo hacer para comenzar?

¿Por qué usar un diagrama de flujo es una mala práctica en la programación?

¿Cómo escribo un algoritmo para el problema de las 100 puertas?

Cómo determinar la complejidad temporal de cualquier código de manera fácil y eficiente

Algoritmos aleatorizados: ¿Dónde puedo encontrar una colección extraña de cosas no relacionadas?

¿Cuáles son los algoritmos populares de aprendizaje automático en línea y sus casos de uso típicos?