Задача двух генералов

Сейчас я объясню, почему невозможно доставить сообщение получателю с абсолютной гарантией получения. Описанную ниже проблему называют "задачей двух генералов".

Две армии, которыми руководят два генерала, приготовились штурмовать город. Армии расположены так, что единственная связь между ними - путём отправки гонца с письмом. Вокруг полно вражеских патрулей, поэтому гонца могут перехватить и он не доберётся до получателя. Штурм должны начать обе армии одновременно, иначе операция обречена на провал. Оба генерала собираются штурмовать город, но время штурма ещё не согласовано.

Проблема заключается в том, чтобы надёжно обменяться сообщениями о "времени Ч" с целью утвердить время начала штурма.

Для того, чтобы согласовать время начала штурма, необходимо всего лишь обменяться сообщениями: генерал А отсылает генералу Б гонца с письмом, в котором указывает время. Б, получив сообщение, отправляет гонца обратно с подтверждением о получении сообщения. А, получив подтверждение, становится уверен в том, что Б теперь знает время начала штурма.

Однако, теперь Б не знает, получил ли А подтверждение о том, что Б получил первое послание, ведь гонца могли поймать враги. Поэтому, как только гонец от Б к А доставит подтверждение, А должен теперь отослать ещё одного гонца к Б, который сообщил бы, что письмо с подтверждением от Б к А получено. Казалось бы, этого достаточно, но нет! Теперь А, отослав гонца с сообщением о подтверждении о получении сообщения, полученного от Б, должен как-то удостовериться, что гонец этот добрался до Б.Следовательно, Б теперь должен отправить очередного гонца к А.

Эту цепочку можно продолжать как угодно долго. На каждом этапе либо генерал А, либо Б не уверены в том, что адресат получил подтверждение, поэтому гонцами придётся обмениваться вечно. Это означает, что не существует надёжного способа передать сообщение от А к Б.

На практике можно поступить так: послать не одного, а сразу нескольких гонцов по разным дорогам или тропинкам в лесу и не ждать подтверждения о получении. Тогда вероятность успешной доставки сообщения повысится до некой необходимой величины, но доставка всё же не будет абсолютно надёжной.


Средняя оценка: 3.8 (36 голосов)

Познавательно

Язык хамелеона может достигать длины большей, чем длина его тела. При охоте на насекомых хамелеон выстреливает язык на всю длину за 30 миллисекунд. После прямого попадания, как правило, мошки долго не живут.