среда, 13 декабря 2017 г.

Задача о византийских генералах

Задача двух генералов — в вычислительной технике эта задача иллюстрирует проблему синхронизации состояния двух систем по ненадёжному каналу связи. Эта задача является частным случаем задачи византийских генералов, и часто рассматривается в рамках курса компьютерных сетей (в частности протокола TCP), хотя применима и к другим средствам связи. В литературе также иногда упоминается как задача двух армий.


Две армии, каждая руководимая своим генералом, готовятся к штурму города. Лагеря этих армий располагаются на двух холмах, разделённых долиной. Единственным способом связи между генералами является отправка посыльных с сообщениями через долину. Но долина занята противником и любой из посыльных может быть перехвачен. Проблема заключается в том, что, генералы заранее (пока была связь) приняли принципиальное решение о штурме, но не согласовали точное время штурма
Для успешного штурма генералы должны атаковать город одновременно. Штурм, предпринятый только одной армией, приведет к катастрофическим последствиям для атакующих. Требуется найти алгоритм обмена сообщениями, после которого каждый генерал был бы уверен, что они оба атакуют в указанное время.

Отметим, что достичь такого соглашения очень просто — достаточно одного сообщения с временем начала штурма и одного сообщения, подтверждающего получение первого. Сложность задачи заключается в невозможности разработать алгоритм гарантированного обмена этими сообщениями.

Жду ваши предложения по алгоритму действия генералов. 

Комментариев нет:

Отправить комментарий