LINUX.ORG.RU
ФорумTalks

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

 


0

1

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

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

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

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

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

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

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

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

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

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

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

1) Генерал Зильберштейн отправляет в город противника батальон балалаечников под видом бродячего театра.
2) Балалаечники громко балалают морзянкой послание.
3) Разведчики Генерала Гольдмана принимают послание.
4) Генерал Гольдман посылает в город противника батальон барабанщиков под видом опоздавших товарищей балалающего бродячего театра.
5) Барабанщики громко барабанят морзянкой ответ.
6) Разведчики генерала Зильберштейна принимают ответ.

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

Там же максимальный таймаут чем-то ограничен, слоупок не успеет.

Yareg ★★★
()

Раз 100% гарантии согласования решений нет, придется согласиться на вероятностный вариант со сведением риска к желаемой величине.

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

Окопавшиеся в долине блекари с воем БУРЗУУУМ рвут в лоскуты балалаечников. FAIL.

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

Контрразведка всех вычислила, убила и изнасиловала.

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

Исходя из того же OSPF, нет гарантии, что посол, отправленный через другую сторону Земли не помрет в дороге.

AlexCones ★★★
() автор топика

Любой объект на высоте более 10 метров мгновенно уничтожается огромным лазером, во всём диапазоне электромагнитных волн сильнейшие помехи, небо плотно покрыто густым чёрным дымом, и даже потоки высокоэнергетических заряженных частиц и гравитационные волны глушатся. Вы обречены.

Yareg ★★★
()

Никаких сообщений не надо, врубаем чисто логику. Условия:
1) Атаковать надо одновременно
2) Связи не будет
Отсюда вытекает вывод - атаковать надо без связи. Т.е. атаковать в тот момент, который а) будет заведомо одновременен для обоих генералов б) к нему можно придти логически. Из а) естественным образом получается привязка к солнцу, это дает три возможных временных точки - рассвет, полдень, закат. На ночь глядя атаковать резона нет, днем жарко,да и враг во все глаза смотрит, так что остается рассвет, когда противник еще спит. Вуаля - обе армии должны атаковать ближайшим утром.

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

В смысле по меридианам x и 180⁰-x, то есть по всей окружности. По параллели, на которой происходит битва тоже непреодолимый барьер, и единственная точка, где его нет — наша долина.

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

>отправить посыльного в обратную сторону - земля круглая
Лучший вариант!(по безопасности, с учётом заданных условий).

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

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

Я читал об этом про установление контакта с внеземными цивилизациями.

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

Не выйдет:

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

AlexCones ★★★
() автор топика

Шифрованный^WПодземный туннель решит проблему перехвата сообщений.

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

Именно. Задача, имхо, не про TCP, а про man-in-the-middle. А значит, нужно было заранее обменяться какой-либо информацией, служащей ключём для расшифровки. Не подумали заранее — сами виноваты. :)

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

тогда поймать солдат противника, отрезать язык, привязать взрывчатку - отправить домой. Когда другой генерал услышит взрывы - поймет, что надо выступать.

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

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

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

>Только полные дебилы пойдут что-то штурмовать, когда у них в тылу противник.

«На радостях от этого события христиане проглядели тот факт, что Салах ад-Дин со значительно большей армией находился на расстоянии трехнедельного марша... Франки оказались зажатыми между осаждаемым ими городом и армией султана.» :)

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

P.S. А Акру крестоносцы в итоге взяли.

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

Или так: «Уважаемый Генерал Б! Шлю тебе письмо с предложением времени атаки. Письмо зашифровано таким-то методом. Ключом для расшифровки служат первые 15 букв Военной Тайны № 18, которую наши враги, я надеюсь, не знают. Ответ ожидаю также зашифрованным. Чмоки.»

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

Да и вспышки будет видно, если по городу шарахать =)

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

Суть не в этом. Суть в том, а вдруг генерал Б не получил письмо? Генерал А выступает, а генерал Б нет поскольку не получил письмо. Итог - fail.

AlexCones ★★★
() автор топика

Еще есть такой вариант:
Задача тупая, не описывает все условия среды, но подразумевает очень жёсткие ограничения и намекает, что связь практически не возможна. Поэтому решения не имеет.

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

>Еще есть такой вариант:

