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

История данного МЭ содержит тайны, и тайны эти надо открыть.

Согласование

Р.В. Хубер

*Задача двух генералов (задача двух армий)* - МЭ в Информатике, рассматривающий проблему синхронизации систем при ненадёжном канале связи на примере попытки договориться о времени нападения двух генералов через занятую врагом долину, предложенный некими Э.А. Аккоюнлу, К. Эканадхамом и Р.В. Хубером в 1975 году.

## Формулировка

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

*Для успешного штурма генералы должны атаковать город одновременно. Штурм, предпринятый только одной армией, приведет к катастрофическим последствиям для атакующих. Требуется найти алгоритм обмена сообщениями, после которого каждый генерал был бы уверен, что они оба атакуют в указанное время.*

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

*ючается в невозможности разработать алгоритм гарантированного обмена этими сообщениями*"

## Доказательство

### Частное

Рассмотрим попытки генералов договорится:

1. Генерал №1 отправляет Генералу №2 сообщение, к примеру, "Наступаем в четыре часа утра". Дабы наступить в это время (помним, что для наступление необходима синхронизация) Генерал №1 должен знать, что Генерал №2 получил его послание, а значит, должен получить сообщение от Генерала №2.
2. Генерал №2, предположим, получает сообщение от Генерала №1. Он понимает, что Генерал №1 не выступит, пока он не отправит ответное сообщение и потому отправляет, допустим, "Сообщение получено". Однако, он также допускает, что его перехватят, и потому ему необходимо, дабы Генерал №1 дал ему ответ - иначе он, соответственно, не выступит.
3. Генерал №1 при том же допущение получает сообщение от Генерала №2. Он понимает необходимость ответа и пишет "Получил сообщение о принятии", отправляя. Однако, как не кажется, что всё кончилось, Генерал №1 допускает, что его сообщение не дойдёт до Генерала №2 и тогда тот решит, что его сообщение могло не дойти, а, значит, не выступит, и потому Генерал №1 ждёт ответного сообщения от Генерала №2.
4. Генерал №2 получает сообщение о получение его прошлого ответа. Понимая всё вышеприведённое, он пишет сообщение №4 (не будем вдаваться в подробности). Однако, рассматривая ситуацию перехвата сообщения, он понимает, что, аналогично прошлым случаям, ему необходимо получит ответ от Генерала №1.
5. Генерал №1 понимает описанное и отправляет сообщение №5, также дожидаясь сообщения №6.
6. ...

Разобрав переписку генералов, мы понимаем, что все их попытки тщетны даже при условии, что разведчики врага не будут перехватывать их сообщения при факте возможности перехвата.

### Общее

#### Перехват

Предположим, что есть некоторая последовательность сообщений, доставленных или перехваченных, которая позволяет обоим генералам гарантированно согласовать время начала штурма. В таком случае существует некоторое минимальное подмножество таких сообщений. Рассмотрим последнее сообщение в этой минимальной последовательности. Так же, как и любое другое сообщение, оно может быть перехвачено. Если оно не будет доставлено, то условие согласованности действий не выполнится, и один из генералов (вероятнее всего, получатель) отложит свою атаку. С точки зрения другого генерала, алгоритм обмена будет соблюден, и он начнет штурм в полной уверенности, что будет поддержан. Таким образом, при использовании заведомо правильного алгоритма, создается ситуация, в которой один генерал штурмует город, а другой — нет. Это противоречит нашему допущению о существовании алгоритма решения задачи.

#### Допущение перехвата

Однако, посмотрев на частное решение, мы должны понять, что даже без перехвата генералы не смогут договорится. Допустим, что и вправду есть некое количество удовлетворяющий сообщений (*х*). Однако, здесь мы должны остановится и разглядеть: мы, рассматривая передачу сообщений, постоянно приходим к некому неудовлетворению из-за стороности собственного наблюдения, какое невозможно в условиях нашего МЭ. Потому критерий удовлетворяющих сообщений мы можем приложить не к самой системе попытки синхронизации, какой, фактически, нет и какая представляет из себя лишь контакт двух систем, а только к одному генералу. А то значит, что для иного генерала, если посмотреть на доказательство частное, критерий данный будет *х+1 (а)*. Тогда, посмотрев на другую систему, то есть генерала, мы должны признать, что тогда и для такого генерала удовлетворяющие количество сообщений будет *а+1,* то есть *х+2*, в результате чего мы вступаем в противоречие. Значит, даже без перехвата генералы не смогут договорится, зная, что их сообщение могут перехватить.

## Преобразования

Даже находясь в рамках МЭ, однако, можно предложить генералам синхронизировать нападение, к примеру, отправляя большое количество сообщений (посыльных). Однако, тогда вероятность синхронизации лишь растёт, ибо все вышеприведённые доказательства полностью соответствуют этому преобразованию. Также автор статьи слышал возражения относительно ограниченности средств: что, к примеру, генералам мешает стрелять определённое количество раз из пушки, шифруя тем самым свои послания? Тогда стоит сказать, что мешает им их существование, ибо находятся они в МЭ, занимающимся проблемами коммуникации при ненадёжном средстве передачи информации, а пушка, голуби, салют и прочее не есть таковые.

## Ссылки

Про данный МЭ Вы можете также прочитать в Википедии, откуда частично взята данная статья.

## Также

Как сообщает нами любимая Всея Энциклопедия, задача была приведена вышеупомянутыми авторами в своей работе "Некоторые ограничения и компромиссы при проектировании сетевых коммуникаций" на примере двух групп гангстеров. Однако, к сожалению, найти информацию о таковых и их работе не вышло возможным, как и понять, когда впервые задача двух генералов приобрела свой нынешний вид. На Тоттепедии существует "Премия Лотце", выдаваемая за обнаружение неизвестных МЭСП и неизвестной информации об малоизвестных, в список коих входит данный МЭ и неизвестная информация о коих перечислена выше.