У меня есть асинхронное сетевое неориентированное дерево (V, E) с n = | V | процессы. Единственное, что я знаю для своей сети, - это то, что все процессы имеют уникальные идентификаторы (UID), они знают количество своих соседей, но не знают диаметр и размер сети. Я попытался построить алгоритм выбора лидера в такой сети следующим образом:
A convergecast of <leader> messages is initiated starting from the
leaves of the tree.
Each leaf node is initially enabled to send a <leader> message to
its unique neighbor. Any node that receives <leader> messages from
all but one of its neighbors is enabled to send an <leader> message
to its remaining neighbor.
In the end,
1. Some particular process receives <leader> messages along all
of its channels before it has sent out an <leader> message
the process at which the <leader> messages converge elects
itself as the leader.
2. <leader> messages are sent on some particular edge in both
directions.
the process with the largest pid among the processes that are
adjacent to this edge elects itself as the leader.
Верна ли моя идея и завершается ли приведенный выше алгоритм, когда все процессы знают лидера?