Задача тупая, не описывает все условия среды, но подразумевает очень жёсткие ограничения и намекает, что связь практически не возможна. Поэтому решения не имеет.

А уж что за «чудак на букву м» её автор, я постесняюсь здесь писать.

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

Фэил или не фэил — зависит от имеющегося времени и вероятности перехвата шпиона. Если времени много — можно не атаковать, пока не договоришься. Если вероятность перехвата низкая — договоришься быстрее. Если и времени почти нет, и вероятность перехвата высокая — тогда да, фэил.

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

Сформулировал её некий E. A. Akkoyunlu, хотя она была известна и ранее.

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

Ну и вдогонку к искривлению пространства: Если отправить бесконечное количество курьеров, то вероятность, что хотя бы один из них доберётся до места назначения = 100%. (Если я правильно помню)

Значит нужно всего-лишь отправить бесконечное число курьеров.

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

Когда пришёл зашифрованный ответ с подтверждением. Вероятность подбора ключа и взлома шифра остаётся, да. Впрочем, вроде как я слышал, что квантовая криптография может давать 100%-ю гарантию отсутствия проблемы man in the middle... если так, то каждому курьеру по квантовому чемоданчику.

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

> Когда пришёл зашифрованный ответ с подтверждением.

Выходит, что отправитель этого ответа атакует уже вне зависимости от того, получишь ты ответ, или не получишь?

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

>Когда пришёл зашифрованный ответ с подтверждением.

Эээ, нет, проблемы не решает, смотрите:

1) Генерал А отправил генералу Б пакет[1]: «выступаем в 12:00». В этот момент он думает: «а получил ли генерал мой пакет[1]?»
2) Генерал Б получает пакет[1] и отправляет пакет[2]: «принято». Он думает «а получил ли генерал мой пакет с подтверждением[2]?»
3) Генерал А получает пакет[2] и отправляет подтверждение[3]: «принято». В этот момент он думает: «а получил ли генерал мой пакет[3]?»
...

И так до бесконечности. Так что проблема появляется даже при отсутствии врага, ведь в условии стоит «пока оба генерала не будут 100% уверены, что они оба выступят в одно и тоже время».

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

>Никаких сообщений не надо, врубаем чисто логику.

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

кстати, если взять двух абсолютно идентичных генералов - то они смогут назвать одинаковое псевдослучайное число (и вообще им не надо будет общаться, каждый и так будет знать, что второй думает)


ЗЫ
а в Уставе разве не написано, что в таком случае делать?

Anonymous ★★★★★
()

Да, а чем плох вариант вообще не атаковать?

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

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

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

Manhunt ★★★★★
()

Если гонцов конечное количество, то слать, пока не придёт ответ. Можно не больше одного ответа с каждой стороны. (ответ на первое сообщение и ответ на ответ) Слать таким образом, чтоб в случае того самого, последний из закончившихся гонцов, с допущением, что его не съело осаждаемое племя, прибыл не позже начала атаки. Если всех поймали, то как бы ой. Приятного аппетита нашим друзьям.

Если же гонцов бесконечное количество, то послать всех. Можно сразу в атаку. Можно без оружия.

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

> И так до бесконечности.

Неа. Только лишь до 4 шага. Потом у обеих будет и время атаки и как минимум по одному подтверждению.

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

> Если же гонцов бесконечное количество, то послать всех. Можно сразу в атаку.

Самое время подумать о плотности материи, кубометр которой мог бы содержать бесконечное количество гонцов, каждый из которых имел бы массу 1 кг :D

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

1) Зачем нужен четвёртый шаг?

2) Где гарантия, что четвёртый шаг будет успешным? (дойдёт до адресата)

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

Уговорил, трёх шагов хватит для оптимистов, 5 для пессимистов :)

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

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

Настоящим пессимистам пяти шагов не хватит. Впрочем, таковые и не дослужатся до генералов. :)

Бинго! Вот и правильный ответ: Ни один в мире генерал не будет ждать 100%-ной гарантии успеха. :)

A26
()

>Единственным способом связи между генералами является отправка посыльных с сообщениями через долину. Но долина занята противником и любой из посыльных может быть перехвачен.

Частный случай условия — все гонцы перехватываются. Он не имеет решения. Значит и общая задача решения не имеет.

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