Необходим алгоритм децентрализованной трансляции сообщений в автономном режиме (по телефону). - PullRequest
0 голосов
/ 06 июля 2011

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

Фаза подготовки онлайн:

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

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

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

  1. быстрого распространения сообщения (минимальные уровнидерево)
  2. не более 4 контактов в каждом списке (лучше 2 или 3)
  3. некоторый уровень избыточности (поэтому, если член недоступен, он не будет отрезать всю ветку).

1 Ответ

0 голосов
/ 06 июля 2011

Простой ответ: разветвляйте дерево, а затем соедините «листья» на каждой ветке со всеми не листьями на других ветвях.

Позвольте мне предложить больше объяснений.Предположим, что у вас есть 15 человек.Затем начните их следующим образом:

{
  1: [2, 3],
  2: [4, 5],
  3: [6, 7],
  4: [8, 9],
  5: [10, 11],
  6: [12, 13],
  7: [14, 15],

Тогда листья ниже 2 равны 8, 9, 10, 11, а листья ниже 3 - 12, 13, 14, 15. Итак, теперь вы соединяете их с:

    8: [3, 6],
    9: [7, 12],
    10: [13, 14],
    11: [15],
    12: [2, 4],
    13: [5, 8],
    14: [9, 10],
    15: [11]
  }

Таким образом, у вас есть дерево ниже 2 и дерево ниже 3. А если что-то отсутствует на одной стороне, это связано с другой.

Если выувеличьте коэффициент ветвления, затем увеличьте часть дерева, которая является листьями, что еще больше упрощает многосвязное соединение.(Также уменьшается расстояние от корня до любого элемента.)

...