有限环判定算法

问题:
寻找新的环的结构不变量,区分R8_8、R8_10这2个8阶环。
    {8,6,"[1,3,4,0],4,1,0,8,1,3,7,48,7,8,[1,1,6,0]","R8_6"}, \
    {8,8,"[1,3,4,0],4,0,0,8,1,5,7,48,7,2,[1,3,4,0]","R8_8"}, \
    {8,9,"[1,3,4,0],4,0,0,8,1,5,7,48,7,2,[1,1,6,0]","R8_9"}, \
    {8,10,"[1,3,4,0],4,0,0,8,1,5,7,48,7,2,[1,3,4,0]","R8_10"}, \
    {8,16,"[1,3,4,0],4,1,0,8,1,3,7,48,7,8,[1,3,4,0]","R4_2R2_1"}, \
    {8,23,"[1,3,4,0],4,1,0,8,1,3,7,48,7,8,[1,3,0,4]","ZimodnZObj(2i,8)"}, \
    {8,24,"[1,3,4,0],4,1,0,8,1,3,3,32,7,8,[1,3,0,4]","R8_24"}, \
已有的环的结构不变量:I,S,S1,N0,n0,bA,bO,n1,n2,n4,n5,n6,n7,n8
理想阶的分布I
子环阶的分布S
单个生成元子环的阶的分布S1
非零乘因子对的加法阶的分布N2
单个生成元真子环的ID的分布I1
2个生成元真子环的ID的分布I2
加法群群元阶的分布N0,特征n0
是否交换bA
是否有幺元bO
不可逆元个数n1
幂等元个数n2
2次幂零元个数n4
2~3次幂零元个数n5
零乘个数n6
零因子个数n7
中心大小n8
其中除I、S、S1、N0、n0、N2、I1、I2外,其他不变量仅与乘法结构有关。
开源工具使用示例:
g++ -o calRing calRing.cpp
./calRing R4.txt
R4:1有零因子交换幺环,1,1,2,2,1,1,8,1,4
G4ElementToOrder(0)=1
G4ElementToOrder(1)=2
G4ElementToOrder(2)=2
G4ElementToOrder(3)=2
R4有1个1阶元,3个2阶元,0个4阶元
环的结构不变量N0,n0,bA,bO,n1,n2,n4,n5,n6,n7,n8,S1=[1,3,0],2,1,1,2,2,1,1,8,1,4,[1,2,1]
交换,幺环,不可逆元个数n1=2,幂等元个数n2=2,2次幂零元个数n4=1,2~3次幂零元个数n5=1,零乘个数n6=8,零因子个数n7=1,中心大小n8=4,
0 1 2 3 
分析环的结构完毕!
git add calRing*
git commit -m "增加加法群同阶元的分布N0、单个生成元子环的阶的分布S1这两个环不变量"
[master b4692c4] 增加加法群同阶元的分布N0、单个生成元子环的阶的分布S1这两个环不变量
git push origin master
gap> getS1:=function(L1,LL1) S1:=[];for a in L1 do n:=0;for b in LL1 do if b=a and b in L1 then n:=n+1;fi;od;Add(S1,n);od;return S1;end;;
gap> getGnEOrder:=function(A,a) n:=Size(A);t1:=1;ret:=-1;for i in [1..n] do t1:=A[t1][a];if t1=1 then ret:=i;break;fi;od;return ret;end;;
gap> m:=8;;ni:=19;;L:=Elements(R);;LL:=[];;for i in [1..m] do Add(LL,Size(RingByGenerators([L[i]])));od;Sort(LL);AddArr:=[];;for i1 in L do A:=[];for i2 in L do Add(A,Position(L,i1+i2));od;Add(AddArr,A);od;N1:=[];;for i in [1..m] do Add(N1,getGnEOrder(AddArr,i));od;n1:="未知";;n2:=0;;for i2 in L do if IsIdempotent(i2) then n2:=n2+1;fi;od;n3:=0;;for i3 in L do if IsOne(i3) then n3:=n3+1;fi;od;n4:=0;;for i4 in L do if IsZero(i4)=false and i4^2=Zero(R) then n4:=n4+1;fi;od;n5:=0;;for i5 in L do if IsZero(i5)=false and i5^3=Zero(R) then n5:=n5+1;fi;od;n6:=0;;for i6 in L do for j6 in L do if IsZero(i6*j6) then n6:=n6+1;fi;od;od;bA:=0;;bO:=0;;if IsAbelian(R) then bA:=1;fi;if n3=1 then bO:=1;fi;n7:=0;;for i7 in L do for j7 in L do if IsZero(i7)=false and IsZero(j7)=false and IsZero(i7*j7) then n7:=n7+1;break;fi;od;od;CR:=Center(R);;n8:=Size(CR);;Print("环R",m,"_",ni,"的结构不变量N0,n0,bA,bO,n1,n2,n4,n5,n6,n7,n8,S1=",getS1([1,2,4,8],N1),",",Characteristic(R),",",bA,",",bO,",",n1,",",n2,",",n4,",",n5,",",n6,",",n7,",",n8,",",getS1([1,2,4,8],LL),"\n");Print("单个生成元子环 的阶的分布:");List(LL);
环R8_19的结构不变量N0,n0,bA,bO,n1,n2,n4,n5,n6,n7,n8,S1=[ 1, 3, 4, 0 ],4,1,0,未知,1,3,7,40,7,8,
[ 1, 3, 4, 0 ]
单个生成元子环的阶的分布:[ 1, 2, 2, 2, 4, 4, 4, 4 ]
环R4_2的结构不变量N0,n0,bA,bO,n1,n2,n4,n5,n6,n7,n8,S1=[ 1, 1, 2 ],4,1,0,未知,1,1,3,12,3,4,[ 1, 1, 2 ]
单个生成元子环的阶的分布:[ 1, 2, 4, 4 ]
环R4_7的结构不变量N0,n0,bA,bO,n1,n2,n4,n5,n6,n7,n8,S1=[ 1, 3, 0 ],2,0,0,未知,3,1,1,10,1,1,[ 1, 3, 0 ]
单个生成元子环的阶的分布:[ 1, 2, 2, 2 ]

