2.2 轨道
要理解一个变换的全局行为,可以考察其轨道(orbit)的结构.所谓变换的轨道,就是从一个开始元素出发,通过反复应用这一变换能到达的所有元素.如果对某个n.0有y=fn(x),就说y是从x出发在变换f下可达的(reachable).如果有某个n.1使x=fn(x),就说x在f下是环路的(cyclic).如果x不在f的定义空间里,称x在f下是终止点(terminal).x在变换f下的轨道(orbit)就是x
在f 下可达的所有元素的集合.
引理2.2 一条轨道不会同时包含环路元素和终止元素.
引理2.3 一条轨道至多包含一个终止元素.
如果元素y为从x在f下可达,从x到y的距离(distance)定义为从x得到y的最小的变换步数.显然,距离并不总有定义.
给定变换类型F,类型DistanceType(F)是一个足够大的整数类型,足以表示任何变换f∈ F从T=Domain(F)的一个元素到另一元素的最大变换步数.如果类型T用k个二进制位表示,它就有2k 个值,而不同值之间只有2k.1个变换步.这样,如果T是固定大小的类型,同样大小的整数类型就能作为表示T上任意变换的距离的合法类型.(可以不用距离类型,而是在powerunary里用任意整数类型,因为这种额外推广不会在这里造成问题.)一种常见情况是同一定义域上的变换都具有同样的距离类型.这时类型函数DistanceType就对这一定义域类型有定义,定义了与相关变换类型对应的类型函数.
如果类型函数DistanceType存在,就可以写出下面过程:
template
requires(Transformation(F)) DistanceType(F) distance(Domain(F) x, Domain(F) y, F f) {
//前条件:y在f下从x可达
typedef DistanceType(F) N;
N n(0);
while (x != y) {
x = f(x);
n = n + N(1);
}
return n;
}
轨道有不同的形状.x在某变换下的轨道可以是
无穷的 若它既不是终止的也没有环路
终止的 若它有一个终止元素
环路的 若x 是环路的
ρ 形的 若x本身不是环路的,但它的轨道包含环路元素
如果x的轨道不是无穷的,它就是有穷的.图2.1给出了轨道的各种情况.
轨道环(cycleoforbit)是轨道的一集元素,规定轨道为无穷或终止时其环为空.轨道柄(handleoforbit)是轨道里除去环之外的部分,环路轨道的柄为空.连接点(connectionpointoforbit)是轨道上的第一个环路元素,对环路轨道取其第一个元素,对ρ形轨道是轨道柄之后的第一个元素.轨道规模(sizeoforbit)o是轨道中不同元素的个数;轨道的柄规模(handlesize)h是轨道柄中元素的个数;环规模(circlesize)c是轨道环中元素的个数.
引理2.4 o = h + c
引理2.5 从轨道中任意一点到该轨道的环路中任意一点的距离都有定义.
引理2.6若x和y是规模为c的环里的两个不同点,那么
c=distance(x,y,f)+distance(y,x,f)
引理2.7若x和y是规模为c的环的两个不同点,x到y的距离满足
0.distance(x,y,f)