¿Estás listo para quemar neuronas? Espero que sí, porque eso es exactamente lo que hace este problema. Se trata de un experimento mental, pero uno sin solución.
Puede que te estés preguntando cuál es el punto de intentar resolver algo si ya sabes que tal cosa es imposible, pero justamente, el punto es hacer el ejercicio y entender por qué es que no se puede resolver. Veamos de qué se trata.
El problema
Dos generales se disponen a atacar una ciudad. Para que el ataque sea exitoso, deben atacar a la vez, pero se encuentran en lados opuestos y la única forma que tienen de comunicarse para coordinar el ataque es mediante un mensajero.
Cuando el primero de los generales decide que está listo para atacar, le envía un mensaje al otro diciendo «Atacaremos mañana, 26 de febrero, a las 10:00 AM». El otro lo recibe, pero… ¿cómo puede el primer general saber que el segundo recibió el mensaje? ¿Y si el mensajero hubiese sido capturado en el camino? Seguro el segundo general no puede atacar sin saber que el primero sabe que ha recibido el mensaje, así que envía a un segundo mensajero.
Cuando el primer general recibe el mensaje del segundo diciendo «mensaje recibido» debería atacar en la fecha y hora acordadas, ¿no? Hay un problema: ¿cómo sabe el segundo que el primero recibió su confirmación?Ahora es su mensajero el que podría haber sido capturado. Hay una sola opción: mandar un segundo mensaje de confirmación.
Quizás ya veas hacia dónde va esto. Incluso cuando el segundo general reciba el segundo mensaje de confirmación, no tendrá manera de saber si su contraparte está al tanto de que el mensaje fue recibido. Los dos generales podrían seguir enviando mensajes, pero el problema persistiría. Ninguno podrá estar seguro de que su mensaje llegó a destino y el ataque se pospondría indefinidamente.
¿Entonces?
Entonces… Nada. No habrá manera de que ambos generales estén 100 % seguros de que el otro sabe que ambos acuerdan realizar el ataque. A esta altura, puede que te estés preguntando cuál es el punto de todo esto…
Bien, el problema suele ser presentado en clases de introducción a la computación y busca demostrar los problemas de diseñar una red que intente enviar un mensaje a través de un vínculo poco fiable. No está diseñado como un problema a resolver, sino más bien como un ejemplo educativo.
En los hechos, sí hay algo así como «soluciones». Una de ellas, implica el uso de la probabilidad. Los generales pueden enviarse miles de mensajes de confirmación, pero ¿cuáles son las probabilidades de que todos esos mensajeros sean capturados? Podrían determinar que, luego de cierto número de comunicaciones, la probabilidad de que el otro general no haya recibido el mensaje es tan baja que podría considerarse que el intercambio se ha confirmado.
http://www.batanga.com/curiosidades/59853/el-problema-de-los-dos-generales-una-paradoja-sin-solucion-que-ilustra-los-retos-del-diseno-de-redes-de-comunicacion?utm_source=FacebookRSS
La cuestión es colocar hombres visibles entre si, a una distancia de pongamos 200 metros uno de otro, que mediante señales transmitan el mensaje desde un general a otro.
En otras palabras, hacer que sea el mensaje el que circule y no el mensajero. Si cualquiera de los hombres es capturado los dos más cercanos a él lo sabrán de inmediato y lo comunicarán a su general respectivo, con lo que tendrán evidencia de la interrupción de información.
En computación cada uno de los soldados, colocados entre los generales, que se encargan de asegurar la transmisión del mensaje se denominan nodos.
No veo yo lo de la paradoja sin solución.