作者aleyukimo (aleyu)
看板Programming
标题Re: [问题] 请问要如何用C++ 设定f(a*b)=f(a)*f(b)?
时间Mon Aug 10 15:22:34 2009
※ 引述《ggg12345 (ggg)》之铭言:
: 手推导的结果是:
: vector_length min_n
: 2 3
: 3 7
: 4 15
: 5 21
: 6 63
7 2^7-1=127
(k=7时,n=2^7-1=127)
: f^vector_lenth(a) = a * f(a)
: 最短循环数 min_n 显然跟 (2^vector_length - 1 ) 有关, (0,0...,0)
: 无法循环
: f 是 shift & round-back2
: * 是 vector bit XOR
: 好玩, 可以介绍用途吗 ?
为了方便,令个数=k
(k=5,代表a b c d e 5个数)
如g大所言,而 n <= 2^k-1
若是n=2^k-1,则会有全值域
我的问题在"k=5"以及"k>=8"的推广
k=5 f(a)=b f(b)=c f(c)=d f(d)=e
若f(e)=ab,则n=15<2^5-1=31
若f(e)=ac,此时满足f^n(a)=a n=2^5-1=31
因为需知道
case1 若 f(a1)=a2 f(a2)=a3 f(a3)=a4.....
f(ak)=a1*a2,则k=? 会满足 n=2^k-1
case2 若不满足n=2^k-1,则f(ak)=?才会满足n=2^k-1
case3 若f(ak)无论等於多少都不满足n=2^k-1
则f(a1)=a2,f(a2)=?,f(a3)=?....会满足n=2^k-1
但n=7,就需验算很多项
而n=8,需要更多项.....
所以想藉助电脑的程式,[从结果中找出规则]
(若有数学的式子,证明结果当然是最好的)
用途在於拉丁方阵的推广(正交拉丁方阵)
谢谢
麻烦各位了 非常感激...
※ 编辑: aleyukimo 来自: 140.127.71.25 (08/10 17:08)
1F:推 LPH66:拉丁方阵啊...完全没想过会扯上关系 @_@ 140.112.30.84 08/10 18:06
2F:→ LPH66:关於Galois Field(有限体)中文的资源不好找 140.112.30.84 08/10 18:06
3F:→ LPH66:不排斥看英文的话英文维基可以去看看 140.112.30.84 08/10 18:07
5F:→ LPH66:然後抱歉泼你一桶冷水 140.112.30.84 08/10 18:08
6F:→ LPH66:你要的东西已经有理论去求了 140.112.30.84 08/10 18:08
7F:→ LPH66:以n=5的例子 a*c,a*d,a*b*c*d,a*b*c*e, 140.112.30.84 08/10 18:09
8F:→ LPH66:a*b*d*e,a*c*d*e 是仅有的6个符合条件的设定 140.112.30.84 08/10 18:09
9F:→ LPH66:以有限体里的术语来说 140.112.30.84 08/10 18:10
10F:→ LPH66:这些和 primitive polynomial 有着直接关系 140.112.30.84 08/10 18:10
11F:→ aleyukimo:不好意思 可以麻烦让我知道是怎麽出来吗 140.127.71.25 08/10 21:14
12F:→ aleyukimo:我需要的就是找理论以应用.非常感谢你 140.127.71.25 08/10 21:18
13F:→ aleyukimo:L大你好,请问前一篇x^5+x+1要如何判断 140.127.71.25 08/11 01:00
14F:→ aleyukimo:是否为题目所要求的n=2^k-1 140.127.71.25 08/11 01:00
15F:→ aleyukimo:非常感谢L大 我有头绪了 敬上万分谢意 140.127.71.25 08/11 01:51