密码学家就餐问题

DINING CRYPTOGRAPHER’S PROBLEM

Algorithm:

1. Each cryptographer flips an unbiased coin (in secret)

2. Each shows theresult to the person on the right

3. Each cryptographer states whether the two coins he can see are the same or different

4. If one of the cryptographers is the payer he says the opposite of what he sees

5. An odd number of differences means that a cryptographer has paid, otherwise the NSA paid

6. The algorithm is extensible to any number of diners

证明:为什么当密码学家人数N >= 3时,在NSA付款的情形下,他们输出的“不同”的数目一定是偶数个?



My answer follows:

The point: An odd number of differences means that a cryptographer has paid, otherwise the NSA paid


分析:假设密码学家们就餐的费用都是由NSA所支付,则密码学家中每个人都得报告自己所看到的真实情况。


密码学家就餐问题_第1张图片
n=3

N 为3 时,           

此时,密码学家们抛出的硬币正反面异同情况为“三个都相同”,“其中两个人的相同”。

分析第一种情况:

他们输出的“不同”的数目为0个,0为偶数。

分析第二种情况:

他们输出的“不同”的数目为2个,2为偶数。

A ^ B ^ C

= (a^c) ^ (b^a) ^ (c^b)

= a^c ^ b^a ^ c^b

= a^b ^ b^a

= 0

N为4时,A→B,B→C,C→D,D→A

此时,密码学家们抛出的硬币正反面异同情况为,“四个都相同”,“其中三个人的相同”,

“其中两个人的相同”。

其实可以拆分成三个密码学家对比后的结果再跟最后密码学家D得出的结果比较。即前面

三人A,B,C的情况为“三个都相同”,“其中两个人的相同”。

第一种情况:

A、B、C三个都相同,

D跟他们相同,则他们输出的“不同”的数目为0个,0为偶数。

D跟他们不同,则他们输出的“不同”的数目为2个,2为偶数。

第二种情况:

A、B、C中有两个是相同的;则跟D一起比较,则他们输出的“不同”的数目为2个或4

个,2和4均为偶数。

… …

以此类推,有n位密码学家时,将前面(n-1)位密码学家与第n位的正反面情况相比较,最

多不同次数的情况应该为

N为偶数时,最多的输出的“不同”的次数为n;

N为奇数时,最多的输出的“不同”的次数为n - 1;

综上,当密码学家人数N >= 3时,在NSA付款的情形下,他们输出的“不同”的数目一定

是偶数个。

你可能感兴趣的:(密码学家就餐问题)