问题:把22种12阶环构造出来?
12阶循环环(加法群是C_12)有T(12)=|{1,2,3,4,6,12}|=6个
12阶非循环环(加法群是C_2×C_2×C_3)有22-6=16个
R12_1:2有零因子交换无幺环,1,0,12,1,11,11,144,11,12
R12_2:2有零因子交换无幺环,1,0,12,2,1,3,60,11,12
R12_3:2有零因子交换无幺环,1,0,12,2,5,5,72,11,12
R12_4:2有零因子交换无幺环,1,0,12,2,3,3,80,11,12
R12_5:1有零因子交换幺环,1,1,8,4,1,1,40,7,12
R12_6:2有零因子交换无幺环,1,0,12,1,5,11,108,11,12
R12_7:2有零因子交换无幺环,1,0,12,1,11,11,144,11,12
R12_8:2有零因子交换无幺环,1,0,12,1,5,11,108,11,12
R12_9:2有零因子交换无幺环,1,0,12,2,5,5,108,11,12
R12_10:4有零因子非交换无幺环,0,0,12,3,5,5,90,11,3
R12_11:4有零因子非交换无幺环,0,0,12,3,5,5,90,11,3
R12_12:2有零因子交换无幺环,1,0,12,2,5,5,72,11,12
R12_13:2有零因子交换无幺环,1,0,12,4,1,1,60,11,12
R12_14:1有零因子交换幺环,1,1,10,8,0,0,45,9,12
R12_15:4有零因子非交换无幺环,0,0,12,6,1,1,50,11,3
R12_16:2有零因子交换无幺环,1,0,12,2,3,3,80,11,12
R12_17:2有零因子交换无幺环,1,0,12,2,1,3,60,11,12
R12_18:4有零因子非交换无幺环,0,0,12,6,1,1,50,7,3
R12_19:1有零因子交换幺环,1,1,8,4,1,1,40,7,12
R12_20:2有零因子交换无幺环,1,0,12,4,2,2,81,11,12
R12_21:2有零因子交换无幺环,1,0,12,2,2,2,63,11,12
R12_22:1有零因子交换幺环,1,1,6,4,0,0,35,5,12
    {
   int *Arr[]={ \
       &g_R12_1Add[0][0], \
       &g_R12_1Add[0][0], \
       &g_R12_1Add[0][0], \
       &g_R12_1Add[0][0], \
       &g_R12_1Add[0][0], \
       &g_R12_1Add[0][0], \
       &g_R12_7Add[0][0], \
       &g_R12_7Add[0][0], \
       &g_R12_7Add[0][0], \
       &g_R12_7Add[0][0], \
       &g_R12_7Add[0][0], \
       &g_R12_7Add[0][0], \
       &g_R12_7Add[0][0], \
       &g_R12_7Add[0][0], \
       &g_R12_7Add[0][0], \
       &g_R12_7Add[0][0], \
       &g_R12_7Add[0][0], \
       &g_R12_7Add[0][0], \
       &g_R12_7Add[0][0], \
       &g_R12_7Add[0][0], \
       &g_R12_7Add[0][0], \
       &g_R12_7Add[0][0], \
   };
   int *Mrr[]={ \
       &g_R12_1Mul[0][0], \
       &g_R12_2Mul[0][0], \
       &g_R12_3Mul[0][0], \
       &g_R12_4Mul[0][0], \
       &g_R12_5Mul[0][0], \
       &g_R12_6Mul[0][0], \
       &g_R12_7Mul[0][0], \
       &g_R12_8Mul[0][0], \
       &g_R12_9Mul[0][0], \
       &a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值