LINUX.ORG.RU
ФорумTalks

[Brainstorm] Задача двух генералов.

 


0

1

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

Для тех, кто не в теме, суть™:

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

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

«Да, мы оба атакуем в указанное время.»

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

Для тех, кто еще не понял:

Есть долина, на дне долины - враг. По разные стороны - два дурака-генерала. Необходимо, чтобы оба генерала договорились о времени атаки, а именно: Первый генерал получил от второго следующее сообщение: «Мужиг, мы отакуем в 15:05». Второй генерал получил от первого следующее сообщение: «Ога! В 15:05 Чмоки чмоки!» Проблема в том, что любой посыльный может быть перехвачен с вероятностью N.

Один из способов решения - послать сотню посыльных с одной и с другой стороны. Но это не Ъ, поскольку до конца не решает проблему.

К слову, эта задача идеально иллюстрирует протокол TCP.

Ну что, где тут аналитики?

Женераль А шлёт гонцов женералю Б, так что:
А выслал гонца к Б, если Б получил он высылает гонца к А с ответом, если же А не получает в течении определенного времени (после послания гонца к Б) ответа от Б, то А высылает еще одного гонца и т.д. пока не получит ответ.
Как Б решит что ответ получен — Б спустя некоторое время после отправления ответа снова ожидает гонца от А (с сообщением индентичным предыдущему) если гонец не пришел — значит А получил ответ, иначе — Б снова шлёт ответ.
Для конкретно 1 действия и в данном условии задачи — согласовать время нападения этого должно быть достаточно.

P.S. А вот если как в интернете (разнотипные запросы), то да не прокатит, А может и не получить пакет с подтверждением, при этом пакеты от А не будут доходить до Б, то Б решил что А всё получил и связь оборвётся.

Razzeeyy
()
Ответ на: комментарий от TGZ

> Эта задача без решения, т.к. противник подменит гонца и дезинформирует обоих генералов.

Решение-то должно быть. Существует же возможность передавать защищенные данные по открытым каналам связи.

Igron ★★★★★
()

Мне сходу придумывается только один вариант: первый посылает несколько посыльных с разным временем и разным шифртекстом (например фамилии, а правильная — девичья фамилия его матери). Второй ловит посыльных, и если находит среди них правильный шифртекст — посылает «ACK» таким же образом (несколько гонцов, те же фамилии, но только одна из них правильная). При неполучении первым генералом подтверждения, время меняется и алгоритм повторяется.

Igron ★★★★★
()
Ответ на: комментарий от Cancellor

> 1) Генерал Зильберштейн отправляет в город противника батальон балалаечников под видом бродячего театра.

2) Балалаечники громко балалают морзянкой послание.

3) Разведчики Генерала Гольдмана принимают послание.

4) Генерал Гольдман посылает в город противника батальон барабанщиков под видом опоздавших товарищей балалающего бродячего театра.

5) Барабанщики громко барабанят морзянкой ответ.

6) Разведчики генерала Зильберштейна принимают ответ.

3) Генерал Джабраил Али Абу Махмуд принимает балалаечников группой контрразведчиков в одежде матрёшек.

4) Матрёшки нейтрализуют балалаечников

Stalin ★★★★★
()

для защиты от изъятия/подмены послания можно наделить посыльных функцией самоуничтожения

kott ★★★★★
()
Ответ на: комментарий от A26

Если между генералами яма бесконечной глубины, то вероятность что доберётся хоть один курьер не определена. Всё зависит от того - хватит ли курьеров чтобы заполнить яму или нет.

wisp ★★
()

по-моему для этого изобрели PKI. Т.е. они использую цифровую подпись (сертифкаты, пары ключей) для подписи своих сообщений, обменявшись открытыми ключами. man certificate based authentication :)

Den0k
()
Ответ на: комментарий от Novell-ch

По мобиле/скайпу/мылу точно так же не договориться, как и через гонцов.

Вообще, мы эту задачу решаем каждый день, правда вероятность недоставки сообщения очень мала:

 - Пойдём вечером на тусовку!
 - А давай, во сколько?
 - В 9.
   /короткие гудки/

договорились или нет?

