У меня есть (теоретическая) сеть с N узлами, каждая со своим фиксированным местоположением. Каждый node отправляет одно сообщение за такт, которое должно доходить до корня либо напрямую, либо через другие узлы.
Стоимость передачи сообщения от node A до node B - это расстояние между ними в квадрате.
Задача состоит в том, как связать эти узлы в формате дерева, чтобы создать наиболее энергоэффективную сеть.
например. Вот два возможных способа связывания этих узлов, причем левый более энергоэффективен.
Я работаю над генетическим алгоритмом для решения проблемы, но мне было интересно, есть ли у кого-либо другие идеи или кто-то знает какой-либо соответствующий открытый код.
Изменить: Еще один аспект сети, о котором я забыл упомянуть, заключается в том, что каждый node имеет питание от аккумулятора. Поэтому, если у нас слишком много сообщений, которые маршрутизируются через один и тот же node, тогда батарея node истощается, что приведет к сбою сети. Энергоэффективность сети измеряется тем, сколько сообщений может быть успешно передано от каждого node до корня до того, как какой-либо из node исчерпает батарею.
Редактировать # 2: Прошу прощения за исключение в исходном тексте вопроса. Столько же, что и раньше, некоторые из ваших более ранних ответов не совсем то, что я ищу, но я не был знаком с алгоритмами MST, поэтому спасибо, что рассказали мне о них.
В надежде сделать вещи яснее, позвольте мне добавить это:
Все узлы отправляют по одному сообщению за каждый цикл, включая внутренние узлы. Внутренние узлы также отвечают за передачу любых сообщений, которые они получают. Это добавляет напряжения на их батарею, если они отправляют дополнительное сообщение самостоятельно. Цель состоит в том, чтобы максимально увеличить количество циклов до того, как разрядится батарея node.