在n枚硬币中查找假币的算法

gow*_*ath 5 algorithm

这就是仅使用称重天平从一组硬币中找到假币的经典问题。为了完整起见,以下是此类问题的一个示例:

\n\n
\n

一个众所周知的例子有九个(或更少)物品,比如硬币(或球),除了一个之外,其他物品的重量相同,在这个例子中,它比其他物品轻\xe2\x80\x94a假货(一个奇怪的球)。只有在秤 \xe2\x80\x94 上称重才能感觉到差异,但只能称量硬币本身。是否可以仅通过两次称重来分离出假币?

\n
\n\n

我们正在处理只有一枚硬币是假币的情况,并且我们知道它是怎么回事(即我们知道它更重/更轻)。

\n\n

N我的问题是,是否有一种通用的有效算法来解决带有一枚假币的该问题的通用版本。我一直在考虑这个问题,到目前为止,我已经知道,如果N是 的形式3^k,那么您可以通过递归地将它们分成三个组来找到伪造品\xe2\x8c\x88log_3_(N)\xe2\x8c\x89。这对所有 N 人都是如此,而不仅仅是来自那些人吗3^k?如果是这样,我们能做得更好吗?

\n

Fil*_*und 1

除非您有有关输入的任何额外信息,否则\xe2\x8c\x88log_3_(N)\xe2\x8c\x89这是您能达到的最佳信息。三组相同数量的硬币,将其中两枚相互称重,您会看到三组中哪一组的重量较小。递归地将相同的算法应用于最轻的组。上述任何剩余的硬币k^3也将保留以供以后的回合使用。

\n