unC0Rr ★★★★★
()
Ответ на: комментарий от Razzeeyy

> если гонец не пришел — значит А получил ответ

Не значит. Вдруг связь оборвалась, и ни до A ответ не дошел, ни от A новые гонцы не доходят до B?

Manhunt ★★★★★
()

Задача нерешаема. Что сказать-то хотел?

geekless ★★
()
Ответ на: комментарий от Manhunt

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

Razzeeyy
()
Ответ на: комментарий от Razzeeyy

> Там же с некой вероятностью перехватывают гонцов, получается всё равно хоть когда то как-то связь сложиться удачно и гонцы таки дойдут

Случайно перехватив первого гонца, противник переполошился и сильно озаботился дальнейшим перехватом. Он организует пограничные дозоры, изучает методы маскировки твоих гонцов, и тд. То есть он постоянно совершенствует качество перехвата, и однажды доведет вероятность перехвата отдельно взятого гонца до 99.5%. С твоим фиксированным интервалом отправки гонцов, может сложиться так, что все те N гонцов, которых ты успеешь отправить до часа атаки, будут успешно перехвачены.

Manhunt ★★★★★
()

Если между генералами противник, значит он в окружении и ему конец. И с какой стати генералы находятся на разных сопках?? все генералы сидят в штабе.

sumrak_ss ★★
()
Ответ на: комментарий от Manhunt

Все-таки этого в задаче нет, так что мы можем считать, что противник ищет каждого посыльного с одинаковым рвением.

mopsene ★★★
()
Ответ на: комментарий от mopsene

> Все-таки этого в задаче нет, так что мы можем считать, что противник ищет каждого посыльного с одинаковым рвением.

Даже если так, есть вероятность, что противнику повезет N раз подряд, и «с твоим фиксированным интервалом отправки гонцов, все те N гонцов, которых ты успеешь отправить до часа атаки, будут успешно перехвачены».

Manhunt ★★★★★
()

А че, позвонить по мобильнику или покричать в рупор (поморгать прожектором) было не модно? Обязательно пьяного гонца отправлять в путь?

andreyu ★★★★★
()
Ответ на: комментарий от Manhunt

>>Даже если так, есть вероятность, что противнику повезет N раз подряд, и «с твоим фиксированным интервалом отправки гонцов, все те N гонцов, которых ты успеешь отправить до часа атаки, будут успешно перехвачены».

Где расчеты этой вероятности?))

Он организует пограничные дозоры, изучает методы маскировки твоих гонцов, и тд. То есть он постоянно совершенствует качество перехвата, и однажды доведет вероятность перехвата отдельно взятого гонца до 99.5%.


-Нарисуем путь ракеты через космос на марс.
-Сказано, сделано
-Марсиане обосрались при виде летящей ракеты, быстро сконструировали мифически-мощный турбореактивный двигатель и передвинули планету на другое место.
-?????
-PROFIT

Как можно решать задачу у которой в условии поставлено одно, а при дальнейшем обсуждении любой кому не лень начинает динамически менять условие вплоть до «прилитела инопланетная цивилизация и имплантировала анальный зонд картману».
Для текущего исходного условия с константным шансом перехвата гонцов решение очень даже рабочее.

Razzeeyy
()
Ответ на: комментарий от Razzeeyy

> Где расчеты этой вероятности?))

Пожалуйста. Пусть вероятность перехвата отдельно взятого гонца равна p. Тогда вероятность перехвата всех N гонцов равна (1 - (1 - p)^N).

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


Ну-ну.

Manhunt ★★★★★
()
Ответ на: комментарий от Razzeeyy

> Для текущего исходного условия с константным шансом перехвата гонцов

Покажи мне, где в условии сказано про «константный шанс». В упор не вижу.

Как можно решать задачу у которой в условии поставлено одно, а при дальнейшем обсуждении любой кому не лень начинает динамически менять условие вплоть


... вплоть до введения вероятностей и приравнивания их к константе, да? ;)

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

>>... вплоть до введения вероятностей и приравнивания их к константе, да? ;)

ага.
а по сабжу задача ниочём, так на трололо

Razzeeyy
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.