我们可以仅使用恒定的时间和空间在[n]上构造一个k方向的独立置换吗?
令为固定常数。给定一个整数,我们想要构造一个置换使得:Ñ σ ∈ 小号Ñk > 0k>0k>0ñnnσ∈ 小号ñσ∈Sn\sigma \in S_n 该构造使用恒定的时间和空间(即预处理占用恒定的时间和空间)。我们可以使用随机化。 给定,可以在恒定的时间和空间中计算。σ (我)我∈ [ Ñ ]i∈[n]i\in[n]σ(我)σ(i)\sigma(i) 排列是方向独立的,即,对于所有,随机变量是独立的并且均匀地分布在。ķ 我1,... ,我ķ σσσ\sigmaķkk一世1个,…… ,我ķi1,…,iki_1, \ldots, i_k[ Ñ ]σ(我1个),… ,σ(我ķ)σ(i1),…,σ(ik)\sigma(i_1), \ldots, \sigma(i_k)[ n ][n][n] 我目前所知道的唯一一件事是使用伪随机数生成器使用每个值使用对数空间和多项式计算时间。σ(我)σ(i)\sigma(i) 背景 在最近的一些工作中,我需要上述类似的东西,最后我使用了一些较弱的东西:我允许重复输入并验证是否覆盖了我需要的所有数字(即一团糟)。具体来说,我得到了一个向独立序列,该序列可以在时间中使用恒定空间进行计算。拥有一些简单的东西,或者只知道已知的东西,那将是很好的。Ô (1 )ķkkO (1 )O(1)O(1) 假设条件 我假设单位成本的RAM模型。存储器/寄存器中的每个字的大小均为,每个基本算术运算都需要时间。我愿意假设任何合理的密码学假设(单向函数,离散对数等)。O (1 )O (对数n )O(logn)O(\log n)O (1 )O(1)O(1) 当前的事 正如Kaveh所建议的那样,这是我目前拥有的“简单”技巧(这很标准):让是素数的多项式(认为为)。在这里,每个是从均匀且随机地采样的。很容易看到是具有重复的序列,但它是方向独立的,大约为的数字按此顺序出现。但是请注意,由于数字按此顺序重复,因此不是排列。p p n a …