我有一个节点网络,受以下属性的约束:
- 全局集包含 N 个节点。
- 每个节点都能够发现 X 个邻居,其中 X << N。
- 发现邻居是单向操作(即邻居不一定知道自己被发现了,也不一定发现原来的节点)。
我需要完成的是让这些节点自组装一个有效的网络拓扑,这样所有节点都可以用最少的跳数进行通信(我感兴趣的是实用的最小值,而不是理论上的优化最小值,如果它需要解决方案携带额外的复杂性)。这已经是一个普遍解决的问题了吗?也就是说,是否有标准的最佳实践解决方案?
如果我要手动组装节点,我可能会创建一个层次结构,其中一些节点充当其他节点组之间的网关。但是,我不太确定让这些节点自组装的最佳方法是什么。组/层次结构拓扑不是必需的,它只是一个直观的示例。
请注意,一旦拓扑就位,我并不是在寻找有效的消息路由算法(尽管我当然希望拓扑尽可能高效,并且每个节点都尽可能使用接近 X 的通信通道)。