摘要: 哈夫曼编码(Huffman Coding)是一种可变长的前缀码,可以有效地压缩数据:通常可以节省20%~90%的空间。哈夫曼设计了一个贪心算法来构造最优前缀码,被称为哈夫曼编码。 前缀码,没有任何码字是其他码字的前缀。 思路 首先,获取字符与频率的关系。 其次,构建哈夫曼树。 最后,根据0=转向左孩 阅读全文
posted @ 2022-03-31 19:50 vicky2021 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 问题 活动选择问题是一个调度竞争共享资源的多个活动的问题。 设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源(如,演讲会场),而在同一时间内只有一个活动能使用这一资源。活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合。 每个活动i都有一个要求使用该资源的开始时间s 阅读全文
posted @ 2022-03-27 18:00 vicky2021 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 贪心算法总是作出在当前看来最好的选择 —— 也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。贪心算法得到的最终结果也可能是整体最优的,例如,单源最短路经问题(Dijskstra算法),最小生成树问题等。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生 阅读全文
posted @ 2022-03-26 19:51 vicky2021 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 问题 最优二叉搜索树(Optimal Binary Search Tree,Optimal BST)问题,形式化定义:给定一个n个不同关键字的已排序的序列K=<k1, k2, ..., kn>(k1<k2<...<kn),用这些关键字构造一棵二叉搜索树 —— 对每个关键字ki,都有一个概率pi表示其 阅读全文
posted @ 2022-03-26 17:43 vicky2021 阅读(1968) 评论(0) 推荐(0) 编辑
摘要: 二叉搜索树(Binary Search Tree,BST),又称为二叉搜索树,二叉排序树,是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 基本方法有: 查找: 阅读全文
posted @ 2022-03-26 15:49 vicky2021 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 问题 最长公共子序列问题(longest-common-subsequnence problem, LCS),给定两个序列X=<x1, x2, ..., xm>, Y=<y1, y2, ..., yn>,求X和Y长度最长的公共子序列。 例如,<B, C, B, A>就是X=<A, B, C, B, 阅读全文
posted @ 2022-03-25 22:06 vicky2021 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 问题 矩阵链乘法问题(matrix-chain multiplication problem)可描述如下:给定n个矩阵的链<A1, A2, ..., An>,矩阵Ai的规模为pi-1×pi (1<=i<=n),求完全括号化方案,使得计算乘积 A1A2...An所需标量乘法次数最少 —— 完全括号化( 阅读全文
posted @ 2022-03-24 19:36 vicky2021 阅读(608) 评论(0) 推荐(0) 编辑
摘要: 问题 Serling公司购买长钢条,将其切割为短钢条出售。切割工序本身没有成本支出。公司管理层希望知道最佳的切割方案。假定我们知道Serling公司出售一段长为i英寸的钢条的价格为pi(i=1,2,…,单位为美元)。钢条的长度均为整英寸。图15-1给出了一个价格表的样例。 钢条切割问题是这样的:给定 阅读全文
posted @ 2022-03-23 20:59 vicky2021 阅读(704) 评论(2) 推荐(0) 编辑
摘要: 队列,是只能通过访问它的一端来实现数据存储和检索的一种线性数据结构。对于队列的修改要按照先进先出的原则进行,因此,队列又被称为先进先出(FIFO)的线性表。 链队,队列的链式存储。 基本方法有: 初始化:创建一个空的队列。 判断队列是否为空:如果队列为空,则返回”真“,否则返回”假“。 入队:将元素 阅读全文
posted @ 2022-03-21 21:49 vicky2021 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 队列,是只能通过访问它的一端来实现数据存储和检索的一种线性数据结构。对于队列的修改要按照先进先出的原则进行,因此,队列又被称为先进先出(FIFO)的线性表。 顺序队,队列的顺序结构。 基本方法有: 初始化:创建一个空的队列。 判断队列是否为空:如果队列为空,则返回”真“,否则返回”假“。 入队:将元 阅读全文
posted @ 2022-03-21 21:47 vicky2021 阅读(79) 评论(0) 推荐(0) 编辑