贪心算法基础-2

本文继续介绍重要的贪心算法,比如哈夫曼编码、最小生成树等算法。

最优前缀码及哈夫曼编码

二元前缀码

二元前缀码:用0-1字符串作为代码表示字符,要求任何字符的代码都不能作为其它字符代码的前缀。

非前缀码的例子

a: 001, b: 00, c: 010, d: 01

解码的歧义,例如字符串0100001

  • 解码1:01,00,001     \implies d,b,a

  • 解码2:010,00,01     \implies c,b,d

阅读更多

贪心算法基础

本文开始记录贪心算法的学习。

贪心算法的例子——活动选择问题

输入:S={1,2,...,n}S=\{1,2,...,n\}nn项活动的集合,sis_ifif_i分别为活动ii的开始和结束时间。

活动iijj相容     sifj\iff s_i \ge f_jsjfis_j \ge f_i

求:最大的两两相容的活动集AA

阅读更多