簡體   English   中英

分治算法在O(logn)中找到假幣

[英]Divide and conquer algorithm to find the counterfeit coin in O(logn)

在此處輸入圖片說明

嗨! 我試圖找到解決此問題的信息和示例,但找不到。。這是我的考試准備問題,而不是作業。有人可以解釋解決此問題的步驟嗎? 而且,具有相關示例的任何資源? 干杯!!

我將以(log2(n)+ 1)個步驟給出解決方案。 +1是查找是輕還是重。 如果您知道那部分,它將采取log2(n)的步驟。

分成兩堆。 假設A和B相互稱重,您會發現A<B (讀取,樁A的重量A<B重量)。 拿一堆,說A,分裂並稱重零件。 如果它們相等,您將得到兩個事實:

  • 偽造幣在B中
  • 它比其他硬幣重。

然后繼續進行B堆。(然后進行了+1稱重。)

除此以外:

  • 假幣在A中
  • 它比其他硬幣輕。

現在,說A裝有假幣。 然后,將A的兩個分開的樁命名為A and B ,然后重復。

PS:我用3 ^ n個硬幣解決了這個難題(幾年前)。 由於它的復雜度為(log3(n)(+1)),因此它也需要執行相同數量的步驟。 我將其留給您解決下一個問題。

PPS:我將問題的第二部分留給您。 自己應用Master's theorem
提示:與binary search相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM