Mapping 约束序列到索引映射
我对如何将一组序列映射到连续整数感到困惑 所有序列都遵循此规则:Mapping 约束序列到索引映射,mapping,discrete-mathematics,Mapping,Discrete Mathematics,我对如何将一组序列映射到连续整数感到困惑 所有序列都遵循此规则: A_0 = 1 A_n >= 1 A_n <= max(A_0 .. A_n-1) + 1 练习的重点是获得一个压缩表,该表在有效序列和单元格之间具有1-1映射 集合的大小仅以可能的唯一序列数为界 我现在不知道序列的长度是多少,但它将是一个小的,这是一个python函数,它可以为您完成这项工作,假设您将这些值存储在一个文件中,并将行传递给函数 def valid_lines(lines): for lin
A_0 = 1
A_n >= 1
A_n <= max(A_0 .. A_n-1) + 1
- 练习的重点是获得一个压缩表,该表在有效序列和单元格之间具有1-1映射
- 集合的大小仅以可能的唯一序列数为界
- 我现在不知道序列的长度是多少,但它将是一个小的,这是一个python函数,它可以为您完成这项工作,假设您将这些值存储在一个文件中,并将行传递给函数
def valid_lines(lines): for line in lines: line = line.split(",") if line[0] == 1 and line[-1] and line[-1] <= max(line)+1: yield line lines = (line for line in open('/tmp/numbers.txt')) for valid_line in valid_lines(lines): print valid_line
def有效_行(行): 对于行中的行: 行=行。拆分(“,”)
如果行[0]==1,行[-1]和行[-1]给定序列,我会对其进行排序,然后使用排序序列的哈希作为表的索引。我认为不排序的哈希应该是正确的
因为A0总是以0开头,我想我们可以把序列看作是一个以12为基数的数字,用它的基数10作为查找的键。(仍然不确定)。有一个自然的序列索引,但没有那么容易计算 让我们寻找一个n>0的n,因为A\u 0=1 索引分两步完成 第1部分: 按A_n=max(A_0..A_n-1)+1的位置对序列进行分组。把这些地方叫做台阶- 台阶上有连续的数字(2,3,4,5,…)
- 在非步数的地方,我们可以把指数小于k的数字从1到步数
每个组都可以表示为二进制字符串,其中1为单步,0为非单步。例如,001001010表示带有112aa3b4c的组,aThat需要枚举整个集合,然后进行查找。这就是我试图避免的,散列部分(没有排序)会起作用,但我需要生成一个包含数千个条目的完美散列。我不是在寻找一个非常有趣的问题,只是我不清楚“我希望能够在给定这样一个序列的情况下,查找一个表,并在该表中给定一个索引,生成该序列。“。可以再解释一下,可以举个例子吗?谢谢。问题在哪里?我看不到任何问号?这不是危险。虽然我没有明确提出问题,但我认为隐含的问题一点也不难发现。有趣。这并没有完全解决如何以/packed/的方式将两个恢复数映射成整数的问题,但是我可以看到一些方法来开始。1,1,2,3,2,1,4 1,1,2,3,1,2,4 1,2,3,4,5,6,7 1,1,1,1,2,3,2
1,2,2,4 2, 1,1,2,3,5
def valid_lines(lines): for line in lines: line = line.split(",") if line[0] == 1 and line[-1] and line[-1] <= max(line)+1: yield line lines = (line for line in open('/tmp/numbers.txt')) for valid_line in valid_lines(lines): print valid_line
T(l,n) = n*T(l-1,n) + T(l-1,n+1) T(1,n) = n
T(7,1) + # for 1000000 2^2 * T(4,2) + # for 001000 2^2 * 3 * T(2,3) # for 010