在一個小型體育場內,有幾千人在看臺上。設計一個分佈式算法 使觀衆能夠自我計數。不要假設體育場的任何特定的幾何形狀,除非,如果你想,它是碗形的。明確陳述你的假設,然後提出你的算法和分析體育場問題:提供算法解決問題
我假設成員是一個鏈表,並附加計數器和免費(ptr)..我可能是錯的...請提供一些有用的見解
謝謝進階...
在一個小型體育場內,有幾千人在看臺上。設計一個分佈式算法 使觀衆能夠自我計數。不要假設體育場的任何特定的幾何形狀,除非,如果你想,它是碗形的。明確陳述你的假設,然後提出你的算法和分析體育場問題:提供算法解決問題
我假設成員是一個鏈表,並附加計數器和免費(ptr)..我可能是錯的...請提供一些有用的見解
謝謝進階...
假設每個人都可以跟他/她的鄰居(可能在很多空座位),以及A隊的球迷都願意說話,B隊的球迷,以下可以工作:
每個人都抓住他/她最近的鄰居,這個鄰居還沒有被別人抓住,形成至多兩個人的團體。現在每個人都記得他們所在團隊的規模(可以是1或2)。現在,每個小組的領導者都可以選擇,以便他能夠與另一個小組的成員溝通。每個小組的領導人都試圖將他們的小組與另一個小組加入,兩個(現在加入的)小組中的每個小組成員都會記住每個小組的成員總數(這可以通過廣播要添加到小組中的新值來完成) 。這個過程繼續,直到只剩下一個組。在這個過程結束後,每個人都知道體育場內的人數。
希望這會有所幫助。
對於每一列,選擇一個領導者的規則是「最接近領域的人是領導者」(這些席位通常是填充的)。領導者按照以下方式啓動該專欄中的人員統計:
1.與直接坐在後面的人握手,然後問「你?」
2.如果沒有人在背後,回答應該是1
,否則在第1步中有人在後面,答案比來自背後的人的回答多一個。
3.領導者立即將此號碼寫入董事會,並持有
4.在這些領導者中,最年輕的人應該開始收集這些董事會,並添加他們。如果她遇到一個比她的收集委員會年輕的人,那麼到那時爲止的計數會交給另一個人。如果年齡相同,高個子會接管。
在一個小型體育場內有幾個 千人在看臺上。設計一個分佈式算法,使 受衆能夠自我計數。
費曼回答(見round manhole question):大家都喊「幾千!」
+1,問題的答案是......對'最後一個人站立'的佛教'mu'事 – CMR 2011-03-26 00:57:29
+1! – CMR 2011-04-08 12:54:21
什麼*特別*是你的問題在這裏? – 2011-03-25 12:27:43
哪種算法可以幫助我以最小的複雜度解決上述問題 – garima 2011-03-25 13:12:30
我認爲這是不可能的。例如,如果它是一個只有2人的大型體育場,並且它們不在對方的通信範圍內? – mbeckish 2011-03-25 16:22:21