在一个小型体育场内,看台上有数千人。设计分布式算法 使观众能够统计自己。不要假设体育场的任何特定几何形状,除非你想要,它是碗形的。明确说明您的假设,然后展示您的算法和分析
我假设成员是一个链接列表并附加计数器和免费(ptr)..我可能错了......请提供一些有用的见解
先谢谢...
答案 0 :(得分:11)
假设每个人都可以与他/她的邻居(可能在很多空座位上)交谈并且A队的球迷愿意与B队的球迷交谈,以下情况可以起作用:
每个人都抓住他/她最近的邻居,而这个邻居还没有被其他人抓住,最多只能组成两个人。现在每个人都记得他们所在群体的大小(可以是1或2)。现在,每个组的领导者都以他能够与另一个组的成员进行交流的方式进行选择。每个小组的领导者都试图加入他们的小组,两个小组(现已加入)的每个成员都会记住每个小组成员的总和(这可以通过广播要添加到小组的新值来完成) 。此过程将继续,直到只剩下一个组。在此过程终止后,每个人都知道体育场内的人数。
希望这有帮助。
答案 1 :(得分:3)
在一个小型体育场内有几个 看台上有一千人。设计 一种分布式算法 观众要自己计算。
费曼回答(见round manhole question):大家都喊“几千!”
答案 2 :(得分:2)
对于每一列,选择一个领导者,其规则是“最靠近该领域的人是领导者”(这些席位通常是填充的)。领导者以下列方式启动该栏目中的人员计数:
1.与直接坐在后面的人握手,问:“你?”
2.如果没有人在这个人后面,那么回复应该是1
,否则在后面跟人做第1步,答案不仅仅是后面人的回答。
领导者立即将这个号码写在一块板上,然后把它举起来
在这些领导者中,最年轻的人应该开始收集这些板,并添加它们。如果她遇到的人比她的收集板年轻,那么直到那时的计数会交给另一个人。如果年龄相同,则较高的人会接管。
答案 3 :(得分:2)
答案 4 :(得分:2)
这是另一种算法:
使用此算法,您可以应对错误。