软件工程

本类阅读TOP10

·PHP4 + MYSQL + APACHE 在 WIN 系统下的安装、配置
·Linux 入门常用命令(1)
·Linux 入门常用命令(2)
·使用 DCPROMO/FORCEREMOVAL 命令强制将 Active Directory 域控制器降级
·DirectShow学习(八): CBaseRender类及相应Pin类的源代码分析
·基于ICE方式SIP信令穿透Symmetric NAT技术研究
·Windows 2003网络负载均衡的实现
·一网打尽Win十四种系统故障解决方法
·数百种 Windows 软件的免费替代品列表
·收藏---行百里半九十

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
聪明的以色列人(下):LZ78 和 LZW

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

LZ78 的算法描述:

for (;;)
{
    current_match = 1;
    current_length = 0;
    memset(test_string, '\0', MAX_STRING);
    for (;;)
    {
        test_string[current_length ++] = getc(input);
        new_match = find_match(test_string);
        if (new_match) == -1)
            break;
        current_match = new_match;
    }
    output_code(current_match);
    output_char(test_string[current_letgth - 1];
    add_string_to_dictionary(test_string);
}

LZ78 示例:

输入正文: "DAD DADA DADDY DADO..."
输出短语      输出字符      编码后的串
 0              'D'         "D"
 0              'A'         "A"
 1              ' '         "D"
 1              'A'         "DA"
 4              ' '         "DA "
 4              'D'         "DAD"
 1              'Y'         "DY"
 0              ' '         " "
 6              'O'         "DADO"

此时字典的情况:

0          ""
1          "D"
2          "A"
3          "D "
4          "DA"
5          "DA "
6          "DAD"
7          "DY"
8          " "
9          "DADO"

 




相关文章

相关软件