Problema de los generales bizantinos

From Wikipedia, the free encyclopedia

El problema de los generales bizantinos es un experimento mental para plantear, de una forma metafórica, el problema que se da entre un conjunto de sistemas informáticos que tienen un objetivo común. Deben encontrar un plan de acción común a partir de una estructura jerárquica, donde uno de los sistemas que tiene mayor rango proporciona una orden a partir de la cual el resto de sistemas tiene que operar (fijar su decisión). Además es posible que alguno de ellos no sea fiable y provea información falsa de forma intencionada.[1][2]

Supongamos un escenario de guerra en el que tenemos un grupo de m generales bizantinos que están asediando una ciudad desde distintos lugares y tienen que ponerse de acuerdo para atacar o retirarse de forma coordinada. Entre los generales hay solo uno que puede cursar la orden por ser el comandante. El resto se dice que son tenientes.

Los tenientes se comunican entre ellos cuando reciben la orden del comandante y las dos posibles órdenes del comandante son "atacar" y "retirarse".

Uno o más de los generales puede ser un traidor (al resto se les llama leales), por lo que su objetivo es conseguir que todos los generales leales no se pongan de acuerdo. Para ello pueden ofrecer información errónea. Por ejemplo, si el comandante es el traidor, podría mandar órdenes contradictorias a los distintos tenientes. Si el teniente es un traidor podría indicarles a otros tenientes, con el fin de confundirlos y que creyeran que el traidor es el comandante, que el comandante les envió la orden contraria a la que realmente les envió.

Para resolver el problema tenemos que buscar algoritmos que nos permitan conseguir alguno de los siguientes objetivos:[3]

  • Todos los tenientes leales toman la misma decisión.
  • Si el comandante es leal, entonces todos los tenientes leales realizan la orden que él decidió.

Normalmente para llegar a una solución se suelen hacer las siguientes condiciones adicionales:[3][2]

  • Cada mensaje que se envía llega correctamente.
  • Cada receptor de un mensaje conoce quién lo envía.
  • La ausencia de mensaje puede ser detectada.
  • Ante la ausencia de mensaje se tiene una orden por defecto. Esta condición es para evitar el problema de que el comandante sea un traidor y no envíe órdenes.

Algoritmos solución

Consideraciones

Referencias

Related Articles

Wikiwand AI