幻符号已知,数值排列组合未知的数据压缩算法(2 / 2)
第三循环(记录为n+1为乘法,n+2为减法,n+3为加法,每次n增加都是加3
2*7-7+2*2-2+7*7-2+2=58(优先计算乘法
2*7-7+2*2-2+7*7-2+2=196(最后计算乘法,先算加减法
第四循环(记录为n+1为减法,n+2为乘法,n+3为加法,每次n增加都是加3
2-7*7+2-2*2+7-7*2+2=-54(优先计算乘法
2-7*7+2-2*2+7-7*2+2=-28(最后计算乘法,先算加减法
第五循环(记录为n+1为加法,n+2为减法,n+3为乘法,每次n增加都是加3
2+7-7*2+2-2*7+7-2*2=-14(优先计算乘法
2+7-7*2+2-2*7+7-2*2=96(最后计算乘法,先算加减法
第六循环(记录为n+1为乘法,n+2为加法,n+3为减法,每次n增加都是加3
2*7+7-2*2+2-7*7+2-2=-3(优先计算乘法
2*7+7-2*2+2-7*7+2-2=-54(最后计算乘法,先算加减法
最后通过运算法则逆推的方式,来从最终结果,确定有限的排列方式,当然这种算法也存在碰撞交叉问题,然而这却是使用最少的运算结果数据,来逆推最多的分布排列数据(能够通过最终结果,得知结果
记录的时候,只需要记录最终结果,各种条件的最终结果
当然了,还有先算加法和乘法,再算减法;先算减法和乘法,再算加法;先算加法和减法,再算乘法;以及各种扩展运算限制,加多运算量生成的结果,然后减少碰撞量,从而能够用最少的(按照规则运算之后得到的结果数据来表达最多的数据
理论上讲,随着算式长度的增加,碰撞交叉出现的次数就会越来越多;
例如:a?b?c?d?e?f?……y?z?aa?ab?ac?……zx?zy?zz?aaa?aab?aac?……………………zzzzzzzzzzzzzx?zzzzzzzzzzzzzy?zzzzzzzzzzzzzz;其中就很有可能出现碰撞交叉;如同md5的碰撞破解一样,两者的md5值一样,然而内容却不全等。
怎么办?
这个时候就更容易了,在什么情况下,+2出现过多少次;-2重选过多少次;*2出现过多少次;+7出现过多少次;-7重选过多少次;*7出现过多少次;+2-2出现过多少次,+7-7出现过度少次,-2+2出现过多少次,-7+7出现过多少次(加减抵消为;(什么运算符号(什么数值(什么运算符号(什么数值各出现过多少次;定义(什么运算符号(什么数值=(一个运算小组;(一个运算小组(一个运算小组(一个运算小组各出现过多少次;(一个运算小组(一个运算小组(一个运算小组(一个运算小组各出现过多少次;(一个运算小组(一个运算小组(一个运算小组(一个运算小组(一个运算小组各出现过多少次;然后就是越来越长的统计数据,用来减少碰撞交叉,以及淘汰碰撞交叉的错误分支。
计算的时候,把带数据每一位中间都加上运算符号,然后运算出结果,把结果记录为带运算符号或不带运算符号的数值(如果数足够大,那么就只能使用带运算符号来减少所占用存储空间长度;
然后解压缩的时候,就进行运算符号逆推,以及排列组合逆推,可如果真就可以使用量子计算机,就可以进行快速的穷举并列运算,最终把碰撞成功的唯一结果导出(如果是多个符合结果,那么就采取更多筛选条件(同样的,压缩时,就要进行解压缩运算,不能只等到解压缩时,才发现等式并不是唯一,而是有多种结果,最常见的,就是7-5=2;然而2不仅可以=7-5,还能等于1-98。