这是一个理论问题,所以期望这里的许多细节在实践中甚至在理论上都是不可计算的。
假设我有一个我要压缩的字符串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}}出于同样的原因。
如果它存在,我们可以表达它,即它是可计算的吗?
答案 0 :(得分:0)
您应该关联相关的previous questions。
2a上。如上所述,您无法确定b_min_s
,因为这会导致矛盾。因此,我认为你不能证明A中的操作足以减少它。
2B。您可以强制B_s
,但这是一个无限集,并且该过程是非终止的。但是,对于B_s
中的每个程序,您可以计算从b_cano_s
到B_s
的操作。但是,这并不意味着这些可能的操作将是有意义的。似乎“删除此范围内的字符”,“在此位置插入字符”等操作符合条件。