algorithm - 将数字序列编码为单个数字——使用中国余数定理

标签 algorithm chinese-remainder-theorem

我需要用整数 K 对任意数量的元素(但有限)的序列 S 进行编码,并且能够解码 K 以取回初始序列。

我需要这样做,以便计算机能够很好地处理数字 K

我是这样做的(用 lisp 语言):

  • 假设序列S有n个元素e1, ... en

  • 生成前n个质数p1 ... pn

  • 写 K = p1^e1 + p2 ^ e2 + ... + pn ^ en

我试过这个方法。然而,我得到了巨大的数字。

我知道可以用中国余数定理来解决这个问题,而且这样得到的K并没有那么大。

有人可以帮助我使用这个定理来编码一个序列吗?

编辑:

我希望通过一个具体的简单示例来了解使用ch r th 进行编码的算法。我无法理解来自维基百科和其他网络资源的理论思想。

最佳答案

您正在寻找Gödel numbering of sequences .这是一种将(有限)数字序列编码为单个数字的方法。中国剩余定理给出了一种递归的构造方法。

关于algorithm - 将数字序列编码为单个数字——使用中国余数定理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14351841/

相关文章:

math - 从数个余数还原一个数(中国余数定理)

javascript - HTML SELECT 元素使用哪种算法在您键入时显示结果?

algorithm - 在 Mod 不是素数的情况下计算逆 Mod

c# - Google Code Jam 2013 R1B-坠落的钻石

c# - 收集DAG的所有路径

syntax-error - 如何在pari/gp中将intmod转换为int?

haskell - 中国剩余定理 Haskell

将字符串从一种格式转换为另一种格式的算法

python - 如何更新概率矩阵