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