А в чем же собственно проблема? Проблема в том, что такой группе необходима определенная безопасность, то есть, проще говоря, нельзя допустить ее раскрытия. Для этого нужно, чтобы каждый ее член лично знал как можно меньшее количество своих собратьев по борьбе, но вместе с тем, чтобы структура работала слаженно, как единый механизм. К сожалению, модель, предложенная Робертом Хайнлайном в его блистательном романе “Луна суровая хозяйка”, совершенно не подходит к реалиям сегодняшнего дня - нет у нас Майка и все тут!
В таком случае можно предложить схему, представленную на рис. 1.
Ее достоинства очевидны: простота и надежность (каждый человек знает только двоих), не менее очевидны и недостатки: малая скорость передачи информации и абсолютная недопустимость разрывов. Отбрасываем. Что еще? На выручку приходит так называемое бинарное дерево, показанное на втором рисунке. С его помощью мы устраняем одну из основных проблем, а именно проблему быстроты передачи, ведь с каждой ступенью скорость охвата увеличивается ровно в два раза. Правда, здесь нам приходится увеличивать количество знающих друг друга, но, в конце концов, это же балаган, куда могут затесаться случайные люди, теоретически каждый может найти пару надежных людей в качестве своих “подчиненных”, хотя никакой субординации тут нет и в помине, взгляните на рисунок и увидите, как может, распространятся информация, исходящая от любого из членов подполья. Причем, что очень важно, никакого дублирования сообщений не происходит, то есть одну и ту же весть или руководство к действию вы два раза не получите. Но опять же наше дерево неустойчиво к разрывам в своей структуре…
Для разрешения этой проблемы придется снова пожертвовать увеличением количества “знакомых”, иного выхода я не вижу. На третьем рисунке вы можете увидеть видоизмененное бинарное дерево с добавленными “горизонтальными” связями.
То есть в этом случае каждый должен позаботиться о том, чтобы его подопечные знали координаты друг друга. Дальше, для простоты, некоторых членов обозначим буквами латинского алфавита, так будет удобнее объяснять. Итак, сложность: необходимо связать C и D. Для этого A дает B, грубо говоря, телефон своего “левого ведомого” (кстати, не кажется ли вам, что было бы лучше, если сначала заводить себе именно “левого”?), т.е. между B и C неминуемо образуется связь, затем уже B знакомит C и D. Следует учитывать, однако, что “вертикальные” связи имеют приоритет над резервными “горизонтальными”, делается это в целях недопущения дублирования, о чем говорилось выше. Таким образом, если продолжить схему и далее, можно увидеть, что каждый человек будет иметь до шести связей, а вот “основатель”, как это не забавно, только две.
Рисунок 4 демонстрирует, что станет с системой в случае исключения из нее одного звена.
Как видим, она остается вполне работоспособной. Хотя и возникают новые сложности: как производить “усыновление” (т.е. заполнение возникших пустот), как действовать в более сложных ситуациях неравномерной заполненности уровней, насколько далеко по горизонтали нужно передавать информацию в зависимости от причиненного группе урона, да и еще черт знает какие тонкие моменты могут возникнуть в процессе работы. И их нужно обдумывать уже сейчас, пока хоть и на бумаге. Поэтому не считайте эту маленькую статейку законченным руководством, а давайте лучше развернем полномасштабную дискуссию по созданию стройной теории структуры связей в подпольном сообществе. Пишите, будет интересно услышать мнение других.
Л. Закиров, zlsoft@mail.ru