我正在寻找一种快速计算 galois 域 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) 的情况下快速计算?