26/09/2015, 05:59
|
(Desactivado) | | Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años, 8 meses Puntos: 31 | |
Respuesta: Fuerza bruta lógica, ejemplos. Vivo en el Nº 7, Calle Melancolía... (J.Sabina)
Ahora alguien llega al Nº 7, Calle Melancolía y se encuentra un telefonillo con 3 bloques, 7A, 7B y 7C.
En cada bloque hay 6 pisos, y en cada piso las letras A,B y C.
Para encontrar a J.Sabina tendremos que usar la fuerza bruta, pues los datos recibidos los hemos usado ya, al seleccionar la calle entre todas las que hay. Y el nº 7 de entre todos los que hay en esa calle. Ya la fuerza lógica no nos puede ayudar más.
Empezamos:
7A - 1A
7A - 1B
7A - 1C
7A - 2A
etc.
Para pasar de una fuerza bruta a una fuerza lógica necesitas más información. Por ejemplo:
Vivo en el Nº 7, Calle Melancolía, y en mi puerta hay una C... (J.Sabina)
Ahora podremos optimizar un poco más el algoritmo... lo cual nos dará para probar:
7A - 1C
7A - 2C
7A - 3C
(...)
7B - 1C
7B - 2C
etc
Ahora bien. Qué pasaría si parte de la información recibida sobre el problema no es usada en el algoritmo. Vamos a despreciar el último dato recibido. A ver qué pasa:
Vamos a hacer 2 algoritmos, a ver cual es el más óptimo, utilizando únicamente la información recibida.
1º Algoritmo:
1º Vamos a seleccionar todos los Nº 7 de todas las calles de Madrid.
"Vivo en el Nº7".
2º De entre todas las direcciones seleccionadas, escogemos las que estén en la C/Melancolía.
"Calle Melancolía".(Casualmente solo hay 1)
No vamos a meter en el algoritmo de búsqueda de la solución más datos. Así pues... solo nos queda empezar a probar:
7A - 1A
7A - 1B
7A - 1C
7A - 2A
(...)
7B - 1A
7B - 1B
etc
Logísticamente, el trabajo es el mismo que el 2º algoritmo:
2º Algoritmo:
1º De entre todas las direcciones seleccionadas, escogemos la C/Melancolía. (Casualmente solo hay 1)
"Calle Melancolía".
2º De entre todos los números en esa calle, ,escogemos el nº 7.
"Vivo en el Nº 7".
No vamos a meter en el algoritmo de búsqueda de la solución más datos. Así pues... solo nos queda empezar a probar:
7A - 1A
7A - 1B
7A - 1C
7A - 2A
(...)
7B - 1A
7B - 1B
etc
Como ves, para buscar la dirección de J.Sabina hemos utilizado la información recibida para convertir un algoritmo de fuerza bruta (Buscar en cada casa, de cada portal, de cada número, de cada calle de Madrid) en una búsqueda más específica.
Sin embargo, esta no es la búsqueda más óptima, porque tenemos una información que no hemos utilizado. La cual es: "y en mi puerta hay una C".
Si incluimos esta información, podremos optimizar mucho más el algoritmo para la resolución del problema.
Ahora las conclusiones:
1º Conclusión:
- Obteniendo más información, y utilizándola en el algoritmo llegaremos más rápido a la resolución del problema.
2º Conclusión:
- El algoritmo de fuerza bruta TAMBIÉN resuelve el problema, con la única diferencia de que normalmente tardará más en resolverlo.
Entre las 2 conclusiones, podemos llegar a una 3ª conclusión:
3ª conclusión:
- Si el factor tiempo en resolución interviene en la resolución del problema (lo sepamos nosotros o no) el algoritmo de fuerza bruta podría no resolver dicho problema.
(P.Ej: Recorremos el Barrio de la Alegría antes de llegar a la Calle Melancolía, y para cuando llegamos a la Calle Melancolía, J.Sabina ya se mudó al Barrio de la Alegría. Por lo tanto no llegamos a encontrarlo. Ej2: Búsqueda de contraseña que cambia cada X)
Y esta conclusión nos ayuda a hacer una 4ª conclusión:
4ª conclusión:
- Por si acaso, siempre es mejor escoger el algoritmo que tarde menos en resolver el problema.
- Consumir menos esfuerzo en resolver un problema siempre es mejor que consumir un mayor esfuerzo.
- Siempre será mejor tardar un poco más en diseñar un algoritmo que utilice el 100% de la información disponible o alcanzable que no esforzarse en diseñar dicho algoritmo y utilizar el de fuerza bruta. Pues el tiempo invertido en diseñar el algoritmo que utilice el 100% de la información es luego ahorrado con creces al ejecutar dicho algoritmo. |