外观
磁带 / FFMP 20250915
约 696 字大约 2 分钟
2025-9-15
对于一个函数 f:Z→{0,1},若存在一个有限集合 S 使得 ∀x∈Z,x∈S⟺f(x)=1,则称 f 是(S 对应的)磁带函数。
一个磁带函数列 {fi(x)} 对一个磁带函数 t(x) 是美妙的,当且仅当对于任意 i∈N,以下两个命题至少有一个成立:
- fi+1(x)=fi(x)
- fi+1(x)=fi(x)⊕t(x+Xi),fi(Xi)=1
其中 a⊕b={0,1,a=ba=b
是否存在磁带函数 t(x),对于任意的磁带函数 g,都有对 t 美妙的函数列 {fi(x)} 满足 f0(x) 是 {0} 的磁带函数,且
(1)∃N∈N,∀n>N,∀x∈Z,fn(x)=g(x)?
(2)∀x∈Z,∃N∈N,∀n>N,fn(x)=g(x)?
答案
(1)
由异或的自逆性可得
f(x)⊕g(x)=i⨁t(x+Xi)
而它的取值范围为全体磁带函数。
将磁带函数映射到二进制数(因为有限,所以可以映射),
设 S⊕(t)={F∣∃{ai},F=⨁i2ait},
易证 S⊕(t)⊆{0}∪[t,+∞),于是 S⊕(t)=N⟺t=1。
对应的 t(x) 只有一位为 1,显然不行。
(2)
以下为一个可行的构造。
t(x) 为 {−1,0,1} 对应的磁带函数,{Xi} 依照以下伪代码给出:
Input:g(x)=1S, 目标支持集为有限集 S⊂ZInitialize:f(x)=1{0},Xi=[](操作列表)// Step 1: 将唯一的 1 移到值域左端s←minS,x0←0while x0≥s−padding:operate at x0,x0−1,x0−2,x0x0←x0−3// Step 2: 生成足够多的 1for i=x0 to x0−∣S∣:operate at i// Step 3: 从右向左写入 S 的每个元素并消除影响for i∈reverse(S):x1←max{x<i∣f(x)=1}for j=x1 to i−1:append j to Xiwhile ∃x∈[s,i) with f(x)=f(x−1)=1:x1←max{x∣f(x)=f(x−1)=1∧x<i}append x1−1 to Xi// Step 4: 将多余的 1 移向负无穷while ∃x<s with f(x)=1:c←max{x∣f(x)=1∧x∈/S}if f(c−1)=1:append c−1 to Xielse if f(c−1)=0:append c to Xiappend c−1 to Xiappend c to Xi其中Function operate-at(x):append x to Xifor u∈{x−1,x,x+1}:f(u)←f(u)⊕1
该构造的正确性证明略。