随机算法确定一个条目中两个矩阵是否不同?

时间:2014-06-09 19:10:31

标签: algorithm matrix probability

Alice和Bob分别有两个n * n二进制矩阵A和B.

他们想知道A = B是否只有一个条目。

我需要设计一个带有单向错误的随机算法,其中Alice只向Bob发送一个大小为O(n(log(n)^ 2))字节的消息。

  • Bob只返回"是"或"否"。
  • 如果A = B,除了只有一个条目,Bob将返回"是"概率为1。
  • 否则,鲍勃将返回"否"概率至少为1/2。

我现在的解决方案: 爱丽丝做的事: 为每一行和A中的每一列创建多项式P(x),找到主数q,4n ^ 2&lt; = a&lt; = 5n ^ 2,找到数t,1 <= t&lt; = q并计算P(t)对于我们创建的每个多项式,计算每个多项式的P(t)modq。将结果从每个p(t)modq计算q和t发送给Bob。 鲍勃做的是什么: 为A中的每一行和每列创建多项式P(x)。 计算我们创建的每个多项式的P(t)。计算每个多项式的P(t)modq。 现在让我们说第i行为Pi(x),第j列为Pj(x)。如果Pi(t)modq和Pj(t)modq的结果与Alice发送的结果不同,那么我们知道在[i,j]条目中我们有不同的位。如果我们只有一个差异,那么我们返回&#34;是&#34;否则,我们返回&#34;否&#34;。

我不知道这个算法是否合适,因为在问题中他们要求一个算法发送一个大小为O(n(log(n)^ 2))字节的消息,这里我们发送一个大小的消息of O(n(log(n)))bytes

请帮帮我:)。

2 个答案:

答案 0 :(得分:0)

我的理解:
n*n矩阵A和B,每个条目01;爱丽丝有A,鲍勃有B
只传递了一条消息,最多O(n*log^2(n))字节
如果只有一个条目不同,则返回1(是) 否则,在至少50%的情况下返回0(否)(包括“无条目不同”)。

简易解决方案:
通过对所有值进行异或,将所有n*n矩阵条目减少到一位 (对于A和B),升技是消息(长度常数1位) Bob将Abit与他的Bbit进行了比较。如果不同“是”,否则为“否”。

如果矩阵中只有一个位被翻转,那么它们肯定会有所不同 如果矩阵相同,则为“否” 对于所有其他自然数字,即使计数也会得到“否”,否则“是” =&GT;在整个自然数字上,只有一个“不”比“是”更多 因为缺少的是特殊情况 =&GT;超过50%的所有casses“No”,但是特别的。

但也许我不明白这个问题,因为它太容易了......

答案 1 :(得分:0)

我认为你走在正确的轨道上。这就是我要做的。我认为哈希的一种形式适合这种情况。您需要为每个行和列创建哈希值并将其传递给Bob。然后,Bob将使用相同的散列方案比较自己的矩阵,并检查哪个散列不同(如果有的话)。

我认为这里的散列函数是问题中最重要的部分。您需要找到一个能够处理2 ^ n个不同数字的函数,并将它们散列为最大(nlog(n)^ 2)/ 2个字节数,同时满足问题的正确概率考虑(50%) 。如果哈希函数能够做到这一点,那么你传递2n个哈希并且不会超过限制。

我不认为你需要担心你的邮件大小低于要求的限制。