好的,这是我经常遇到的一个难题 - 给定一组12个球,其中一个有缺陷(重量更轻或更多)。允许您重量3次以找到有缺陷,并告知哪个重量更轻或更多。
这个问题的解决方案存在,但我想知道我们是否可以通过算法确定是否给定一组“n”球,你需要使用波束平衡来确定哪一个是有缺陷的最小次数以及如何(更轻或更重)。
答案 0 :(得分:5)
Jack Wert的精彩算法可以在这里找到
(如案例n所述的形式为(3 ^ k-3)/ 2,但它可推广到其他n,请参阅下面的文字)
更短版本,可能更具可读性的版本
对于形式为(3 ^ k-3)/ 2的n,上述解决方案完美适用,所需的最小称重次数为k。
在其他情况下......
为所有n。
调整Jack Wert的算法为了修改所有n的上述算法,您可以尝试以下(我没有尝试证明正确性):
首先检查n是否来自(3 ^ k-3)/ 2。如果是,请应用上述算法。
如果没有,
如果n = 3t(即n是3的倍数),则发现最小的m> 1。 n使得m具有(3 ^ k-3)/ 2的形式。所需的称重数量为k。现在形成组1,3,3 ^ 2,...,3 ^(k-2),Z,其中3 ^(k-2)< Z< 3 ^(k-1)并从Jack的解决方案中重复算法。
注意:对于任意Z,我们还需要概括方法A(我们知道硬币是否较重的情况)。
如果n = 3t + 1,尝试解决3t(保持一个球)。如果你没有在3t中找到奇数球,你留在那里的那个是有缺陷的。
如果n = 3t + 2,则形成3t + 3的组,但是一组没有一个球组。如果你必须旋转一个球组来到舞台,你知道有缺陷的球是两个球中的一个,然后你可以将这两个球中的一个球与一个已知的好球(从其他3个球中)中称重
答案 1 :(得分:1)
三分法! :)
说明: 给定一组n个球,将其细分为3组A,B和C的n / 3球。
比较A和B.如果相等,那么有缺陷的球在C中。 等
所以,你的最小次数是你可以将n除以3的次数(抱歉,我不知道英文单词)。
答案 2 :(得分:0)
您可以使用一般规划算法:http://www.inf.ed.ac.uk/teaching/courses/plan/