伽罗瓦域中的快速矩阵指数计算

时间:2015-01-12 09:53:51

标签: algorithm matlab matrix galois-field

我正在寻找一种快速计算伽罗瓦域2(GF(2))中矩阵A的功率的方法。 A是双矩阵,其x的取幂由

表示
A^x = A * A * A * ... * A     (x times)

简单的方法是将A转换为GF(2)(因为给定矩阵A是双矩阵)然后执行取幂运算。 Matlab代码

A1 = gf(A, 2) % // convert to galois field
A_pow_x_first = A1^x; % // Perform A^x

但是,这种方式需要很长时间才能将矩阵A转换为GF(2)。我正在寻找一种没有GF(2)转换的快速方式。也就是说,我使用mod操作

A_pow_x_second = mod(A^x, 2)

然而,问题是第一种方式和第二种方式的结果不相似。问题是数量溢出。一些成员建议我将矩阵A转换为int64。但是,我认为处理我的问题不是好方法。您能否建议我在matlab中快速完成此操作?提前致谢

这是一个简单的例子

>> A = [1     0     1
        0     1     1
        1     1     1]

第一种方式,

>> A_pow_x_first = gf(A, 2)^50

结果:

 0           1           0
 1           0           0
 0           0           1

第二种方式

>> A_pow_x_second = mod(A^50, 2)

A_pow_x_second =

     0     0     0
     0     0     0
     0     0     0

如何快速计算A^x而不转换为具有类似结果的GF(2)?

0 个答案:

没有答案