可能的输出保持代码操作集

时间:2010-07-16 03:38:13

标签: compression operators

这是一个理论问题,所以期望这里的许多细节在实践中甚至在理论上都是不可计算的。

假设我有一个我要压缩的字符串s。结果应该是一个自解压二进制文件(可以是x86 asm,但也可以是其他一些假设的图灵完全低级语言),它输出s

现在,我们可以轻松地遍历按大小排序的所有可能的二进制文件/程序。让B_s成为这些二进制文件的子列表,输出s(当然B_s是不可计算的)。

由于每组正整数必须至少有一个,b_min_s

中必须有一个最小的程序B_s

s开始,我还可以构建一个规范程序b_cano_s,它只是以微不足道的方式输出s。即b_cano_s的大小将位于O(#s)中 - 如果我们将ELF视为数据段,我们甚至会#b_cano_s ~ #s

对二进制文件是否有可能的A个操作:

1。将保留输出。

2a。鉴于b_cano_s,我们可以通过A b_min_s处的操作以某种方式到达。

(2b。鉴于b_cano_s,我们可以B_s到达所有计划。)

表示所有可能的字符串s

条件1 + 2a弱于条件1 + 2b。也许,如果有这样的集合A,我们将自动拥有这两个集合A。 (是这样吗?)

这样的集B_s是否存在?我正在考虑一些明显的操作,比如搜索一些重复的字符串并缩短它。或者一些其他常见的压缩方法。但是,这可能不足以达到所有计划b_min_s,我的意图也不一定是{{1}}出于同样的原因。

如果它存在,我们可以表达它,即它是可计算的吗?

1 个答案:

答案 0 :(得分:0)

您应该关联相关的previous questions

2a上。如上所述,您无法确定b_min_s,因为这会导致矛盾。因此,我认为你不能证明A中的操作足以减少它。

2B。您可以强制B_s,但这是一个无限集,并且该过程是非终止的。但是,对于B_s中的每个程序,您可以计算从b_cano_sB_s的操作。但是,这并不意味着这些可能的操作将是有意义的。似乎“删除此范围内的字符”,“在此位置插入字符”等操作符合条件。