解决这类问题用哪一门数学知识?

来源:百度知道 编辑:UC知道 时间:2024/09/20 13:50:45
有一个序列A=< a1, a2, …, an >。
有两个函数都是A×A→A的映射,其中:
F1(ai,aj)= ak,其中k=(i+j) mod n
F2(ai,aj)= ak,其中k=(i*j) mod n
现在问:
当n=11时,Φ(F1(a1,a2), F2(a2,a3))=a7,Φ的表达式为函数F1 和F 2有限次结合,例如:
F1 (F1(a1,a2), F2(a2,a3))、F2 (F1(a1,a2), F2(a2,a3))、F1 (F1(F2 (F1(a1,a2), F2(a2,a3)),a2), F2(a2,a3))等等都是Φ的合法形式。
求Φ的表达式。
我想问的是用哪一门数学知识可以轻松的解决这类问题。

这道是离散数学的范畴,可以用其中的集合论来解答。
有一个递归算法,比较适合在计算机中建模。

方法如下:
注意:你的题目中没有说得太明白,Φ的合法表达式中是否允许F1,F2对a1,a2,a3及其运算结果任意运算,还是有其他限定,比如a3不能出现在F1中,a1不能出现在F2中。以及是否允许有两个相同的元素进行计算比如F1(a1,a1)这种。所以针对你的不同意图,下面的算法要做相应限定。
1.设集合s1,s2,ss2,设结束元素为at。三个集合元素的形式规定为四元组(f,e1,e2,r),其中,
e1,e2为序列A中的元素;
f=1,2分别表示应用F1或者F2对元素e1,e2进行运算,r表示其运算结果;
f=0表示r不是e1,e2和运算结果,而是一个初始元素;
初始化
s1={(0,0,0,a1),(0,0,0,a2),(0,0,0,a3),(2,a2,a3,a6)};
s2={(1,a3,a6,a9),(2,a3,a6,a7)};
at = a7。

2.从s2中取两个元素,或者从s1、s2中各取一元素。得到的两元素设为x1,x2。用函数F1和F2分别对x1.r和x2.r(即两个元素的第四维)进行计算,结果分别为r1,r2,得到相应四元组xx1=(1,e1,e2,r1)和xx2=(2,e1,e2,r2)。

3.如果r1 = at或者r2 = at,则运算成功结束。转入步骤5获取函数表达式;
如果s1,s2中不存在元素x,使得x.r=r1或x.r=r2,则将该四元组放入ss2中,否则转入步骤2直至运算完所有满足条件的元素组合。

4.如果ss2为空,则运算以失败告终,即找不到满足条件的Φ的形式;
如果ss2不为空集。则将s2中的所有元素移入s1中,将ss2的中元素移入s2中,相当于运算
s1 = s1 + s2,s2 = ss2,ss2 = Φ(空集),
然后转到步骤2,继续运算。

5.假设步骤2得到了ri = at(i=1,2),则得到表达式at = Fi(e1,e2)(i=1,2)。
6.如果at的表达式中存在