作者LPH66 (-858993460)
看板Prob_Solve
标题Re: [问题] 一个数字用两个字表示的方法
时间Sat Jan 22 20:42:45 2011
※ 引述《mabus (CodeINCEPTION)》之铭言:
: 有不用这种用数学进制转换的方式吗?
: 原本有想过一些方法,
: 把数字丢到矩阵里,想说接下能用什麽方法简化(应该也可以说是压缩吧?),
: 可是学艺不精,暂时还联想不到...。
这个想法发展下去就是现在的有损图片压缩
最常见的 jpeg 就是以这种想法下去转换
它用的转换法是离散余弦转换 (是三角函数那个余弦没错 XD)
在转换後每一组大约会有一半左右的转换系数是 0 或接近 0 的数
所以舍去一些小数後(这是图片细节损失的主要来源)
再配合一些编码压缩就能达到五到十倍的压缩率
当然你如果要完全还原 这种转换就对你比较没什麽帮助了
: 还有用代换的方式,例如12345....,换成12=a,34=b...这一类的方法,
: 可是代换一层之後就不能再继续了,会无法还原...。
: 还有用加减乘除,例如123,分解成100+20+3,或是200-86,还其他的,
: 可是我还是找不出关系。
: 或是配合以上未完成的方法,搭配现实环境常态常数做组合,
: 例如年月日之类的,可是想到一半就想不下去了...。
: 若是限定5位数到6位数,浓缩成2位数,这有可能吗?
其实这些想法都是一些压缩转换法的想法来源
现在的资料压缩法不出两种
用各种方法找出相同的子字串来做取代
或是以编码方式代换各个符号 让高频率的字使用短编码
但为了能让前一种压缩法能找到尽量多的相同子字串
或让後一种压缩法能找到较高频率的符号缩短编码
也有许多转换是类似这种计算把隐藏的子字串或特性显示出来
例如最常见的一种是若资料数值有缓慢变化的特性
那做一次"後减前"这种转换後 许多的差值就会是很小的数
这样只要第一个数字有适当存好的话
後面都可以用很少的资料量来表示 (不论用哪一种压缩法)
: 本身不是学电脑工程的,所以对这方面知识很有限,
: 在解决这个问题的过程里,我看到一个叫做熵的概念,
: 好像是资料混乱的程度的指标。
: 也就是说,若是限定数字的范围缩小,混乱的程度可以降低吧?
: 如此可能性能提升吧?
编码理论的熵(entropy)又是另外一回事了...
: 以上想法,若是有问题,就请各位大大当笑话看吧...。
: 还是请各位大大指点一下,该怎麽想比较好。
: 先谢谢各位的答覆了!
你是想要让一个数字以简短的方法表示後能转换回来
除非你的数字有些特性 (例如只会出现某个型式的数字等等)
不然你必须要让范围内的所有数字都要能表示
那用一些简单的组合计算就能知道你的表示法最多可以表现多少种组合
进一步知道你需要多少个字才能表示了
例如一个很简单的想法 若一个字能取大小写字母+数字一共62种
那麽两个字就能表示 62^2 = 3844 种 三个字就能表示 62^3 = 238328 种 等等
反过来想 如果像你上面想要的 六位数数字要用两个字表示
也就是一百万种组合要用两个字表示 那一个字就要有一千种组合
我想世界上除了中文字之外大概找不到你想要的组合了 XD
也因此才会有许多看起来像是单纯的进位转换的方法
因为这是最简单能让数字和编码一一对应的方式
我在前面推文提到的 base64 就是使用这个方法
它的一个字可以取字母大小写加数字加两个符号一共 64 种
这样的四个字可以有 64^4 = (2^6)^4 = 2^24 = (2^8)^3 = 256^3 种组合
↑
(这是为什麽要取 64 的原因)
正好可以拿来表示 3 byte 的任意资料
话说回来 刚刚也提到过 如果你的数字有些不会出现的话
那善用它的特性可以进一步"压缩"你的资料表示
例如如果某个六位数是表示一天中的某个时间
那麽与其使用六位数的表示法
转换成一天中的第几秒一共只有 86400 种组合
单以十进位数字来看就少了一位了 再加上上面提到的表示法就能大幅减少"位数"
你可以往这个方向去思考哪个方法最适合你的需求
--
这种东西再深入一点就是编码理论的领域了...
这门学问可是值得资工系开一门课来教的东西 XD
不只资料压缩会用到 网路、通讯方面的应用也是以它基础
(讲夸张一点 摩斯电码就是一个很古早(?)的通讯编码 XD)
--
◢ ˊ_▂▃▄▂_ˋ. ◣ ▅▅ ▅▅ ι●╮ █
▄▄▄▄▄
▍
./◤_▂▃▄▂_◥ \'▊ HARUHI █████ <■┘ ▄▄▄▄▄▄▄
▎
⊿ ◤◤◥█◥◥█Δ ISM By-gamejye ¢|\ ▌▌▌▌▌▄▌▌
▏
ζ(▏●‵◥′●▊)Ψ ▏ █
⊿Δ ▄▄▄ ▄▄▄▄
█/|▊ 〃 、 〃▋ |\ ▎ ハルヒ主义 █
▄▄▄█▄▄
◥◥|◣ ‵′ ◢/'◢◢
S.O.S 世界を大いに盛り上げるための凉宫ハルヒの団
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.28.92
※ 编辑: LPH66 来自: 140.112.28.92 (01/23 00:27)
1F:→ awashharp:(原来有人提到压缩了)(羞) 01/26 01:31