第一次作业
1.1 我们要压缩什么。
答:我们要压缩占用比例过大,影响操作的事物。
1.2 为什么要进行压缩。
答:举个例子吧,一个箱子如果装石块,只能装五斤。但是装沙子,就可以装8斤。如果装整块石头,就是10斤了。大大提高了资源利用率。
1.6 数据压缩是如何分类的
答: 数据压缩分类方法繁多,尚未统一。我理解的有两种。一种是可逆压缩与不可逆压缩。另一种是有损压缩和无损压缩
1.4.1
原文件为PNG(11kb)和JPEG(800kb)格式的图片,压缩过后大小并没有变化。原文件为EXE(888kb)和(5.6MB)格式的文件,压缩过后为(397kb)和(4.7MB).ps:在文件夹内压缩和直接压缩无影响。原文件为TXT(50KB)和(110kb)压缩过后均为(23kb).
由以上两点可以得出。1.压缩文件有些压缩了占用内存并不会变小。2.越大的文件压缩的效率越低。3.一样的文件复制过后再压缩并不会使压缩过后的文件占用内存变大。
1.4.2
冗余度,通俗的讲就是数据的重复度。
因为删除所有不会影响理解的文字,所以我们能就冗余度做出定量论述。
page 30
3. a)H=4*(1/4)*log24=2 bits
b)H=1/2*log22+1/4*log24+2*(1/8)*log28=7/4 bits
c)H=-0.505*log20.505+1/4*log24+1/8*log28-0.12*log20.12
≈0.5+0.5+3/8+0.12(2-log23)
≈1.475+0.12*0.4=1.523 bits
5. a)S总=84, SA=21,ST=23,SG=16,SC=24
H=-21/84*log2(21/84)-23/84*log2(23/84)-16/84*log2(16/84)-24/84*log2(24/84)
≈0.5+0.8+0.5+0.6=2.4 bits
b) 无,只会一阶熵
7. a) 代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int a;
char Word;
int i=0,j=0;
for(j;j<=99;j++)
{
for(i;i<=3;i++)
{
a=rand()%25;
Word='a'+a;
printf("%c",Word);
}
printf("\t");
i=0;
}
return 0;
}
结果如下:
字母组成完全杂乱无章。