从“利用 pi 压缩文件”想到的 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
c742435
V2EX    问与答

从“利用 pi 压缩文件”想到的

  •  
  •   c742435 2015-08-12 13:41:59 +08:00 4612 次点击
    这是一个创建于 3715 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假设这样一个字典(二进制串)A(n),使得任意长度为n的二进制串b都是A(n)的一个字串。以b在A(n)第一次出现的位置为p(b)。

    是否可以证明,无论怎样优化A(n),都有对于任意b,p(b)的平均二进制长度大于n?

    20 条回复    2015-08-13 06:01:01 +08:00
    LU35
        1
    LU35  
       2015-08-12 14:05:37 +08:00 via Android
    云压缩?服务器存储pi的无限多位,客户上传任何文件转换成十进制并在pi序列中查找最匹配位置,然后在服务器中保存这些位置来标记文件序列所在pi中的位置,任何文件压缩到1kb?
    X_Del
        2
    X_Del  
       2015-08-12 14:36:29 +08:00
    E2DK,各种离线下载不就是这样……任何文件都压缩成了一个地址。
    skydiver
        3
    skydiver  
       2015-08-12 14:40:49 +08:00
    一会儿任意,一会儿平均,是闹哪样
    ryd994
        4
    ryd994  
       2015-08-12 14:48:38 +08:00   1
    反证:如果对于某消息,不存在一下限,则我们可以反复使用该压缩算法,最终的压缩结果可为0或1bit。显然不可能
    https://zh.wikipedia.org/zh/%E7%86%B5_(%E4%BF%A1%E6%81%AF%E8%AE%BA)
    picasso250
        5
    picasso250  
       2015-08-12 15:42:50 +08:00
    是A(n)的一个字串

    是A(n)的一个子串

    ??
    aheadlead
        6
    aheadlead  
       2015-08-12 15:55:23 +08:00
    这个类似的思路我问过我们老师… 老师让我去看信息论……
    tabris17     7
    tabris17  
       2015-08-12 15:57:43 +08:00
    这不是扯淡么?

    PI只是个超越数,并不是合取数
    xenme
        8
    xenme  
       2015-08-12 15:58:33 +08:00
    既然pi是无限不循环,觉得任何一个序列都有肯呢个是pi的子串。
    只要记录该子串的位置和长度就可以了。

    但是,找到这个子串需要用时多久(压缩)?算出pi的指定长度又要多久?(解压)
    其实就是无限大字典~
    tabris17
        9
    tabris17  
       2015-08-12 16:01:17 +08:00   3
    http://www.guokr.com/article/439682/

    “π,圆周长与其直径之比,这是开始。后面一直有,无穷无尽。永不重复。就是说在这串数字中,包含每种可能的组合。你的生日,储物柜密码,你的社保号码,都在其中某处。如果把这些数字转换为字母,就能得到所有的单词,无数种组合。你婴儿时发出的第一个音节,你心上人的名字,你一辈子从始至终的故事,我们做过或说过的每件事,宇宙中所有无限的可能,都在这个简单的圆中。用这些信息做什么,它有什么用,取决于你们。”

    很多观众看到这一段之后十分感动,还有人感慨:为什么我们的数学老师没有这么教我们呢?

    之所以我们的老师不讲,是因为这段话在数学上是不对的。

    无理

    宅总的前两句话正确地描述了π的一个属性:无穷无尽且永不重复换句话说,π是个“无限不循环小数”,也就是“无理数”。

    但是,一个无理数并不一定能包含“每种可能的数字组合”。

    举个简单的反例:0.909009000900009000009……

    (除非特别声明,所有数字都是10进制的,下同。)

    这个数的特点是,两个“9”之间的距离会越来越长,每次多一个0,直到无限。它是无穷无尽的,也是不循环的,因此是无理的;但别说“每种可能的数字组合”了,它连0到9这十个数字都凑不齐呢!

    合取

    包含所有数字组合的数,叫做“合取数”。无理数并不都是合取数。

    一个典型的合取数是这样的:0.10200300040000500000600……000110000000000012000……

    在越来越长的0串中间,夹杂着从1开始的所有自然数,直到无限。既然包含了所有自然数,当然也就包含了所有的数字组合。

    正规

    但是写这么多0,多费纸费电啊。如果把这些零去掉呢?

    得到的数就是这样:0.123456789101112131415……

    这个数不但是合取的,还是“正规”的从0到9的每一个数字,出现的频率都趋向于一样的值。

    随机

    如果我们再进一步,连生成规律都不要了,而是用某种真随机生成器(比如哥本哈根解释下的量子随机性)造出一个每位都随机的数,那么它当然就是“随机”的了不光每一个数字的长期频率趋于一致,任何位置出现的概率也都一样。

    那pi是什么?

    非常遗憾的是,目前为止我们只证明了pi是个无理数。pi是合取(包含所有可能)的吗?是正规(所有数字出现频率趋于一致)的吗?是随机(每一位上的数字都随机)的吗?

    答案是:全都不知道。

    我们很容易构造出一个合取数或者正规数,甚至能证明“几乎所有”实数都是合取而且正规的,但是随便拿一个具体的数字,要想判断它是否合取、是否正规,却极其困难。我们甚至都不知道pi里面是不是有无限个数字2。至于随机?别跟我提什么随机。

    合取数和正规数有另一个有趣的性质:和进制有关。有个常数叫斯通汉姆数(Stoneham number),在二进制、四进制、八进制……下已经证明全都是正规的了,可是在六进制下却能证明它不是正规的。如果一个数在任何进制下都正规,可以称之为“绝对正规”。不幸的是,pi在任何进制下都没能证明正规离得最近的是2,有论文证明,假如某个猜想是对的,那么pi就是二进制正规;但那个猜想本身也只是“很可能正确”,还没有得到严格证明。

    当然,我们都已经计算出pi的几百亿位了,可以看看它们的分布来猜规律;也可以通过一些其他数学方法拐弯抹角地试图推断。从已知事实来看,pi和正规性吻合得非常之好,换做任何别的人文、社科、自然科学,都可以当做定论来用了,因此几乎所有人都“觉得”它该是正规的。可惜,这是数学,数学是靠证明说话的,只要拿不出证明,数学家就不能安心睡好觉。

    为什么要在乎这些细节呢?

    这篇文章不是为了批评《疑犯追踪》这部剧,事实上看到这一幕的时候我还非常高兴:影视剧里到处都是坏掉的理化生,而坏掉的人文社科干脆就是某些作品的主干但现在终于出现了(哪怕是坏掉的)数学了!数学至少有了存在感!

    但是这文章又必须要写,因为编剧在写这个段子的时候违反了基本的数学精神。其一,数学靠证明说话,哪怕pi距离“包含所有可能序列”离得再近,哪怕每一个人试过的每一个数字序列都能在它里面找到,在得到证明之前你也不能这么说;其二,数学是一个严密的逻辑体系,就算pi真的包含了所有可能性,你也不能说“因为它是无理数所以它是合取数”,这个推论本身的逻辑是错的。哪怕结果蒙对了,也不能为此放过错误的过程,否则整个数学体系就无法存在。

    目前看来,pi“应该”是正规和合取的。如果让我打赌,我当然押“包含所有序列”一边;如果我在现实生活中用到了pi,我也会把它当做合取数和正规数那样用。甚至可以说,我“相信”pi是正规的:如果有人告诉我它不正规,我第一反应肯定是不接受;如果计算发现pi从第一万亿位开始变成了9090090009……,我没准都会开始怀疑宇宙的真实性但是,只要没有出现证明,我就不能言之凿凿对你说:“pi里面包含了所有可能的数字组合”,更不能用似是而非的推论来支持这个说法。经验、审美甚至信仰,在数学里,都敌不过薄薄的一纸证明。

    其实死理性派也有情怀,只不过往往用在了奇怪的地方。(编辑:球藻怪)
    c742435
        10
    c742435  
    OP
       2015-08-12 16:16:13 +08:00
    @tabris17 问题里有任何提到PI的部分吗?
    c742435
        11
    c742435  
    OP
       2015-08-12 16:26:45 +08:00
    @ryd994 注意我说的“平均” 这个字。
    如果一个n位的串b在字典中的起始位置超过 2^n,意味着其索引长度将大于原始值长度,这样压缩就是没有意义的。


    针对于任何字典集合,反复多次压缩之后肯定会有一些值因为上述原因而没有意义。
    stupidcat
        span class="no">12
    stupidcat  
       2015-08-12 16:50:30 +08:00   1
    @skydiver
    @c742435
    不知道题意是不是下面这个

    是否可以证明:
    无论怎样优化A(n),都有:对于所有长度为n的二进制串b,p(b)的平均值大于n
    Xs0ul
        13
    Xs0ul  
       2015-08-12 17:11:07 +08:00
    对给定的n,一共有2^n种字符串需要编码,在假设这些字符串等概率出现的情况下,哈夫曼编码可以得出等长编码是最优的,也就是照原样不压缩(或者互相对应,但是这对降低长度没有帮助)。
    lz说的p(b),最后都会对应成一种编码,也就不可能达到压缩的要求,只能和原来一致。

    所以追求平均意义下的无损压缩是不可能的。可行的比如:1、根据字符串出现概率不同,用更优的编码压缩;2、有损压缩。

    更高层次的解释,还是看信息论比较好。
    liboyue
        14
    liboyue  
       2015-08-12 17:14:43 +08:00 via Android
    @Xs0ul 楼主大概是希望你把这个编码构造出来:)

    如果是“所有序列”,那确实没法压缩
    stupidcat
        15
    stupidcat  
       2015-08-12 17:21:43 +08:00
    假设存在这样一些最优的A(n):对于它们的前2^n位,从这些位中的每一位开始,包括该位自身,往后数n位,都是一个不同的二进制串b
    比如:
    A(2) 00110
    A(3) 0001011100

    p(b)的平均值 = ((1+2+...+2^n) / 2) / n > n
    Xs0ul
        16
    Xs0ul  
       2015-08-12 17:48:54 +08:00
    @liboyue 嗯,我要表达的是,假设这样的序列存在,那么它就会对应一种编码,然而不可能有这么好的编码。
    具体举例来说,比如给定n=3,那么一共有8种序列需要编码,这个数字序列再好,这8个的位置也只能是0~7(1~8),仍然需要3位来表示。之所以全都需要3位,而不把000简写为0,是为了避免歧义,否则没法知道010是01 0还是0 10。当然又要缩短,又要避免歧义的方法也有,比如哈夫曼编码,代价是也会出现一些比3位更长的编码,在平均的意义下会比3位更长。
    ho121
        17
    ho121  
       2015-08-12 18:36:40 +08:00 via Android
    不一定就是压缩
    3.14159265358.....
    比如我要压缩8,嗯,结果是11,还比以前多一位
    c742435
        18
    c742435  
    OP
       2015-08-12 20:42:29 +08:00
    @Xs0ul
    @stupidcat

    @Xs0ul 说的很清楚,我明白啦!所以那个用pi压缩任意文件的问题,与pi是否具有某种特性毫无关系,而是根本起不到压缩效果。
    RqPS6rhmP3Nyn3Tm
        19
    RqPS6rhmP3Nyn3Tm  
       2015-08-12 23:00:58 +08:00 via iPad
    在数学上,目前只能证明 Pi 是无理数,虽然长得和正轨的合取数几乎一模一样……
    msg7086
        20
    msg7086  
       2015-08-13 06:01:01 +08:00
    其实是可行的。只不过没有必要去用pi,而是可以去构造更有用的字典文件。
    预定义字典本身属于信息,所以理论上可以减少字典以外部分的存储空间。
    你为了压缩一个1KB的文件,得生成至少数TB的pi文件,得不偿失。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3094 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 12:35 PVG 20:35 LAX 05:35 JFK 08:35
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86