我有一个相当有趣的问题,可能以前已经解决了,但我不确定在哪里看。
我正在开发一个包含以下内容的系统:
我正在尝试开发一种算法&实施:
E.g。一些应该起作用的拓扑结构是:
可以看到对方的4个节点
A-B
|X|
C-D
最多可以看到4个邻居的长行
A-B-C-D-E-F-G-H-I
|
X-Y-Z
示例1-A& B彼此接近,算法决定B应向右移动
1000 2000 3000 4000
0 250 500 750 0 250 500 750 0 250 500 750 0 250 500 750 0
| | | | | | | | | | | | | | | | |
A A A A A
>> >>>>
B B B B
Time ------------------------------------------------------------------------------>
示例2 - A& B对齐,算法决定C应该向左移动
1000 2000 3000 4000
0 250 500 750 0 250 500 750 0 250 500 750 0 250 500 750 0
| | | | | | | | | | | | | | | | |
A B A B A B A B A
<< <<<<
C C C C
Time ------------------------------------------------------------------------------>
无线电通信是未确认/广播信标,因此无法确认RF链路。但是,如果节点包含在他们自己的信标中,那么他们可以分享足够的信息。
e.g。在上面的例子2中,如果A可以听到B,那么A的信标可以包括“B在我之后250ms”。同样地,如果B可以听到A,那么B的信标可以包括“A就在我之后750ms”。
有了这种信息,这个问题开始看起来很像网络图问题,每个节点都可以根据它可以听到的节点和他们可以依次听到的节点从自身向外构建。我已经研究过像生成树协议这样的东西,但是还没有多少运气。
虽然它看起来像网络图问题,但问题实际上是如何改变信标的时间。
本质上,该算法回答了“我应该移动自己的信标吗?如果是,哪个方向?”的问题,但它考虑到了:
Sooooo,在经过大量文章后,我的问题确实是:
我从来没有解决这个“插槽”的想法。相反,我们的节点只是远离任何冲突。即我没有尝试开发插槽算法的解决方案,而是制造了一些试图平均间隔但可能导致振荡的东西。
答案 0 :(得分:0)
我建议您将其分解为两种可以找到的分布式算法。
1)分布式时钟同步。让所有节点在公共时基上达成一致,使用NTP使用的算法。此时,也许有一段时间,可能没有及时分离不同传输的共同协议,但您可以使用http://en.wikipedia.org/wiki/ALOHAnet#The_ALOHA_protocol,但这是一个问题。
2)分布式图着色。一个起点是http://en.wikipedia.org/wiki/Graph_coloring#Parallel_and_distributed_algorithms。我甚至不认识那里的算法,但它至少看起来像你可以参考的工作。在&#34;分散算法&#34;他们还将应用程序引用到无线信道分配,因此其中一些可能与您想要的非常接近。