浏览 10044 次
锁定老帖子 主题:重温一下 毕业后写的第一个算法 LZW
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-02-15
最后修改:2011-02-15
第一次实现的时候是用C# 和js用于数据压缩 ,当时刚毕业,是根据伪码写的,当时挺痛苦的,后来想想还是挺有意思的:) #encoding = utf-8 import string def lzw_compress(s="ababcbababaaaaaaa"): """ 进行lzw 压缩 """ dic = {} for i in string.ascii_letters: dic[i]=i result = '' key = s[0] #进行向后编码的起始值 dic_index = 129 for i in range(1,len(s)): v = s[i] key += v if dic.has_key(key): continue else: print key, dic[key] = unichr(dic_index) dic_index+=1 result += dic.get(key[0:-1]) #print key[0:-1],result.encode("utf-8") key = v return result r = lzw_compress() print "result is:" ,r.encode("utf-8") ab ba abc cb bab baba aa aaa aaaa result is: ab*c* *a** 感兴趣的同学,可以写个解压的算法,有点像破译密码,挺有意思的。注意基于编码表 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-02-20
最后修改:2011-02-20
lz 算法家族的核心概念就是字典表和窗口概念,要感谢Abraham Lempel and Jacob Ziv 两位数学家的贡献。
|
|
返回顶楼 | |
发表时间:2011-02-21
有意思,学习...Mark
|
|
返回顶楼 | |
发表时间:2011-02-22
有时间去看看,mark
|
|
返回顶楼 | |
发表时间:2011-02-26
当年我的毕业论文就是写的LZW ~:)
|
|
返回顶楼 | |